Locally-configured stdio MCP server connects ("Connected" in claude mcp list) but its tools never surface in the session
Environment
- Claude Code: 2.1.211 (commit 17a4b6d7b2ee)
- Platform: win32-x64 (Windows 10 Home 10.0.19045)
- Install method: npm global
Description
A user-scope stdio MCP server (chrome-devtools-mcp, added via~/.claude.json -> mcpServers.chrome-devtools) reports as connected
via claude mcp list:
chrome-devtools: npx -y chrome-devtools-mcp@latest - ✔ Connected
...but none of its tools are ever exposed to the session. ToolSearch
for any mcp__chrome-devtools__* tool name returns zero matches, and
the total deferred-tool count is unchanged whether the server is
configured or not.
This was reproduced across 3 separate fresh claude process launches
in the same project directory, including after a full OS reboot, so
it isn't a stale-session/cache issue.
Isolating the cause
I bypassed Claude Code and spoke MCP over stdio directly:
npx -y chrome-devtools-mcp@latest
then sent a raw initialize followed by tools/list over stdin. The
server responded correctly to both:
initialize-> protocolVersion 2024-11-05, serverInfo
chrome_devtools v1.6.0
tools/list-> a full list of 28 tools (click,navigate_page,
take_screenshot, evaluate_script, list_pages, etc.)
So the server itself is healthy and correctly implements the MCP
protocol. Claude Code's own stdio transport handshake with it also
succeeds (that's what "Connected" reflects). But the resulting tool
list is never merged into the session's tool set.
For comparison, remote claude.ai connectors (Gmail, Google Calendar,
Google Drive) configured on the same account work as expected — their
tools do appear as deferred tools in the session.
Steps to reproduce
- Add a local stdio MCP server at user scope:
claude mcp add chrome-devtools --scope user npx chrome-devtools-mcp@latest
(or equivalent entry in ~/.claude.json -> mcpServers)
- Run
claude mcp list-> server shows "✔ Connected" - Start a new
claudesession - Ask Claude to search for / use any tool from that server -> not found
- Fully restart the machine, repeat steps 3-4 -> same result
- Confirm the server works standalone by sending raw MCP JSON-RPC
(initialize + tools/list) over its stdio transport -> returns
a correct, non-empty tool list
Expected behavior
Once a stdio MCP server reports "Connected", its tools should be
discoverable in the session (either resident or via the deferredToolSearch mechanism), the same way remote claude.ai connectors'
tools are.
Actual behavior
The server connects at the transport level but its tools are never
registered into the session's tool pool, making the server entirely
unusable despite showing as healthy.
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗