claude-code - 💡(How to fix) Fix Plugin MCP server connects but tools/list response not surfaced to model (Windows) [1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
anthropics/claude-code#55491Fetched 2026-05-03 04:51:59
View on GitHub
Comments
1
Participants
2
Timeline
6
Reactions
0
Timeline (top)
labeled ×5commented ×1

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.

Root Cause

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.

Code Example

$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>

---

{"mcpServers":{"<server>":{"command":"python3","args":["${CLAUDE_PLUGIN_ROOT}/hooks/launcher.py","-m","<server_module>"]}}}
RAW_BUFFERClick to expand / collapse

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):
    {"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.

extent analysis

TL;DR

The issue is likely due to Claude Code not properly registering the tools returned by the MCP server into the session's deferred-tool catalog.

Guidance

  • Verify that the tools/list response from the MCP server is being received and processed by Claude Code, and that the tools are being extracted correctly from the response.
  • Check the implementation of ListMcpResourcesTool to ensure it is correctly handling the tool catalog and registering the tools with the model.
  • Investigate the possibility that the tools are being filtered out or ignored due to some condition in the code, such as a mismatch in the tool names or a configuration issue.
  • Review the plugin's .mcp.json file and the hooks/hooks.json file to ensure that they are correctly configured and that the MCP server is properly registered.

Example

No code snippet is provided as the issue does not contain enough information to create a specific example.

Notes

The issue seems to be related to the integration between Claude Code and the MCP server, and the fact that the server is connecting and responding correctly suggests that the problem lies in the code that handles the tool catalog.

Recommendation

Apply workaround: Investigate and fix the tool registration issue in the Claude Code implementation, as the MCP server seems to be functioning correctly.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING