Where does the bug appear (feature/product)?
Cursor IDE
Describe the Bug
MCP server is explicitly skipping response validation when error response is returned (“isError”:true)
I tried to get raw MCP response and it’s correct but for some reason Curor is still trying to validate output
Steps to Reproduce
here is an example:
-------- Raw HTTP body --------
event: message
data: {"result":{"content":[{"type":"text","text":"{\"cause\":[\"ddd\"],\"message\":\"checking how errors are returned\"}"}],"structuredContent":{"cause":["ddd"],"message":"checking how errors are returned"},"isError":true},"jsonrpc":"2.0","id":2}
and here is log from Cursor:
2026-05-13 10:32:33.971 [error] Error calling tool 'demo': MCP error -32602: Structured content does not match the tool's output schema: data must have required property 'data', data must NOT have additional properties, data must NOT have additional properties MCP error -32602: Structured content does not match the tool's output schema: data must have required property 'data', data must NOT have additional properties, data must NOT have additional properties
here is an raw example from MCP server if I return “incorrect data” and isError is not set to false. You will see that validation is already done so Cursor should not do anything extra
event: message
data: {"result":{"content":[{"type":"text","text":"MCP error -32602: Output validation error: Invalid structured content for tool user_getMyDetails: [\n {\n \"expected\": \"object\",\n \"code\": \"invalid_type\",\n \"path\": [\n \"data\"\n ],\n \"message\": \"Invalid input: expected object, received undefined\"\n }\n]"}],"isError":true},"jsonrpc":"2.0","id":2}
Expected Behavior
as bare minimums Cursor should respect isError flag and skip validation
ideally I don’t expect cursor to do any output validation as it’s a built in feature of MCP server SDK - typescript-sdk/src/server at v1.29.0 · modelcontextprotocol/typescript-sdk · GitHub
Operating System
MacOS
Version Information
Version: 3.3.30
VSCode Version: 1.105.1
Commit: 3dc559280adc5f931ade8e25c7b85393842acf30
Date: 2026-05-09T18:28:42.332Z
Layout: editor
Build Type: Stable
Release Track: Default
Electron: 39.8.1
Chromium: 142.0.7444.265
Node.js: 22.22.1
V8: 14.2.231.22-electron.0
OS: Darwin arm64 25.4.0
Does this stop you from using Cursor
Yes - Cursor is unusable