Invalid JSON-RPC message received: [ { "code": "invalid_union", "unionErrors": [ { "issues": [ { "code": "invalid_type", "expected": "object", "received": "string", "path": [ "params" ], "message": "Expected object, received string" } ], "name": "ZodError" }, { "issues": [ { "code": "invalid_type", "expected": "object", "received": "string", "path": [ "params" ], "message": "Expected object, received string" }, { "code": "unrecognized_keys", "keys": [ "id" ], "path": [], "message": "Unrecognized key(s) in object: 'id'" } ], "name": "ZodError" }, { "issues": [ { "code": "invalid_type", "expected": "object", "received": "undefined", "path": [ "result" ], "message": "Required" }, { "code": "unrecognized_keys", "keys": [ "method", "params" ], "path": [], "message": "Unrecognized key(s) in object: 'method', 'params'" } ], "name": "ZodError" }, { "issues": [ { "code": "invalid_type", "expected": "object", "received": "undefined", "path": [ "error" ], "message": "Required" }, { "code": "unrecognized_keys", "keys": [ "method", "params" ], "path": [], "message": "Unrecognized key(s) in object: 'method', 'params'" } ], "name": "ZodError" } ], "path": [], "message": "Invalid input" } ]
Additionally, the MCP server connection drops after the error ("Unable to reach [server-name]").
Describe the bug
When an MCP App UI calls
app.callServerTool()from the@modelcontextprotocol/ext-appsSDK (v1.0.1), Claude Desktop rejects the message with a Zod validation error. The MCP Apps specification explicitly supportstools/callfrom UIs during the Interactive Phase, but Claude Desktop's App Bridge does not accept the message format.To Reproduce
callServerTool()after connecting:Expected behavior
Per the MCP Apps specification (2026-01-26), UIs can send
tools/callrequests to the host during the Interactive Phase. The host should proxy these to the MCP server and return results to the UI.Logs
Additionally, the MCP server connection drops after the error ("Unable to reach [server-name]").
Additional context
@modelcontextprotocol/ext-apps@1.0.1The Zod errors suggest a mismatch between what the SDK sends via
postMessageand what Claude Desktop's App Bridge schema expects. This blocks UI-initiated tool calls, which are needed for use cases like polling for progress updates during long-running operations.