[FEATURE] Make MCP Tool Execution Timeout Configurable in Claude Desktop
Preflight Checklist
- [x] I have searched existing requests and this feature hasn't been requested yet
- [x] This is a single feature request (not multiple features)
Problem Statement
<html>
<body>
<!--StartFragment--><h2 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold">Environment</h2>
<ul class="[li_&]:mb-0 [li_&]:mt-1 [li_&]:gap-1 [&:not(:last-child)_ul]:pb-1 [&:not(:last-child)_ol]:pb-1 list-disc flex flex-col gap-1 pl-8 mb-3">
<li class="whitespace-normal break-words pl-2"><strong>Product:</strong> Claude Desktop (Windows 11)</li>
<li class="whitespace-normal break-words pl-2"><strong>MCP Server:</strong> <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">@steipete/claude-code-mcp</code> v1.10.12 (stdio transport → WSL → Claude Code CLI)</li>
<li class="whitespace-normal break-words pl-2"><strong>MCP Transport:</strong> stdio</li>
</ul>
<h2 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold">Problem</h2>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Claude Desktop has a <strong>hardcoded, non-configurable client-side timeout</strong> for MCP tool execution. When an MCP tool call exceeds this threshold (~60 seconds based on the MCP TypeScript SDK default of <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">DEFAULT_REQUEST_TIMEOUT_MSEC = 60000</code>), Claude Desktop silently drops the result and displays:</p>
<blockquote class="ml-2 border-l-4 border-border-300/10 pl-4 text-text-300">
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">"No result received from client-side tool execution."</p>
</blockquote>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">The MCP server <strong>does</strong> return a valid response — Claude Desktop has simply stopped listening by that point. The server-side timeout (30 minutes in <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">claude-code-mcp</code>) is not the bottleneck.</p>
<h2 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold">Evidence</h2>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]">Real measurements from MCP server logs (<code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">mcp-server-claude-code.log</code>):</p>
<div class="overflow-x-auto w-full px-2 mb-6">
Prompt type | Duration | Result
-- | -- | --
Direct shell commands (echo, git log, cat) | 9–16s | ✅ Always succeeds
Pre-written Python script (sent as stdin) | 16–20s | ✅ Always succeeds
Prompt requiring Claude Code to "think" first | ~52s | ⚠️ Borderline
Multi-step prompt ("write and run a script that...") | ~81s | ❌ Frequently fails
</div>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"><strong>Official docs gap:</strong> Claude Code CLI <a class="underline underline underline-offset-2 decoration-1 decoration-current/40 hover:decoration-current focus:decoration-current" href="https://docs.anthropic.com/en/docs/claude-code/mcp">documents <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">MCP_TIMEOUT</code></a> explicitly. Claude Desktop documentation has <strong>zero mention</strong> of any timeout configuration for MCP tool execution. The <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">claude_desktop_config.json</code> schema only documents <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">command</code>, <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">args</code>, and <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">env</code> — no <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">timeout</code> field.</p>
<h2 class="text-text-100 mt-3 -mb-1 text-[1.125rem] font-bold">Prior issue closed without resolution</h2>
<p class="font-claude-response-body break-words whitespace-normal leading-[1.7]"><a class="underline underline underline-offset-2 decoration-1 decoration-current/40 hover:decoration-current focus:decoration-current" href="https://github.com/anthropics/claude-code/issues/5221">anthropics/claude-code#5221</a> requested this exact feature and was <strong>closed as "not planned"</strong> with the <code class="bg-text-200/5 border border-0.5 border-border-300 text-danger-000 whitespace-pre-wrap rounded-[0.4rem] px-1 py-px text-[0.9rem]">external</code> label — acknowledging this is a Claude Desktop issue, not a Claude Code issue. The underlying problem remains unresolved.</p><!--EndFragment-->
</body>
</html>Environment
Product: Claude Desktop (Windows 11)
MCP Server: @steipete/claude-code-mcp v1.10.12 (stdio transport → WSL → Claude Code CLI)
MCP Transport: stdio
Problem
Claude Desktop has a hardcoded, non-configurable client-side timeout for MCP tool execution. When an MCP tool call exceeds this threshold (~60 seconds based on the MCP TypeScript SDK default of DEFAULT_REQUEST_TIMEOUT_MSEC = 60000), Claude Desktop silently drops the result and displays:
"No result received from client-side tool execution."
The MCP server does return a valid response — Claude Desktop has simply stopped listening by that point. The server-side timeout (30 minutes in claude-code-mcp) is not the bottleneck.
Evidence
Real measurements from MCP server logs (mcp-server-claude-code.log):
Prompt typeDurationResultDirect shell commands (echo, git log, cat)9–16s✅ Always succeedsPre-written Python script (sent as stdin)16–20s✅ Always succeedsPrompt requiring Claude Code to "think" first~52s⚠️ BorderlineMulti-step prompt ("write and run a script that...")~81s❌ Frequently fails
The pattern is clear: tool calls under ~30s always work, 30–60s is unreliable, and 60s+ consistently produces "No result received."
Not configurable (verified)
I have tested every documented and community-suggested approach. None work for Claude Desktop:
ApproachWorks for Claude Code CLI?Works for Claude Desktop?MCP_TIMEOUT env var✅ Yes (startup timeout)❌ NoMCP_TOOL_TIMEOUT env var✅ Yes❌ No"timeout": 300000 in claude_desktop_config.jsonN/A❌ No effect (not in official schema)"initTimeout" in configN/A❌ Not documentedMCP progress notificationsResets timeout in Python SDK❌ Unknown if Claude Desktop honors these
Official docs gap: Claude Code CLI documents MCP_TIMEOUT explicitly. Claude Desktop documentation has zero mention of any timeout configuration for MCP tool execution. The claude_desktop_config.json schema only documents command, args, and env — no timeout field.
Prior issue closed without resolution
anthropics/claude-code#5221 requested this exact feature and was closed as "not planned" with the external label — acknowledging this is a Claude Desktop issue, not a Claude Code issue. The underlying problem remains unresolved.
Proposed Solution
Proposed solution
Per-server timeout in claude_desktop_config.json
json{
"mcpServers": {
"claude-code": {
"command": "wsl",
"args": ["bash", "-lc", "/home/user/.npm-global/bin/claude-code-mcp"],
"timeout": 300000
}
}
}
This is already the pattern used by other MCP clients (Cline, Continue) and aligns with the MCP Timeout Coordination proposal (SEP-1539).
Additionally:
Honor MCP_TOOL_TIMEOUT as an environment variable for parity with Claude Code CLI
Reset timeout on MCP progress notifications (as TypeScript SDK PR #849 enabled)
Impact
This affects anyone using MCP servers for operations exceeding ~60 seconds:
Agentic coding tools (claude-code-mcp, DesktopCommander)
Database queries on large datasets
Browser automation (Playwright, Puppeteer MCP servers)
Multi-step API integrations
The current workaround — restructuring all prompts to complete under 60s — is fragile and fundamentally limits what MCP tools can achieve in Claude Desktop.
Related
anthropics/claude-code#5221 — Same request, closed "not planned" / "external"
anthropics/claude-code#424 — Original MCP timeout request (fixed for CLI only)
modelcontextprotocol/modelcontextprotocol#1539 — SEP-1539: Timeout Coordination spec proposal
modelcontextprotocol/typescript-sdk#245 — 60s hard timeout in TS SDK (17+ reactions)
modelcontextprotocol/typescript-sdk#849 — Fix: reset timeout on progress notifications
Alternative Solutions
_No response_
Priority
Critical - Blocking my work
Feature Category
CLI commands and flags
Use Case Example
_No response_
Additional Context
_No response_
This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗