feat: add data dir option

This commit is contained in:
2026-07-09 09:57:21 +03:00
parent af3da35179
commit 92942a3bcd
3 changed files with 14 additions and 5 deletions
+2 -1
View File
@@ -10,4 +10,5 @@
.vscode
.yarn
node_modules
config.json
config.json
data/
+7 -3
View File
@@ -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 {
+5 -1
View File
@@ -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 <host>", "HTTP host", "127.0.0.1")
.option("--port <port>", "HTTP port", "8000");
.option("--port <port>", "HTTP port", "8000")
.option("--data-dir <path>", "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",