[BUG] stdio MCP servers show "Connected" but tools never register in deferred tools list

Resolved 💬 5 comments Opened Apr 2, 2026 by SethVGC Closed May 23, 2026

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?

Environment:

  • Claude Code v2.1.90
  • macOS (Darwin 25.4.0)

Description:

Custom stdio MCP servers defined in .mcp.json connect successfully but their tools never appear in the session's deferred tools list, making them uncallable.

Verified the servers work correctly outside Claude Code:

Manually piping JSON-RPC initialize + notifications/initialized + tools/list to the same server process returns a valid response with all tools. The tools/call method also works and returns data. The MCP protocol
handshake is not the issue.

Affected: All stdio servers using bash wrapper scripts (tested with shopify-mcp@latest and mcp-node-mssql). Reproduced across 10+ session restarts.

Not affected: HTTP-based MCP servers (Jira, Slack) and built-in plugins (context7) register their tools normally.

Workaround: Calling the MCP servers directly via bash process substitution, handling the JSON-RPC handshake manually, and parsing the response.

What Should Happen?

Tools exposed by stdio MCP servers should appear in the deferred tools list and be callable within the session, the same way HTTP-based MCP servers and built-in plugins register their
tools. If claude mcp list shows a server as "Connected," its tools should be available.

Error Messages/Logs

Steps to Reproduce

  1. Define stdio MCP servers in project .mcp.json:

{
"mcpServers": {
"my-server": {
"type": "stdio",
"command": "bash",
"args": ["/path/to/wrapper.sh"]
}
}
}

  1. The wrapper script runs npx -y <mcp-package> via exec
  2. Start Claude Code
  3. claude mcp list shows the server as ✓ Connected
  4. Search deferred tools — zero tools from that server appear
  5. Restarting Claude Code does not fix it

Claude Model

Opus

Is this a regression?

I don't know

Last Working Version

_No response_

Claude Code Version

v2.1.90

Platform

Anthropic API

Operating System

macOS

Terminal/Shell

Other

Additional Information

_No response_

View original on GitHub ↗

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