38 lines
1.2 KiB
TypeScript
38 lines
1.2 KiB
TypeScript
import { type McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
import { z } from "zod/v4";
|
|
import { EwsClient, loadConfig } from "../ews_client.ts";
|
|
|
|
export function registerFolderTools(server: McpServer): void {
|
|
server.registerTool(
|
|
"get_folders",
|
|
{
|
|
description: "List mail folders from the Exchange mailbox",
|
|
inputSchema: z.object({
|
|
parentFolderId: z.string().default("msgfolderroot").describe(
|
|
"Parent folder to list children of (default: msgfolderroot)",
|
|
),
|
|
recursive: z.boolean().default(false).describe(
|
|
"If True, traverse all subfolders recursively",
|
|
),
|
|
}),
|
|
},
|
|
async ({ parentFolderId, recursive }) => {
|
|
try {
|
|
const client = new EwsClient(loadConfig());
|
|
const folders = await client.findFolders(parentFolderId, recursive);
|
|
|
|
return {
|
|
content: [{ type: "text" as const, text: JSON.stringify(folders) }],
|
|
};
|
|
} catch (error: any) {
|
|
return {
|
|
content: [{
|
|
type: "text" as const,
|
|
text: JSON.stringify({ error: error.message ?? String(error) }),
|
|
}],
|
|
};
|
|
}
|
|
},
|
|
);
|
|
}
|