[BUG] Claude Desktop silently drops MCP stdio tool calls when argument payload exceeds ~1KB

Resolved 💬 6 comments Opened Mar 19, 2026 by JeenyJAI Closed Apr 18, 2026

Preflight Checklist

  • [x] I have searched existing issues and this hasn't been reported yet
  • [x] This is a single bug report (please file separate reports for different bugs)
  • [x] I am using the latest version of Claude Code

What's Wrong?

Claude Desktop fails to deliver MCP tools/call requests via stdio transport when the serialized JSON-RPC message exceeds approximately 800–1100 bytes. The request never reaches the MCP server's stdin — it is silently dropped on the client side, and after ~60 seconds Claude Desktop displays:

"No result received from client-side tool execution."

This is NOT a server-side timeout, processing issue, or maxBuffer overflow. The MCP server logs show no incoming request at all.

We conducted systematic testing within a single session using the same tool (litediff_preview), same server, progressively increasing the string argument size:

| Test | patch bytes | JSON-RPC total bytes | Lines | In mcp.log? | In server log? | Result |
|------|-----------|---------------------|-------|-------------|----------------|--------|
| 1 | 133 B | 277 B | 6 | ✅ id:7 | ✅ | Success |
| 2 | 592 B | 766 B | 26 | ✅ id:8 | ✅ | Success |
| 3 | 501 B | 668 B | 29 | ✅ id:10 | ✅ | Success |
| 4 | 919 B | 1,109 B | 52 | ❌ absent | ❌ absent | Silent failure |
| 5 | 1,664 B | 1,888 B | 86 | ❌ absent | ❌ absent | Silent failure |

Both mcp.log (Claude Desktop's own MCP transport log at %APPDATA%\Claude\logs\) and the server's log file show ZERO trace of the failed requests. The sequential JSON-RPC id simply never appears. This proves the message was never written to the child process's stdin pipe.

What Should Happen?

Claude Desktop should write the complete JSON-RPC message to the MCP server's stdin regardless of argument size, or return a clear error indicating the payload was rejected.

Error Messages/Logs

UI error message:
"No result received from client-side tool execution."

mcp.log evidence (successful calls end at id:10, failed calls have no trace):
2026-03-19T18:00:13.923Z [info] [litediff] Message from client: {"method":"tools/call","params":{"name":"litediff_preview","arguments":{"backupLimit":0,"patch":"--- test-large.txt\n+++ test-large.txt\n@@\n line 1: alpha\n-line 2: bravo\n..."}},"jsonrpc":"2.0","id":10}
2026-03-19T18:00:13.932Z [info] [litediff] Message from server: {"jsonrpc":"2.0","id":10,"result":{...}}

-- After id:10, no more entries in either log. The next tool calls (id:11, id:12 for larger payloads) never appear. --

Steps to Reproduce

  1. Configure a stdio MCP server in claude_desktop_config.json that accepts a string argument (e.g., a "patch" parameter)
  2. In a Claude Desktop conversation, trigger a tool call with a small string argument (~200 chars) → succeeds, appears in mcp.log
  3. Trigger the same tool with a medium string argument (~800 chars) → succeeds
  4. Trigger the same tool with a larger string argument (~1.2KB+) → fails silently
  5. Check %APPDATA%\Claude\logs\mcp.log — the failed request never appears
  6. Check the MCP server's own logs — no incoming request logged
  7. After ~60 seconds, Claude Desktop shows "No result received from client-side tool execution."

Claude Model

None

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

N/A — this bug is in Claude Desktop, not Claude Code CLI. Filed here as there is no public Claude Desktop issue tracker.

Platform

Anthropic API

Operating System

Windows

Terminal/Shell

Other

Additional Information

Environment:

  • Product: Claude Desktop (Windows 11)
  • MCP Transport: stdio (JSON-RPC 2.0)
  • MCP Server: custom Node.js server (litediff, Node v22.20.0)
  • Protocol version negotiated: 2024-11-05
  • Client info from logs: claude-ai v0.1.0

Key findings:

  • The MCP specification does not define argument size limits for tools/call
  • No ERR_CHILD_PROCESS_STDIO_MAXBUFFER errors observed — the message is never sent in the first place
  • The threshold appears to be on the serialized JSON-RPC message size (between 766 B and 1,109 B)
  • Smaller tool calls in the same session (workspace tree, file read, file info) all succeed, confirming the stdio pipe itself is healthy
  • The same payloads work correctly via HTTP/Streamable HTTP transport (e.g., from Cursor IDE to the same MCP server)
  • Impact: severely limits MCP tools accepting text content as arguments (code patches, documents, SQL queries, templates, configs). A modest 50-line code diff already crosses this threshold.

View original on GitHub ↗

This issue has 6 comments on GitHub. Read the full discussion on GitHub ↗