Custom MCP server tools not discovered after update to 2.1.116

Status Closed — not planned
Reported on v2.1.116
Maintainer reply ✓ Yes — localden
Activity 13 comments · opened Apr 21, 2026 · closed May 23, 2026
💡 Likely answer: A maintainer (localden, collaborator) responded on this thread — see the highlighted reply below.

Description

After updating Claude Code to version 2.1.116, custom MCP server tools are no longer being discovered and loaded into the deferred tools registry, even though the servers are connected and working correctly.

Steps to Reproduce

  1. Have a custom MCP server configured in .mcp.json (e.g., google-mcp-server from ngs/homebrew-tap)
  2. Update Claude Code to 2.1.116 (npm update -g @anthropic-ai/claude-code)
  3. Start a new session
  4. Run claude mcp list — server shows as "✓ Connected"
  5. Try to use ToolSearch to find the custom server's tools — they don't appear
  6. Only built-in claude.ai remote MCP connectors appear in the deferred tools list

Expected Behavior

Custom MCP server tools should be discovered and available via ToolSearch, prefixed with mcp__{server_name}__ (e.g., mcp__google__calendar_events_list).

Actual Behavior

  • claude mcp list shows custom server as connected
  • Querying the server directly via JSON-RPC confirms it exposes tools correctly:

``bash
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | /opt/homebrew/bin/google-mcp-server serve
``
Returns 50+ tools (calendar_events_list, gmail_messages_list, etc.)

  • But ToolSearch returns "No matching deferred tools found" for any custom server tools
  • Only claude.ai built-in remote connectors appear in the registry

Environment

  • Claude Code version: 2.1.116
  • OS: macOS (Darwin 24.6.0, arm64)
  • Custom MCP server: google-mcp-server v0.4.0 (from ngs/homebrew-tap)
  • Shell: zsh

Additional Context

  • The custom MCP server was working correctly before this update
  • Re-adding the server via claude mcp remove + claude mcp add does not fix the issue
  • Restarting the session does not fix the issue (tool discovery seems broken at startup)

Workaround

None currently — built-in claude.ai connectors work but custom stdio MCP servers do not have their tools loaded.

View original on GitHub ↗

13 Comments

github-actions[bot] · 4 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/42442
  2. https://github.com/anthropics/claude-code/issues/46800
  3. https://github.com/anthropics/claude-code/issues/36914

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

Boilerplate4u · 4 months ago

I can reproduce and confirm this issue with Claude Desktop using the Code tab, version 1.3883.0 (93ff6c) 2026-04-21T17:24:01.000Z, on macOS 11.7.5. Command /mcp just pops up a window with the standard connectors.

Boilerplate4u · 4 months ago

Claude helped find a workaround:

If enabledMcpjsonServers is an empty list for your project in ~/.claude.json, servers in .mcp.json are silently never activated no matter how many times you restart. Manually add your server names to the array and restart.

Or run this Python script:

import json
f = '~/.claude.json'
d = json.load(open(f))
d['projects']['/path/to/project']['enabledMcpjsonServers'] = ['server1', 'server2']
json.dump(d, open(f, 'w'), indent=2)

This should normally work on a per-project basis with its own .claude settings

Boilerplate4u · 4 months ago

Can confirm the same problem occurs on Windows.

enabledMcpjsonServers initializes as an empty array [] for new projects in ~/.claude.json, which prevents .mcp.json servers from being auto-activated.

Environment:

  • Claude Code CLI v2.1.118
  • Claude Desktop Code v1.3883.0
  • Windows (path: C:\Users\<user>\.claude.json)
  • .mcp.json defines two HTTP Streamable servers

Workaround: Manual update of ~/.claude.json with server names in the enabledMcpjsonServers array. Same solution as macOS.

Confirms this blocks project setup on both platforms.

theoquarri · 4 months ago

Reproduces for remote HTTP OAuth connectors, not just stdio via .mcp.json — the regression is broader than the title suggests.

Confirming the same symptom on a custom remote HTTP OAuth MCP connector (not stdio, not .mcp.json-configured — added via Claude Desktop's Settings → Connectors UI).

Regression window pinned to a specific Desktop MSIX update (Windows):

Last working: Claude_1.3561.0.0_x64__pzs8sxrjxfjjc — last used 2026-04-21 17:43 local
First broken: Claude_1.3883.0.0_x64__pzs8sxrjxfjjc — auto-installed 2026-04-22 10:09:34 local
SDK version logged on restart: [CCD] Wrote SDK version file: 2.1.111
Log fingerprint in %APPDATA%\Claude\logs\main.log on every 1.3883 restart:

MCP Server connection requested for: mcp-registry
MCP Server connection requested for: Claude in Chrome
No equivalent connection requested line is ever emitted for the custom connector's UUID. [LocalAgentModeSessionManager] mcpServerStatus returned 63 servers (14 with tools) — the 14 include Gmail, Drive, Granola, Apollo, Claude-in-Chrome and 9 Anthropic-internal servers; the custom remote connector is absent entirely. Zero 401/OAuth/network errors in the logs — the client never attempts the connection.

@Boilerplate4u's enabledMcpjsonServers workaround does not apply here — that key only gates .mcp.json-defined servers. Remote HTTP connectors added via the Desktop connector UI live in a different config path (~/.claude.json mcpServers or the Desktop connector state store) and are not enabled/disabled by that array. No manual JSON edit unblocks them.

Server verified MCP 2025-06-18 / RFC 9728 / RFC 8414 compliant via direct curl: proper WWW-Authenticate: Bearer resource_metadata="..." on 401, valid /.well-known/oauth-protected-resource document with authorization_servers, bearer_methods_supported, resource fields. Issue is not server-side.

Together this strongly suggests the root cause is the new connector-enumeration path (through the mcp-registry pseudo-server) introduced in Desktop 1.3883 / Claude Code 2.1.116, silently filtering out custom connectors of all types — stdio AND remote HTTP — not just the .mcp.json class currently called out in this issue title. Title may want to be broadened to reflect this.

Happy to share full main.log excerpts or the server's discovery responses if helpful.

Boilerplate4u · 4 months ago

@theoquarri: Logs will most likely be very valuable for whoever is responsible for resolving the issue. They can save a lot of time diagnosing what's going wrong and the logs also help confirm and support the reported problems. I'll upload my own logs as well.

swaaj · 4 months ago

Same issue here

Linear MCP intermittently fails to register at remote/web session start. Tools listed in session config but ToolSearch select:save_issue,... returns no match. Toggling connector OFF/ON in client UI forces re-handshake. Also see intermittent -32600 Anthropic Proxy: Invalid content from server on list_teams/list_cycles when MCP is up.

RyanFluidAi · 4 months ago

Same issue for me, in claude desktop with an assigned sub-agent persona in project settings, is unable to fetch any project MCPs

cs-computas · 3 months ago

Some new info on this — the same bug (and closed sibling #55914, another report of the same symptom) still happens in 2.1.147 and other recent versions. I see it on both Windows and macOS, and across both Team and Premium plans (My org upgraded mid-session 2026-05-21; behaviour was the same before and after). The platform and CLI version don't seem to matter.

Setup: Claude Code with several mcp__claude_ai_* connectors registered via claude.ai Settings → Connectors. On my own remote MCP server, the logs show the same pattern every time: repeated Client initialize request from claude-code with no follow-up tools/list. The connection finishes and shows ✓ Connected, but tool discovery never happens for that session.

Two notes:

  • claude mcp list reports ✓ Connected, but claude mcp get "<name>" returns No MCP server found for the same connector. The two commands don't agree about whether it exists.
  • Tools register only if the connector was already in ✓ Connected state when the CLI started. I reproduced this twice in the same session (once at start, once after /exit + re-enter): the first launch started before the connector was ready and got zero mcp__claude_ai_* tools; the second launch, with the connector already showing ✓, loaded them.

The same "✓ Connected but no tools" pattern seems to also show up on Claude Desktop on macOS, and I think I've seen it on the claude.ai web app — not 100% sure of details as it's happened quite a few times.

localden collaborator · 3 months ago

Thanks for the report. This is the same issue as #12164 (stdio MCP server connects but tools never exposed). Consolidating tracking there.

cs-computas · 3 months ago

@localden, 12164 is marked as "fixed 2 weeks ago" but I experienced this bug a couple days ago. So either it's not the same or the fix has not been placed in production yet?

cs-computas · 3 months ago

Clarification: #12164 seems to be about stdio MCP. My comment is about a custom MCP server registered as a connector in claude.ai — Connected with no tools registered happens there.

github-actions[bot] · 1 month 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.