8 Commits

Author SHA1 Message Date
albnnc a4741b6820 w 2026-07-11 11:52:15 +03:00
albnnc 07db914ca0 w 2026-07-10 20:17:43 +03:00
albnnc 2f0bfba1cf w 2026-07-10 17:15:11 +03:00
albnnc 8dcdab97ce w 2026-07-10 17:09:34 +03:00
albnnc afa2bf5126 w 2026-07-10 16:56:16 +03:00
albnnc 979e974521 w 2026-07-10 16:47:35 +03:00
albnnc 1599bf3981 w 2026-07-10 16:38:28 +03:00
albnnc 17a6f91b3f w 2026-07-10 16:36:22 +03:00
8 changed files with 14 additions and 22 deletions
+7 -9
View File
@@ -2,17 +2,17 @@ import { XMLParser } from "fast-xml-parser";
import https from "node:https";
import { createRequire } from "node:module";
import { promisify } from "node:util";
import { initDataDir } from "../utils/data.ts";
import { type Email, extractEmail } from "../utils/extract_email.ts";
import { extractEmail, type Email } from "../utils/extract_email.ts";
import { extractFolders, type Folder } from "../utils/extract_folder.ts";
import { initDataDir } from "../utils/data.ts";
import {
loadConfig,
saveConfig,
clearConfig,
setPassword,
getPassword,
hasPassword,
loadConfig,
type LoginConfig,
saveConfig,
setPassword,
} from "../utils/login.ts";
const ntlm: any = createRequire(import.meta.url)("httpntlm");
@@ -130,8 +130,7 @@ export class EwsClient {
async getFolderId(folderName: string): Promise<string> {
const lower = folderName.toLowerCase();
const distinguished =
(DISTINGUISHED_FOLDERS as Record<string, string>)[lower];
const distinguished = (DISTINGUISHED_FOLDERS as Record<string, string>)[lower];
if (distinguished) {
const soap = buildSoapEnvelope(`\
@@ -206,8 +205,7 @@ export class EwsClient {
} = options;
const isDistinguished =
(DISTINGUISHED_FOLDERS as Record<string, string>)[folderId.toLowerCase()]
!== undefined;
(DISTINGUISHED_FOLDERS as Record<string, string>)[folderId.toLowerCase()] !== undefined;
const folderIdXml = isDistinguished
? `<t:DistinguishedFolderId Id="${folderId}"/>`
+1 -1
View File
@@ -4,13 +4,13 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
import { Command } from "commander";
import crypto from "node:crypto";
import http from "node:http";
import { initDataDir } from "./utils/data.ts";
import { registerAuthTools } from "./tools/auth.ts";
import { registerAvailabilityTools } from "./tools/availability.ts";
import { registerCalendarTools } from "./tools/calendar.ts";
import { registerEmailTools } from "./tools/email.ts";
import { registerFolderTools } from "./tools/folders.ts";
import { registerPeopleTools } from "./tools/people.ts";
import { initDataDir } from "./utils/data.ts";
const program = new Command()
.name("exchange-mcp")
+1 -7
View File
@@ -1,13 +1,7 @@
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod/v4";
import { clearConfig, hasPassword, loadConfig, saveConfig, setPassword } from "../utils/login.ts";
import { EwsClient } from "../client/ews_client.ts";
import {
clearConfig,
hasPassword,
loadConfig,
saveConfig,
setPassword,
} from "../utils/login.ts";
import { type LoginConfig } from "../utils/login.ts";
export function registerAuthTools(server: McpServer): void {
+1 -1
View File
@@ -1,7 +1,7 @@
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod/v4";
import { EwsClient } from "../client/ews_client.ts";
import { loadConfig } from "../utils/login.ts";
import { EwsClient } from "../client/ews_client.ts";
export function registerAvailabilityTools(server: McpServer): void {
server.registerTool(
+1 -1
View File
@@ -2,8 +2,8 @@ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import fs from "node:fs";
import path from "node:path";
import { z } from "zod/v4";
import { EwsClient } from "../client/ews_client.ts";
import { loadConfig } from "../utils/login.ts";
import { EwsClient } from "../client/ews_client.ts";
export function registerCalendarTools(server: McpServer): void {
server.registerTool(
+1 -1
View File
@@ -2,8 +2,8 @@ import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import fs from "node:fs";
import path from "node:path";
import { z } from "zod/v4";
import { EwsClient } from "../client/ews_client.ts";
import { loadConfig } from "../utils/login.ts";
import { EwsClient } from "../client/ews_client.ts";
function getClient(): EwsClient {
return new EwsClient(loadConfig());
+1 -1
View File
@@ -1,7 +1,7 @@
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod/v4";
import { EwsClient } from "../client/ews_client.ts";
import { loadConfig } from "../utils/login.ts";
import { EwsClient } from "../client/ews_client.ts";
export function registerFolderTools(server: McpServer): void {
server.registerTool(
+1 -1
View File
@@ -1,7 +1,7 @@
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod/v4";
import { EwsClient } from "../client/ews_client.ts";
import { loadConfig } from "../utils/login.ts";
import { EwsClient } from "../client/ews_client.ts";
export function registerPeopleTools(server: McpServer): void {
server.registerTool(