Fix: Wrap tools/call responses in MCP-compliant content format

Per MCP spec (https://modelcontextprotocol.io/specification/2025-11-25/server/tools):
- Tool call responses MUST have a "content" array
- Each content item has "type" and "text" fields
- Response includes "isError" boolean

This was the root cause - Claude Code was waiting for the correct format.
pull/5310/head
Rene Cannao 4 months ago
parent 77099f7af2
commit 9b4aea047a

@ -307,11 +307,24 @@ class StdioMCPServer:
"id": req_id
}
result = response.get("result", {})
_log(f"tools/call: returning result: {json.dumps(result)[:500]}")
raw_result = response.get("result", {})
_log(f"tools/call: raw_result: {json.dumps(raw_result)[:500]}")
# Wrap result in MCP-compliant format with content array
# Per MCP spec: https://modelcontextprotocol.io/specification/2025-11-25/server/tools
formatted_result = {
"content": [
{
"type": "text",
"text": json.dumps(raw_result, indent=2)
}
],
"isError": False
}
_log(f"tools/call: returning formatted: {json.dumps(formatted_result)[:500]}")
return {
"jsonrpc": "2.0",
"result": result,
"result": formatted_result,
"id": req_id
}

Loading…
Cancel
Save