diff --git a/src/mcp/mcp-server-apps.test.ts b/src/mcp/mcp-server-apps.test.ts index 0b1d042d..7c255418 100644 --- a/src/mcp/mcp-server-apps.test.ts +++ b/src/mcp/mcp-server-apps.test.ts @@ -277,11 +277,11 @@ describe('MCPServer apps resources', () => { expect(invalidReadResponse.error).toEqual({ code: -32602, - message: 'resources/read requires string parameter "uri"', + message: expect.stringMatching(/^Validation error: resources\/read requires string parameter "uri" \(correlation ID: [a-f0-9-]+\)$/), }); expect(invalidCompletionResponse.error).toEqual({ code: -32602, - message: 'completion/complete requires a resource ref', + message: expect.stringMatching(/^Validation error: completion\/complete requires a resource ref \(correlation ID: [a-f0-9-]+\)$/), }); }); diff --git a/src/mcp/mcp-server.ts b/src/mcp/mcp-server.ts index 9e35ac39..798c4642 100644 --- a/src/mcp/mcp-server.ts +++ b/src/mcp/mcp-server.ts @@ -1858,12 +1858,18 @@ export class MCPServer { code = -32601; } + const correlationId = generateCorrelationId(); + this.logger.error('prompts/get handler error', error instanceof Error ? error : new Error(String(error)), { + correlationId, + method: 'prompts/get', + }); + return { jsonrpc: '2.0', id: req.id, error: { code, - message: (error as Error).message, + message: this.formatErrorForClient(error, correlationId), }, }; } @@ -1901,12 +1907,18 @@ export class MCPServer { result: await this.readResource(params.uri, sessionId, profileId), }; } catch (error) { + const correlationId = generateCorrelationId(); + this.logger.error('resources/read handler error', error instanceof Error ? error : new Error(String(error)), { + correlationId, + method: 'resources/read', + }); + return { jsonrpc: '2.0', id: req.id, error: { code: error instanceof ValidationError ? -32602 : -32601, - message: (error as Error).message, + message: this.formatErrorForClient(error, correlationId), }, }; } @@ -1920,12 +1932,18 @@ export class MCPServer { result: await this.completeResourceArgument(req as CompleteRequest, sessionId, profileId), }; } catch (error) { + const correlationId = generateCorrelationId(); + this.logger.error('completion/complete handler error', error instanceof Error ? error : new Error(String(error)), { + correlationId, + method: 'completion/complete', + }); + return { jsonrpc: '2.0', id: req.id, error: { code: error instanceof ValidationError ? -32602 : -32601, - message: (error as Error).message, + message: this.formatErrorForClient(error, correlationId), }, }; }