Plugin MCP server connects but tools/list response not surfaced to model (Windows)
Summary
A plugin-supplied MCP server connects successfully (/mcp shows ✓ Connected)
and correctly responds to tools/list with its full tool catalog, but those
tools never surface to the model in-session. ListMcpResourcesTool knows the
server by name, yet ToolSearch returns zero matches for any of the server's
tool names.
Environment
- OS: Windows 11 Pro 10.0.26200
- Claude Code: latest (Opus 4.7 / 1M context)
- Plugin enabled in
~/.claude/settings.json - MCP server: stdio, registered via the plugin's
.mcp.json
Reproduction
- Install a plugin that bundles a
.mcp.jsondeclaring a stdio MCP server. - Enable the plugin in settings.
- Cold-start Claude Code.
- Run
/mcp-> server reportsplugin:<plugin>:<server> ... ✓ Connected. - Try to use any of the server's tools — they aren't in the catalog.
ToolSearch queries against the tool names, or select:<tool_name>,
return "No matching deferred tools found".
Evidence the server is fine
I probed the server directly with the same JSON-RPC frames Claude Code would
send (initialize -> notifications/initialized -> tools/list):
$req = @'
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"probe","version":"1"}}}
{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/list"}
'@
$req | & <venv>\python.exe -m <server_module>
The server replies with its full tool list (27 tools in my case) intools/list.result.tools. Stderr confirms a singleProcessing request of type ListToolsRequest log line.
So the server is healthy. Claude Code is connecting to it, but either not
calling tools/list or not registering the returned tools into the session's
deferred-tool catalog.
Other context
- Hooks from the same plugin (
hooks/hooks.json) do load and fire
(SessionStart hook produces its banner). Only the MCP side is broken.
- Plugin
.mcp.json(typical shape):
``json``
{"mcpServers":{"<server>":{"command":"python3","args":["${CLAUDE_PLUGIN_ROOT}/hooks/launcher.py","-m","<server_module>"]}}}
Expected
Tools advertised by a connected plugin MCP server should appear in the
model's tool catalog (typically as mcp__<server>__<tool> or similar).
Actual
Server connects, server replies to tools/list with full tool list, model
sees zero tools.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗