[BUG] Claude Desktop filesystem MCP — tool calls fail with empty server logs despite server running normally
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?
The filesystem MCP connector in Claude Desktop shows as "running" in Settings, with all 14 tools correctly listed and permissions set to "Always Allow". However, every tool call fails immediately with "Failed to call tool [tool_name]". The connector's own logs (via "View logs") are completely empty — no errors, no output at all — even after the failed call.
What Should Happen?
Tool calls should succeed given that the MCP server process is confirmed running, has registered all 14 tools, and permissions are granted. At minimum, some error should appear in the server logs to explain the failure.
Error Messages/Logs
UI error shown in chat: "Failed to call tool 'list_allowed_directories'." / "Failed to call tool 'list_directory'."
Connector logs (via "View logs" button in Settings → Connectors → filesystem): completely empty, no output.
Steps to Reproduce
- Add filesystem MCP server to claude_desktop_config.json using absolute path to npx.cmd:
"filesystem": {
"command": "C:\\Program Files\\nodejs\\npx.cmd",
"args": ["-y", "@modelcontextprotocol/server-filesystem@2026.7.10", "D:\\UnityClass\\Arcana"]
}
- Fully quit Claude Desktop (via tray icon) and restart it.
- Confirm in Settings → Connectors that "filesystem" shows status "running" with 14 tools listed, and read/write tool permissions set to "Always Allow".
- In a chat, ask Claude to call any filesystem tool (e.g. "list the files in D:\UnityClass\Arcana").
- Observe "Failed to call tool [tool_name]" with nothing logged on the server side.
Already ruled out: orphaned node.exe processes (killed and reconfirmed fresh processes spawn), running as Administrator, package version pinning (0.6.2 and 2026.7.10 both tested), multiple full app restarts, testing in several brand-new chat sessions.
Claude Model
Sonnet (default)
Is this a regression?
I don't know
Last Working Version
N/A — this was a first-time setup, not a previously working configuration
Claude Code Version
N/A — this issue is in Claude Desktop (chat), not the Claude Code CLI. claude --version is not applicable here.
Platform
Anthropic API
Operating System
Windows
Terminal/Shell
Terminal.app (macOS)
Additional Information
Also tried pinning the package to an old version (0.6.2) which resulted in a different symptom: connector showed "running" but with zero tools available — confirming version 2026.7.10 is required for tool registration to work at all. Despite that fix, tool calls still fail with no server-side error.
4 Comments
Seeing the same failure mode on macOS with a different MCP server and transport, which rules out anything server-, OS-, or config-specific.
Setup
supergateway --streamableHttpprotocolVersion: 2025-11-25,clientInfo: { name: "claude-ai", version: "0.1.0" }Symptom (identical):
initializeandtools/listsucceed and all tools show up; everytools/callfails instantly withFailed to call tool "<name>"/Tool execution failed, and the MCP server sees no tool call at all.Where it actually breaks: The call is never dispatched by the client. In the gateway log, only
initializeandtools/listare ever forwarded — there is notools/callon the wire:The app does reach its internal approval gate (
[MCP] tool_approval_gate { approvalRequired: true, hasBufferedInput: true }) and records the approval, but nothing is sent to the transport afterwards.Independently verified the server + transport are healthy: driving the exact same endpoint through
supergatewayby hand — with the sameprotocolVersion(2025-11-25),clientInfo, and capabilities the app sends — returns a correcttools/callresult. Postman and a direct Streamable-HTTP MCP client also work. So the server and bridge are fine; only the Desktop app fails to emit the call.Ruled out:
Repro:
Happy to provide full logs / request IDs if useful.
Same issue — additional diagnostic detail that narrows where the failure occurs.
Broke immediately after this morning's (2026-07-22) auto-update on the Windows MSIX/Store build (package family
Claude_pzs8sxrjxfjjc). Worked normally before the update. Windows 11, filesystem MCP server (@modelcontextprotocol/server-filesystemvia npx), config verified correct at the virtualized path (%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json).Key finding: tool calls reach the renderer's approval gate, pass it, and never arrive at the MCP client.
1. Server is healthy — manual spawn in PowerShell starts clean ("Secure MCP Filesystem Server running on stdio").
2. App-to-server connection is healthy —
mcp.logandmcp-server-filesystem.logshow a successfulinitializehandshake andtools/listresponse on every app launch. Allowed directories load correctly.3. The break is between renderer and MCP client.
claude.ai-web.loglogs every failed call at the gate, e.g.:That call — and every other tools/call today — never appears in
mcp.log(startup handshake only, all day).main.logshows no errors at failure times. No error is logged anywhere between gate and MCP client. This matches the OP's "empty server logs despite server running normally" — the calls are dying in the app's renderer-to-main-process hop before the MCP layer ever sees them.4. Possibly related: one call was gated
approvalRequired:true, hasBufferedInput:truewith no visible prompt and no logged resolution. Also a burst of[REACT_QUERY_CLIENT]"data is undefined" errors (account_profile,subscription_details,memory_settings) at sign-in.Did not fix it: full quit/relaunch (multiple), sign out/in, new conversations, disabling Chrome extension, toggling the filesystem connector off/on (this made an approval prompt appear for the first time — set to always-allow — but calls still fail identically, including in fresh chats).
100% reproducible: any conversation → any MCP tool call → instant generic failure.
Existing issue on this case: #79992
Best analysis so far: https://github.com/anthropics/claude-code/issues/79992#issuecomment-5049455483
the "$schema" in tools/list output is confirmed for my mcp server as well.
Same:
Summary
Since the desktop auto-update installed Jul 21 ~8:58 PM ET, all tool calls to a
local MCP server whose tools are gated with
approvalRequired: truefail with ageneric "Failed to call tool" toast. No approval prompt is ever rendered anywhere
in the UI. The tool call is held at the approval gate and never dispatched to the
MCP server. First-party connector tools marked
approvalRequired: false(claude-code) work normally in the same session.
Environment
claude mcp serve)and a custom node git server
Smoking gun (renderer log, ~/Library/Logs/Claude/claude.ai-web.log)
Same session, minutes apart:
[MCP] tool_approval_gate {"toolName":"claude-code:Bash","approvalRequired":false,"hasBufferedInput":false} → succeeds
[MCP] tool_approval_gate {"toolName":"claude-code:Read","approvalRequired":false,"hasBufferedInput":false} → succeeds
[MCP] tool_approval_gate {"toolName":"fs-mcp:list_allowed_directories","approvalRequired":true,"hasBufferedInput":true} → fails, no prompt shown
[MCP] tool_approval_gate {"toolName":"fs-mcp:list_directory","approvalRequired":true,"hasBufferedInput":true} → fails, no prompt shown
Server-side log (mcp-server-filesystem.log) confirms the server initializes,
completes the handshake, and answers tools/list — but zero tools/call messages
ever arrive. mcp.log shows the same: claude-code tools/call entries flow
normally; none for filesystem.
Timeline (ET)
(ShipItState.plist + ShipIt_stderr.log timestamps: 20:58:04–20:58:15)
Ruled out by testing
Preferences, saved state; fresh install; config restored: identical failure —
so this is default-state behavior, not corruption)
Expected
Either an approval prompt is displayed when approvalRequired=true, or the tool
call proceeds.
Actual
No prompt anywhere; call dies at the gate; user sees only "Failed to call tool."
Possibly related
A chat started on mobile during the same window was silently overwritten/reverted
by desktop state on next desktop launch — may share a root cause in the update's
session/sync handling.