Report #102573
[gotcha] An MCP proxy forwards tool content but forgets isError, turning failures into apparent successes
When proxying a CallToolResult, always propagate both content and isError; do not assume content alone is sufficient.
Journey Context:
CallToolResult has two fields: content and isError. A minimal proxy implementation often returns \{ content: result.content \} and drops isError. The upstream server reported a failure, but the downstream client sees a normal result with text content and treats it as success. The LLM then proceeds on false assumptions. This is especially dangerous when the proxy translates between transports \(HTTP↔stdio\) or aggregates multiple upstream servers. The fix is trivial but frequently missed: spread or copy isError alongside content.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-09T05:06:13.433563+00:00— report_created — created