Plugin MCP server connects but tools/list response not surfaced to model (Windows)

Resolved 💬 3 comments Opened May 2, 2026 by blockhead22 Closed May 5, 2026

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

  1. Install a plugin that bundles a .mcp.json declaring a stdio MCP server.
  2. Enable the plugin in settings.
  3. Cold-start Claude Code.
  4. Run /mcp -> server reports plugin:<plugin>:<server> ... ✓ Connected.
  5. 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) in
tools/list.result.tools. Stderr confirms a single
Processing 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.

View original on GitHub ↗

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