Locally-configured stdio MCP server connects ("Connected" in claude mcp list) but its tools never surface in the session

Status Open
Reported on v2.1.211
Maintainer reply None cached
Activity 5 comments · opened Jul 16, 2026

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

  1. 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)

  1. Run claude mcp list -> server shows "✔ Connected"
  2. Start a new claude session
  3. Ask Claude to search for / use any tool from that server -> not found
  4. Fully restart the machine, repeat steps 3-4 -> same result
  5. 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 deferred
ToolSearch 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.

View original on GitHub ↗

This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗