diff --git a/.gitignore b/.gitignore index d59519f..6cad36e 100644 --- a/.gitignore +++ b/.gitignore @@ -10,4 +10,5 @@ .vscode .yarn node_modules -config.json \ No newline at end of file +config.json +data/ \ No newline at end of file diff --git a/ews_client.ts b/ews_client.ts index 5440120..dca9434 100644 --- a/ews_client.ts +++ b/ews_client.ts @@ -3,13 +3,18 @@ import fs from "node:fs"; import https from "node:https"; import { createRequire } from "node:module"; import path from "node:path"; -import { fileURLToPath } from "node:url"; import { promisify } from "node:util"; import type { Email } from "./types/email.ts"; import type { Folder } from "./types/folder.ts"; import type { LoginConfig } from "./types/login_config.ts"; let inMemoryPassword: string | null = null; +let dataDir: string = "./data"; + +export function initDataDir(dir: string): void { + dataDir = path.resolve(dir); + fs.mkdirSync(dataDir, { recursive: true }); +} export function setPassword(password: string): void { inMemoryPassword = password; @@ -74,8 +79,7 @@ ${body} } function configFilePath(): string { - const dir = path.dirname(fileURLToPath(import.meta.url)); - return path.join(dir, "config.json"); + return path.join(dataDir, "config.json"); } export function loadConfig(): LoginConfig { diff --git a/main.ts b/main.ts index bf53607..de1f50d 100644 --- a/main.ts +++ b/main.ts @@ -4,6 +4,7 @@ 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 "./ews_client.ts"; import { registerAuthTools } from "./tools/auth.ts"; import { registerEmailTools } from "./tools/email.ts"; import { registerFolderTools } from "./tools/folders.ts"; @@ -17,11 +18,14 @@ const program = new Command() "SHA-256 hash of bearer token for HTTP transport auth", ) .option("--host ", "HTTP host", "127.0.0.1") - .option("--port ", "HTTP port", "8000"); + .option("--port ", "HTTP port", "8000") + .option("--data-dir ", "Data directory for config.json", "./data"); program.parse(process.argv); const options = program.opts(); +initDataDir(options.dataDir); + function buildServer(): McpServer { const server = new McpServer({ name: "exchange-mcp",