Summary
When enable_output_schema: true is set in the Apollo MCP Server configuration, Claude Desktop (and Claude.ai web) report “Error occurred during tool execution” for every tool call, even though the server returns valid, successful responses. Disabling enable_output_schema immediately resolves the issue.
Environment
| Component | Version / Details |
|---|---|
| Apollo MCP Server | ghcr.io/apollographql/apollo-mcp-server:canary-20260213T211530Z-a65567d (v1.7.0) |
| Claude Desktop | v1.1.3541 (macOS, darwin arm64) |
| MCP Protocol (client requested) | 2025-11-25 |
| MCP Protocol (server negotiated) | 2025-03-26 |
| `mcp-remote` proxy | v0.1.37 (used for local debugging) |
| Transport | streamable_http |
Reproduction Steps
- Configure Apollo MCP Server with
enable_output_schema: true:overrides: mutation_mode: explicit enable_output_schema: true - Connect Claude Desktop to the MCP server (tested both directly via production ALB and locally via `mcp-remote`).
- Specific tools consistently failed GraphQL-backed operation (e.g.,
FindPersonByEmailOrLinkedIn) while others don’t (e.g.GetAuthenticatedUser,SearchPeopleByNameOrLinkedinInOrEmail). - **Result:** Claude Desktop shows “Error occurred during tool execution” to the user.
- Set
enable_output_schema: false, restart the server, reconnect. - Call the same tools.
- **Result:** All tools succeed and return data correctly.
Root Cause Analysis
When enable_output_schema: true is set, the Apollo MCP Server:
1. Adds outputSchema to tool definitions in tools/list
Each tool definition includes an `outputSchema` field alongside `inputSchema`:
{
"name": "FindPersonByEmailOrLinkedIn",
"description": "Searches for a specific person...",
"inputSchema": { ... },
"outputSchema": {
"type": "object",
"properties": {
"data": { ... },
"errors": { ... },
"extensions": { ... }
}
}
}
2. Adds structuredContent to tool call responses
The tools/call response includes both content (standard) and structuredContent (extended):
{
"jsonrpc": "2.0",
"id": 2,
"result": {
"content": [
{
"type": "text",
"text": "{\"data\":{\"personByEmailOrSlug\":{\"id\":\"...\",\"fullName\":\"David Chang\", ...}}}"
}
],
"structuredContent": {
"data": {
"personByEmailOrSlug": {
"id": "...",
"fullName": "David Chang",
...
}
}
},
"isError": false
}
}
3. Protocol version mismatch
The server negotiates MCP protocol version 2025-03-26, but outputSchema and structuredContent are features from a newer MCP specification. Claude Desktop (requesting protocol 2025-11-25) does not properly handle these fields in the context of the negotiated 2025-03-26 protocol, causing it to reject the tool result.
Evidence
Server-side: All calls succeed
Apollo MCP Server debug logs show every tool call completing successfully:
DEBUG serve_inner: received request id=2 request=CallToolRequest(... name: "FindPersonByEmailOrLinkedIn" ...)
DEBUG call_tool: HTTP request POST https://api.connectvia.ai ... status_code=200 OK
DEBUG serve_inner: response message id=2 result=CallToolResult(... is_error: Some(false) ...)
Client-side: mcp-remote receives valid response
The mcp-remote proxy log confirms the full successful response is forwarded to Claude Desktop:
[43896] [Remote→Local] 2
Message from server: {"jsonrpc":"2.0","id":2,"result":{"content":[...],"structuredContent":{...},"isError":false}}
Claude Desktop: Shows error to user
Despite receiving a valid response with isError: false, Claude Desktop presents “Error occurred during tool execution” to the user.
Fix confirmed
Setting enable_output_schema: false removes outputSchema from tool definitions and structuredContent from responses. With this change, the exact same tool calls succeed immediately.
Workaround
Set enable_output_schema: false in the Apollo MCP Server configuration:
overrides:
mutation_mode: explicit
enable_output_schema: false
This disables outputSchema on tool definitions and structuredContent on tool responses. Tools continue to work correctly — the response data is still available in the standard content[0].text field as a JSON string.
Impact
- **All** GraphQL-backed tools are affected when
enable_output_schema: true - Affects Claude Desktop (v1.1.3541) and Claude.ai web
- Claude Code is also affected (tested via
mcp-remoteproxy) - The workaround (
enable_output_schema: false) resolves the issue but loses the structured output capability
Suggested Fix
The Apollo MCP Server should either:
- **Respect the negotiated protocol version** — only include
outputSchema/structuredContentwhen the client and server agree on a protocol version that supports these features. - **Gate structured output behind client capability negotiation** — check if the client advertises support for structured content before including it in responses.
- **Make
structuredContentadditive, not breaking** — ensure the response is valid even if the client ignoresstructuredContent, i.e., the issue may be in howstructuredContentinteracts with the response envelope rather than its mere presence.