[BUG] Bug Report: Claude Desktop enters runaway tools/list polling loop, causing MCP disconnection
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?
Hello Anthropic Support,
I'm reporting a reproducible bug in Claude Desktop that causes repeated MCP disconnections requiring manual restart of both Claude Desktop and the Desktop Commander extension.
---
ENVIRONMENT
- Claude Desktop version: 1.1617.0 (build 8d6345, 2026-04-09)
- Desktop Commander app: 1.6.6
- Desktop Commander MCP server: 0.2.38 (confirmed latest on npm/GitHub)
- Installation method: Claude Extension (not via mcpServers config)
- OS: Windows 11, user profile C:\Users\mrriv
---
BUG DESCRIPTION
Claude Desktop enters a runaway tools/list polling loop where it sends hundreds of tools/list JSON-RPC requests per second to the Desktop Commander MCP server, indefinitely, crowding out all actual tool calls. The loop does not self-terminate and eventually causes the MCP connection to drop, prompting the 'MCP server timed out' error and requiring a full restart.
---
EVIDENCE FROM MCP SERVER LOG
Log file: C:\Users\mrriv\AppData\Roaming\Claude\logs\mcp-server-Desktop Commander1.log
Normal startup (March 28) shows the correct behavior — a single tools/list call on initialization, followed by normal tool use.
Starting April 7 and continuing through April 10, the log shows a persistent flood pattern. Example excerpt from 2026-04-10T09:03:13:
id:1331 tools/list → response
id:1332 tools/list → response
id:1333 tools/list → response
id:1334 tools/list → response
id:1335 tools/list → response
[continues for hundreds of sequential IDs, all within milliseconds]
By April 10, message IDs had reached 1400+ with the loop still active, all exclusively tools/list — no actual tool calls interspersed. The loop spans multiple sessions and days, suggesting it re-triggers on reconnect rather than requiring a specific user action.
---
SUSPECTED ROOT CAUSE
Reviewing the log, the flood appears to originate on reconnect after a session close, not during active use. The March 28 log shows Claude Desktop performing rapid successive restarts (three reconnection attempts within two seconds) before stabilizing. It is possible that Claude Desktop's reconnection logic is spawning multiple concurrent reconnect attempts simultaneously, each issuing its own tools/list request, and the resulting multiplexed requests are compounding into the sustained flood. If so, the bug would be in the reconnection/retry logic rather than in steady-state polling behavior.
---
IMPACT
- MCP server becomes unresponsive to actual tool calls mid-task
- User receives 'MCP timeout' error and must restart both Claude Desktop and the extension
- Happens randomly and mid-task; user has no ability to predict or prevent it
- Affects all Desktop Commander-dependent workflows
---
NOTES
- The Desktop Commander configuration is clean (proper Extension install, no uvx, no legacy mcpServers config)
- Both app and MCP server are on latest versions
- The normal session log from March 28 confirms the setup was working correctly before this behavior appeared
- This appears to be a regression introduced in a Claude Desktop update sometime after March 28
I'm happy to share the full log file if that would help diagnose the issue.
What Should Happen?
WHAT SHOULD HAPPEN
Claude Desktop should issue a tools/list request to an MCP server only when genuinely necessary — specifically:
- Once during initial MCP session handshake, to enumerate available tools.
- Again if the MCP server signals a tools/list_changed notification, indicating its tool set has changed.
At no point should Claude Desktop issue repeated or concurrent tools/list requests during an active session, during idle periods, or across reconnection attempts. Each reconnection cycle should produce exactly one tools/list call after the initialize handshake completes, and any in-flight tools/list requests from a prior connection attempt should be cancelled before a new attempt begins.
The result should be an MCP server log where tools/list appears once at session start and is otherwise absent, with all subsequent traffic consisting exclusively of tools/call, tools/call responses, and standard MCP lifecycle messages.
Error Messages/Logs
=============================================================
SANITIZED MCP SERVER LOG EXTRACT — BUG REPORT SUBMISSION
Claude Desktop version: 1.1617.0 (build 8d6345, 2026-04-09)
Desktop Commander MCP server: 0.2.38
Extracted: 2026-04-11
Note: Username redacted as [USER], file paths/content redacted as [REDACTED]
=============================================================
───────────────────────────────────────────────────────────
SECTION 1: NORMAL STARTUP (2026-03-28) — Expected behavior
───────────────────────────────────────────────────────────
2026-03-28T01:23:12.710Z [Desktop Commander] [info] Initializing server...
2026-03-28T01:23:13.317Z [Desktop Commander] [info] Server started and connected successfully
2026-03-28T01:23:13.318Z [Desktop Commander] [info] Message from client: {"method":"initialize","params":{"protocolVersion":"2025-11-25","clientInfo":{"name":"claude-ai","version":"0.1.0"}},"jsonrpc":"2.0","id":0}
2026-03-28T01:23:31.353Z [Desktop Commander] [info] Message from server: {"result":{"protocolVersion":"2025-11-25","serverInfo":{"name":"desktop-commander","version":"0.2.38"}},"jsonrpc":"2.0","id":0}
2026-03-28T01:23:31.354Z [Desktop Commander] [info] Message from client: {"method":"notifications/initialized","jsonrpc":"2.0"}
2026-03-28T01:23:31.355Z [Desktop Commander] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":1} <-- single tools/list on init
2026-03-28T01:23:31.356Z [Desktop Commander] [info] Message from client: {"method":"prompts/list","params":{},"jsonrpc":"2.0","id":2}
2026-03-28T01:23:31.356Z [Desktop Commander] [info] Message from client: {"method":"resources/list","params":{},"jsonrpc":"2.0","id":3}
2026-03-28T01:23:35.562Z [Desktop Commander] [info] Message from server: {"result":{"tools":[...]},"jsonrpc":"2.0","id":1}
2026-03-28T01:23:35.565Z [Desktop Commander] [info] Message from server: {"result":{"prompts":[]},"jsonrpc":"2.0","id":2}
2026-03-28T01:23:35.565Z [Desktop Commander] [info] Message from server: {"result":{"resources":[...]},"jsonrpc":"2.0","id":3}
[Normal tool calls follow. Session ends cleanly at 01:25:56 with proper transport close.]
2026-03-28T01:25:56.062Z [Desktop Commander] [info] Client transport closed
2026-03-28T01:25:56.063Z [Desktop Commander] [info] Server transport closed (intentional shutdown)
2026-03-28T01:25:56.168Z [Desktop Commander] [info] Initializing server... <-- reconnect attempt 1
2026-03-28T01:25:57.465Z [Desktop Commander] [info] Server started and connected successfully
2026-03-28T01:25:57.466Z [Desktop Commander] [info] Client transport closed <-- immediate close again
2026-03-28T01:25:57.466Z [Desktop Commander] [info] Server transport closed (intentional shutdown)
2026-03-28T01:25:57.470Z [Desktop Commander] [info] Initializing server... <-- reconnect attempt 2
2026-03-28T01:25:58.549Z [Desktop Commander] [info] Server started and connected successfully
2026-03-28T01:25:58.550Z [Desktop Commander] [info] Message from client: {"method":"initialize",...,"jsonrpc":"2.0","id":0}
NOTE: Three rapid reconnect attempts within ~2 seconds observed here. Session stabilizes
after the third. This reconnection retry pattern is potentially the trigger for the
tools/list flood that appears in subsequent sessions (see Sections 2 and 3).
───────────────────────────────────────────────────────────────────────────────
SECTION 2: FLOOD ONSET (2026-04-07 ~01:26:07) — Trigger and immediate aftermath
───────────────────────────────────────────────────────────────────────────────
Last legitimate tool call before flood begins:
2026-04-07T01:26:07.068Z [Desktop Commander] [info] Message from server: {"result":{"content":[{"type":"text","text":"[REDACTED - file write confirmation]"}]},"jsonrpc":"2.0","id":250}
2026-04-07T01:26:07.074Z [Desktop Commander] [info] Message from server: {"result":{"content":[{"type":"text","text":"[REDACTED - file read response]"}]},"jsonrpc":"2.0","id":251}
Flood begins immediately at id:252, ~2 seconds after last real tool call:
2026-04-07T01:26:09.571Z [Desktop Commander] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":252}
2026-04-07T01:26:09.572Z [Desktop Commander] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":253}
2026-04-07T01:26:09.574Z [Desktop Commander] [info] Message from server: {"result":{"tools":[...]},"jsonrpc":"2.0","id":252}
2026-04-07T01:26:09.576Z [Desktop Commander] [info] Message from server: {"result":{"tools":[...]},"jsonrpc":"2.0","id":253}
2026-04-07T01:26:09.866Z [Desktop Commander] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":254}
2026-04-07T01:26:09.866Z [Desktop Commander] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":255}
2026-04-07T01:26:09.869Z [Desktop Commander] [info] Message from server: {"result":{"tools":[...]},"jsonrpc":"2.0","id":254}
2026-04-07T01:26:09.871Z [Desktop Commander] [info] Message from server: {"result":{"tools":[...]},"jsonrpc":"2.0","id":255}
2026-04-07T01:26:10.059Z [Desktop Commander] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":256}
2026-04-07T01:26:10.060Z [Desktop Commander] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":257}
[Pattern continues without interruption. No tools/call messages appear after id:251.
The flood runs uninterrupted for the remainder of the session.]
───────────────────────────────────────────────────────────────────────────────────
SECTION 3: FLOOD PERSISTENCE (2026-04-10 ~09:03:13) — Confirmed across multiple sessions
───────────────────────────────────────────────────────────────────────────────────
Flood still active in a new session 3 days later, message IDs now in the 1300s:
2026-04-10T09:03:13.174Z [Desktop Commander] [info] Message from server: {"result":{"tools":[...]},"jsonrpc":"2.0","id":1331}
2026-04-10T09:03:13.247Z [Desktop Commander] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":1332}
2026-04-10T09:03:13.248Z [Desktop Commander] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":1333}
2026-04-10T09:03:13.248Z [Desktop Commander] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":1334}
2026-04-10T09:03:13.248Z [Desktop Commander] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":1335}
2026-04-10T09:03:13.248Z [Desktop Commander] [info] Message from client: {"method":"tools/list","params":{},"jsonrpc":"2.0","id":1336}
2026-04-10T09:03:13.249Z [Desktop Commander] [info] Message from server: {"result":{"tools":[...]},"jsonrpc":"2.0","id":1332}
2026-04-10T09:03:13.251Z [Desktop Commander] [info] Message from server: {"result":{"tools":[...]},"jsonrpc":"2.0","id":1333}
2026-04-10T09:03:13.252Z [Desktop Commander] [info] Message from server: {"result":{"tools":[...]},"jsonrpc":"2.0","id":1334}
2026-04-10T09:03:13.253Z [Desktop Commander] [info] Message from server: {"result":{"tools":[...]},"jsonrpc":"2.0","id":1335}
2026-04-10T09:03:13.255Z [Desktop Commander] [info] Message from server: {"result":{"tools":[...]},"jsonrpc":"2.0","id":1336}
[5 tools/list requests firing simultaneously within a single millisecond window.
Pattern continues uninterrupted. Message IDs reach 1400+ with no tool calls interspersed.
Session log ends with the flood still active.]
=============================================================
END OF EXTRACT
Full raw log available upon request if needed for deeper analysis.
=============================================================
Steps to Reproduce
STEPS TO REPRODUCE
Note: The exact trigger is not fully deterministic based on available evidence. The steps below describe the conditions under which the flood has been consistently observed, based on MCP server log analysis. The bug may require a specific internal reconnect state in Claude Desktop that is not directly user-controllable.
- Install Desktop Commander as a Claude Extension via the Claude Desktop Extensions marketplace (not via a manual mcpServers entry in claude_desktop_config.json).
- Open Claude Desktop and begin an agentic session that involves multiple sequential Desktop Commander tool calls — for example, reading, writing, and executing files over the course of 20–30+ tool calls within a single conversation.
- Allow the session to reach a natural pause or completion point. Based on log evidence, the flood onset correlates with a period of inactivity or completion immediately following a tool call response (observed gap of ~2 seconds between last legitimate tool response and first duplicate tools/list call).
- Observe the MCP server log at:
%APPDATA%\Claude\logs\mcp-server-Desktop Commander.log
Expected (normal): tools/list appears once during initialization (id:1), followed only by tools/call entries during active use.
Buggy state: tools/list requests begin firing in pairs or groups of 5, every 80–300ms, with sequential IDs and no tools/call entries interspersed. Example:
{"method":"tools/list","id":252}
{"method":"tools/list","id":253}
{"method":"tools/list","id":254}
{"method":"tools/list","id":255}
[continues indefinitely]
- Once in the buggy state, the flood persists across Claude Desktop restarts and survives into new sessions (confirmed across a 3-day window, April 7–10, with message IDs incrementing from ~252 to 1400+ continuously).
ADDITIONAL CONTEXT
The March 28 session log (the earliest in the log file) shows a potentially related behavior: upon session close, Claude Desktop made three rapid reconnection attempts within approximately 2 seconds before stabilizing. This aggressive retry pattern — each attempt issuing its own tools/list — may be the mechanism by which the multiplexed flood originates. If concurrent reconnect threads are not properly deduped or cancelled, their individual tools/list polling loops could compound into the sustained flood observed.
MINIMAL REPRODUCTION ENVIRONMENT
- Claude Desktop 1.1617.0 (build 8d6345, 2026-04-09)
- Desktop Commander extension v0.2.38 (installed via Claude Extensions, entry point: node dist/index.js)
- Windows 11
- No custom mcpServers config — extension only
- No other MCP extensions active during affected sessions
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
Claude 1.1617.0 (8d6345) 2026-04-09T16:10:15.000Z
Platform
Other
Operating System
Windows
Terminal/Shell
Other
Additional Information
This is happening in Claude Desktop in chat sessions with Desktop Commander installed.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗