diff --git a/.mcp.json b/.mcp.json index f8fb207..76938c4 100644 --- a/.mcp.json +++ b/.mcp.json @@ -4,7 +4,7 @@ "type": "stdio", "command": "node", "args": [ - "dist/index.js" + "/Users/jonathanborduas/code/codex-mcp-server/dist/index.js" ], "env": {} } diff --git a/src/server.ts b/src/server.ts index 4c9a69e..8151369 100644 --- a/src/server.ts +++ b/src/server.ts @@ -52,10 +52,12 @@ export class CodexMcpServer { // Create progress sender that uses MCP notifications const createProgressContext = (): ToolHandlerContext => { let progressCount = 0; + let done = false; return { progressToken, + done: () => { done = true; }, sendProgress: async (message: string, progress?: number, total?: number) => { - if (!progressToken) return; + if (!progressToken || done) return; progressCount++; try { @@ -83,7 +85,9 @@ export class CodexMcpServer { const handler = toolHandlers[name]; const context = createProgressContext(); - return await handler.execute(args, context); + const result = await handler.execute(args, context); + context.done?.(); + return result; } catch (error) { return { content: [ diff --git a/src/types.ts b/src/types.ts index 8a39924..6c139aa 100644 --- a/src/types.ts +++ b/src/types.ts @@ -144,4 +144,5 @@ export type ProgressToken = string | number; export interface ToolHandlerContext { progressToken?: ProgressToken; sendProgress: (message: string, progress?: number, total?: number) => Promise; + done?: () => void; }