feat: add data dir option
This commit is contained in:
@@ -11,3 +11,4 @@
|
|||||||
.yarn
|
.yarn
|
||||||
node_modules
|
node_modules
|
||||||
config.json
|
config.json
|
||||||
|
data/
|
||||||
+7
-3
@@ -3,13 +3,18 @@ import fs from "node:fs";
|
|||||||
import https from "node:https";
|
import https from "node:https";
|
||||||
import { createRequire } from "node:module";
|
import { createRequire } from "node:module";
|
||||||
import path from "node:path";
|
import path from "node:path";
|
||||||
import { fileURLToPath } from "node:url";
|
|
||||||
import { promisify } from "node:util";
|
import { promisify } from "node:util";
|
||||||
import type { Email } from "./types/email.ts";
|
import type { Email } from "./types/email.ts";
|
||||||
import type { Folder } from "./types/folder.ts";
|
import type { Folder } from "./types/folder.ts";
|
||||||
import type { LoginConfig } from "./types/login_config.ts";
|
import type { LoginConfig } from "./types/login_config.ts";
|
||||||
|
|
||||||
let inMemoryPassword: string | null = null;
|
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 {
|
export function setPassword(password: string): void {
|
||||||
inMemoryPassword = password;
|
inMemoryPassword = password;
|
||||||
@@ -74,8 +79,7 @@ ${body}
|
|||||||
}
|
}
|
||||||
|
|
||||||
function configFilePath(): string {
|
function configFilePath(): string {
|
||||||
const dir = path.dirname(fileURLToPath(import.meta.url));
|
return path.join(dataDir, "config.json");
|
||||||
return path.join(dir, "config.json");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
export function loadConfig(): LoginConfig {
|
export function loadConfig(): LoginConfig {
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"
|
|||||||
import { Command } from "commander";
|
import { Command } from "commander";
|
||||||
import crypto from "node:crypto";
|
import crypto from "node:crypto";
|
||||||
import http from "node:http";
|
import http from "node:http";
|
||||||
|
import { initDataDir } from "./ews_client.ts";
|
||||||
import { registerAuthTools } from "./tools/auth.ts";
|
import { registerAuthTools } from "./tools/auth.ts";
|
||||||
import { registerEmailTools } from "./tools/email.ts";
|
import { registerEmailTools } from "./tools/email.ts";
|
||||||
import { registerFolderTools } from "./tools/folders.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",
|
"SHA-256 hash of bearer token for HTTP transport auth",
|
||||||
)
|
)
|
||||||
.option("--host <host>", "HTTP host", "127.0.0.1")
|
.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);
|
program.parse(process.argv);
|
||||||
const options = program.opts();
|
const options = program.opts();
|
||||||
|
|
||||||
|
initDataDir(options.dataDir);
|
||||||
|
|
||||||
function buildServer(): McpServer {
|
function buildServer(): McpServer {
|
||||||
const server = new McpServer({
|
const server = new McpServer({
|
||||||
name: "exchange-mcp",
|
name: "exchange-mcp",
|
||||||
|
|||||||
Reference in New Issue
Block a user