Skip to content

server-filesystem >=2025.11.25 (registerTool/outputSchema rewrite): 100% tool-call failure on Claude Desktop 1.24012.1 Windows — calls never dispatched to server #4545

Description

@sonofsmog

Bug report: Filesystem extension v2026.7.10 — 100% tool-call failure on Claude Desktop 1.24012.1 (Windows)

Environment

  • OS: Windows 11 Enterprise 10.0.26200
  • Claude Desktop: 1.24012.1, Microsoft Store MSIX build (C:\Program Files\WindowsApps\Claude_1.24012.1.0_x64__pzs8sxrjxfjjc)
  • Filesystem extension: ant.dir.ant.anthropic.filesystem v2026.7.10 (auto-updated 2026-07-21 ~16:56 local; previously working for months)
  • System Node: v22.22.0 (also reproduces with the app's built-in Node / UtilityProcess mode)

Symptom

After the extension auto-updated to 2026.7.10, every Filesystem tool call in desktop chat fails with a bare "Tool execution failed" — including list_allowed_directories, which takes zero arguments. 100% failure rate, all 14 tools. No error detail surfaced anywhere.

Key evidence (from %APPDATA%\Claude\logs)

  1. Calls never reach the server. mcp-server-Filesystem.log shows every session since the update doing a successful initialize + tools/list, then zero tools/call messages ever arriving. The last tools/call logged is from 2026-07-20, pre-update. The renderer logs the call at its approval gate (tool_approval_gate … Filesystem:list_directory), then dispatch fails client-side.

  2. The server binary is healthy. Driving the exact installed dist/index.js manually over JSON-RPC (system Node v22, same args/allowed dirs) succeeds for every tool: initialize, tools/list, list_allowed_directories, list_directory, get_file_info, error cases — all correct.

  3. Version boundary identified by inspecting npm tarballs:

    • @modelcontextprotocol/server-filesystem ≤ 2025.8.21 — old tools/list shape (no outputSchema) → works with this desktop build (verified by dist-swap: calls dispatch and succeed until the app's extension-integrity check reverts the swap)
    • ≥ 2025.11.25 — rewritten with registerTool + outputSchema/structuredContent on every tool → this desktop build refuses to dispatch any call to the server
    • MCP roots support (added 2025.7.29) is NOT the cause — it shipped in versions that worked for months.
  4. Control case proving the bridge/dispatch path is fine: the Windows-MCP extension (registry-installed, old-style tool schema) lists AND executes tools in the same chat sessions without issue.

  5. initialize latency regression: the v2026.7.10 server takes 8–13 s to answer initialize under the app (older versions: <1 s), which also trips the localMcpBridge startup path (ensureAllConfiguredConnected timed out after 10000ms → announcing partial/empty set).

Workarounds attempted — every alternative injection path is blocked by design

  • claude_desktop_config.json mcpServers entry (pinned server 2025.8.21, system Node): server connects and serves tools/list, but its tools are never bridged into chat — connecting DO bridge with: … (+0 local-mcp).
  • Local .mcpb extension (same pinned server, drag-installed, local.mcpb.* id): installs, launches, handshakes cleanly on every restart — localMcpBridge never announces it (only registry ant.dir.* extensions are announced).
  • Swapping known-good dist/ into the registry extension: works (calls dispatch and succeed) until the next enable/disable cycle, when the app's integrity check silently removes the extension's tool registration; only a full UI reinstall restores it (which also restores the broken code).
  • Net result: no user-side fix exists. The app's (reasonable) security model blocks every repair path.

Additional bridge fragility observed

  • [localMcpBridge] no stdio servers connected is announced ~1 s after launch, racing server handshakes; recovery (late stdio connect after announce — reloading bridge) fires inconsistently.
  • An enabled extension that can never launch (stale Windows-MCP entry) stalls ensureAllConfiguredConnected into a 10 s timeout and an empty announce.
  • Editing extension settings/manifest files on disk desyncs the app's registration state from the settings JSON; the extension launches but its tools silently vanish from chat with no error.

Impact

Filesystem access — the primary reason to run Claude Desktop over the browser — is completely unusable. This is the second multi-day filesystem breakage on this machine. Current user workaround: routing all file operations through the third-party Windows-MCP extension.

Requests

  1. Ship a desktop build that dispatches calls to servers using the current MCP SDK tool schema (outputSchema/structuredContent), or roll the bundled Filesystem extension back to the 2025.8.21 shape until the client is ready.
  2. Integration-test the bundled extension against each supported desktop build before auto-updating it in place (note: MS Store builds lag, widening the skew window).
  3. Surface dispatch failures with an actual error message instead of a bare "Tool execution failed".
  4. When an extension's integrity/registration check fails, say so in the UI instead of silently dropping its tools.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions