[BUG] Claude Desktop MCP: tool call responses dropped by client after first successful round-trip (Windows, regression in CCD v2.1.22)

Status Fixed / completed
Reported on v2.1.22
Maintainer reply None cached
Activity 10 comments · opened Feb 1, 2026 · closed Feb 4, 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?

On Claude Desktop for Windows (CCD v2.1.22 / app 1.1.1520), the @modelcontextprotocol/server-filesystem server completes the full MCP handshake (initialize → tools/list) successfully, but subsequent tools/call messages are never sent by Claude Desktop to the server. The server stays connected and healthy, but no file operations ever reach it.

This is a regression introduced in CCD v2.1.22. The exact same setup worked correctly on v2.1.20 and earlier. The main.log history confirms the transition.

The warning UtilityProcess Check: Extension filesystem not found in installed extensions appears in main.log on every startup — Claude Desktop may be failing to route tools/call messages because it doesn't find the server registered as an internal extension.

Related: #14807 (same symptom on Windows)

What Should Happen?

After a successful MCP handshake, Claude Desktop should dispatch tools/call messages to the server for any filesystem operations requested by the user. The server connection should remain active for the full duration of the session and respond to all file read/write/list operations.

Error Messages/Logs

**mcp-server-filesystem.log:**

[filesystem] [info] Server started and connected successfully
[filesystem] [info] Message from client: {"method":"initialize",...,"id":0}
[filesystem] [info] Message from server: {"jsonrpc":"2.0","id":0,"result":{...}}
[filesystem] [info] Message from client: {"method":"notifications/initialized",...}
[filesystem] [info] Message from client: {"method":"tools/list",...,"id":1}
[filesystem] [info] Message from server: {"jsonrpc":"2.0","id":1,"result":{"tools":[...]}}

// ← NOTHING after this. No tools/call ever arrives from the client.
// ~20 minutes later:

[filesystem] [info] Server transport closed
[filesystem] [error] Server disconnected. Server transport closed unexpectedly,
  this is likely due to the process exiting early.


**main.log:**

[info] Launching MCP Server: filesystem
[info] Checking if UtilityProcess should be used for extension filesystem
[warn] UtilityProcess Check: Extension filesystem not found in installed extensions
[info] [EventLogging] Sending event: desktop_mcp_unexpected_close
  | extension_name: 'filesystem'
  | mcp_cmd: 'node'
  | app_version: '1.1.1520'


**mcp.log:**
The only tools/call that ever went through was list_allowed_directories (id:2), and only because it fired within the first ~23 seconds of connection. All subsequent calls were never dispatched.

---

Steps to Reproduce

  1. Install @modelcontextprotocol/server-filesystem globally:
npm install -g @modelcontextprotocol/server-filesystem
  1. Edit claude_desktop_config.json (located at %APPDATA%\Claude\claude_desktop_config.json) with this content:
{
  "mcpServers": {
    "filesystem": {
      "command": "node",
      "args": [
        "C:\\Users\\YOUR_USER\\AppData\\Roaming\\npm\\node_modules\\@modelcontextprotocol\\server-filesystem\\dist\\index.js",
        "C:\\YOUR_ALLOWED_DIRECTORY"
      ]
    }
  }
}

Note: Using node directly instead of npx is required — with npx the stdio pipe breaks entirely and even the handshake fails.

  1. Open Claude Desktop. Confirm the server starts successfully by checking mcp-server-filesystem.log (located at %APPDATA%\Claude\logs\) — you should see the handshake complete (initialize → tools/list → response).
  1. Ask Claude to read or list any file/directory in the allowed path (e.g. "list the files in C:\YOUR_ALLOWED_DIRECTORY").
  1. Observe: No tools/call message ever appears in the server log. The request hangs indefinitely on the client side. After ~20 minutes the server is disconnected with "Server transport closed unexpectedly".

Verification that the server itself is healthy:

node C:\Users\YOUR_USER\AppData\Roaming\npm\node_modules\@modelcontextprotocol\server-filesystem\dist\index.js C:\YOUR_ALLOWED_DIRECTORY

Running the server manually works perfectly — it responds to all commands when called directly via MCP inspector or similar tools.

Verification that Node.js has no I/O issues:

node -e "const fs = require('fs'); fs.readdirSync('C:\\YOUR_ALLOWED_DIRECTORY').forEach(f => console.log(f))"

This works fine — the issue is not with Node.js or file system permissions.

Claude Model

Sonnet (default)

Is this a regression?

Yes, this worked in a previous version

Last Working Version

CCD v2.1.20 / app 1.1.1200. The main.log version history confirms: - v2.1.20 (app 1.1.1200) → MCP filesystem worked correctly - v2.1.22 (app 1.1.1520) → MCP filesystem broke - The automatic update to v2.1.22 happened on 2026-01-31 and the issue started immediately after. ---

Claude Code Version

Not applicable — this bug is in Claude Desktop's MCP client implementation, not Claude Code. Claude Desktop version: app 1.1.1520 / CCD 2.1.22.

Platform

Other

Operating System

Windows

Terminal/Shell

Windows Terminal

Additional Information

Key observations:

  1. The server is completely healthy. Running it manually works perfectly.
  2. Node.js has zero I/O issues with the target directory.
  3. The first tool call sometimes succeeds if made within ~23 seconds of connection — this points to a race condition or very short timeout in Claude Desktop's MCP message routing after the initial handshake.
  4. npx as command makes it completely broken (stdio pipe failure). Using node directly is required but only partially fixes the issue.
  5. Toggling the filesystem connector off/on in Claude Desktop's Connectors menu forces a reconnect but the same timeout applies.
  6. The warning "Extension filesystem not found in installed extensions" in main.log appears on every startup and is likely the root cause — Claude Desktop may not be properly routing tools/call for servers it doesn't recognize as installed extensions.

Workaround: None that fully resolves the issue. Toggling the connector and making requests within the first few seconds is unreliable and impractical.

View original on GitHub ↗

10 Comments

github-actions[bot] · 7 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/9609
  2. https://github.com/anthropics/claude-code/issues/18863
  3. https://github.com/anthropics/claude-code/issues/14807

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

sonofsmog · 7 months ago

Confirming this bug — independent reproduction with additional findings that narrow the root cause.

Same environment: CCD v2.1.22 / app 1.1.1520, Windows 11 25H2 (26200.7705).

Your report says tools/call never dispatches. I can confirm it actually does dispatch and execute — but the response is dropped by the client before it reaches the UI. Proof: a Windows-MCP:Snapshot call opened Task Manager on my machine, but Claude Desktop reported "No result received from client-side tool execution."

Additional evidence beyond the OP:

  1. Affects ALL MCP servers, not just filesystem — Filesystem, Windows-MCP, and Claude in Chrome extension all exhibit the same behavior
  2. First call succeeds, subsequent calls drop — consistent pattern across fresh install
  3. EventEmitter memory leak in the Electron IPC busMaxListenersExceededWarning: Possible EventEmitter memory leak detected. 11 $eipc_message$_20c92762-0947-4c2c-b829-f8df9e7c38dc_$_claude.web_$_AutoUpdater_$_updaterState_$store$_update listeners added — this UUID is hardcoded in the binary and survives a full uninstall + AppData wipe + reinstall
  4. 9 orphaned Claude processes consuming 1.2GB+ RAM with only one extension enabled
  5. 7 identical JSON Schema compilation errors on startup
  6. CSP blocking Anthropic's own analytics endpoint (a-api.anthropic.com/v1/m refused by their own Content Security Policy)
  7. Statsig feature flag parsing failure on startup

The EventEmitter leak on the AutoUpdater IPC channel is likely the root cause — it's congesting the eipc message bus and causing MCP tool responses to get dropped after the first successful round-trip.

sonofsmog · 7 months ago

UPDATE — Second machine confirms this is the auto-update, not user environment
Tested on a completely untouched work machine that hasn't been modified since Thursday January 29th. MCP was fully working when I left the office Thursday. No troubleshooting, no KB uninstalls, no extension changes — stock Windows 11, stock Claude Desktop.

About dialog still showed 1.1.1200 (old version) but MCP was already broken with the identical pattern: first tool call succeeds, all subsequent calls fail with "No result received from client-side tool execution"
After restart, version instantly flipped to 1.1.1520 with no install prompt — the update was already downloaded and staged silently
Same bug, same symptoms, completely untouched machine

This rules out user environment as a factor. The auto-update broke MCP on both machines without any user action. One machine had extensive troubleshooting (Node upgrade, AppData wipe, full reinstall, KB uninstalls) — none of it mattered. The untouched machine has the identical failure.
Working Thursday January 29th, broken Saturday January 31st, zero user changes. This is a regression shipped via silent auto-update with no rollback path.

MandradeMaking · 7 months ago

Confirming the pattern sonofsmog described. Additional log evidence from my session:

The gap between handshake and first successful call rules out any timeout:

  • Handshake completed at 02:14:14
  • First tools/call (list_directory) arrived at 18:01:39 — 16 hours later — and executed correctly
  • Second tools/call never appears in the server log at all

This confirms it's not a timeout or race condition on connect. The first call works regardless of how much time passes. The second call is simply never dispatched by the client, consistent with sonofsmog's finding that the IPC bus drops responses after the first successful round-trip.

Also: 👎 on the bot comment above — this is NOT a duplicate of #9609, #18863, or #14807. Those are different failure modes. This is specifically the first-call-succeeds / second-call-dropped pattern introduced by the v2.1.22 auto-update.

dsarno · 7 months ago
TheMeadBrewer · 6 months ago

Same issue here, Anthropic refuses to acknowledge problem as far as my interactions have been. They are the creators of a tool they can't master themselves. No wonder they ported it out into the world, hoping someone smarter they are would could fix it.

alicelovescake · 6 months ago

Hi! We do acknowledge that MCP reliability is something we are striving to improve. Really appreciate everyone's help to report issues so we can get them fixed.

A few different issues are popping up:

  • We disabled Filesystem MCP in CCD and Cowork b/c it serves the same purpose as just selecting a folder for the session
  • We also just fixed internal MCPs in Code and Cowork in the latest release.

Can you guys upgrade to the latest app Claude 1.1.1890 (af393c) 2026-02-03T21:05:53.000Z and see if the issue still pops up?

<img width="966" height="192" alt="Image" src="https://github.com/user-attachments/assets/1a2718f9-9039-4b4e-b0b3-fbf20d705045" />

dsarno · 6 months ago

@alicelovescake updated to latest and looks good here!

alicelovescake · 6 months ago

Thanks for confirming! Closing the issue. Thanks again for your patience.

github-actions[bot] · 6 months ago

This issue has been automatically locked since it was closed and has not had any activity for 7 days. If you're experiencing a similar issue, please file a new issue and reference this one if it's relevant.