MCP server connects with hasTools:true but tool not available via ToolSearch or direct invocation

Resolved 💬 4 comments Opened Feb 11, 2026 by vipulchhajer Closed Feb 14, 2026

Summary

An MCP server (superpowers-chrome) connects successfully and reports hasTools: true, but its tool (use_browser) is never surfaced — neither via ToolSearch (deferred tool lookup) nor via direct invocation (mcp__chrome__use_browser).

Environment

  • Claude Code: 2.1.39
  • macOS Darwin 24.6.0
  • MCP server: superpowers-chrome v1.6.1 (chrome-mcp-server v1.0.0)
  • MCP SDK: @modelcontextprotocol/sdk ^1.6.1

Reproduction

  1. Add an MCP server to .mcp.json:
{
  "chrome": {
    "type": "stdio",
    "command": "node",
    "args": ["/path/to/superpowers-chrome/mcp/dist/index.js"]
  }
}
  1. Add "chrome" to enabledMcpjsonServers in project settings.local.json
  1. Start Claude Code. Run claude mcp list — server shows ✓ Connected
  1. Try to use the tool:
  • ToolSearch with queries use_browser, +chrome, select:mcp__chrome__use_browser — all return "No matching deferred tools found"
  • Direct invocation of mcp__chrome__use_browser — "No such tool available"

Debug log evidence

The server connects fine and reports tools:

MCP server "chrome": Starting connection with timeout of 30000ms
MCP server "chrome": Successfully connected to stdio server in 76ms
MCP server "chrome": Connection established with capabilities: {"hasTools":true,"hasPrompts":false,"hasResources":false,"serverVersion":{"name":"chrome-mcp-server","version":"1.0.0"}}

But 0 deferred tools get included:

Dynamic tool loading: 0/124 deferred tools included

Raw MCP handshake confirms the tool exists

Manually sending the MCP tools/list request to the server returns the tool correctly:

{"result":{"tools":[{"name":"use_browser","description":"Control persistent Chrome browser...","inputSchema":{...}}]}}

What I've ruled out

  • Enterprise/managed settings: None present (/etc/claude/settings.json and /Library/Application Support/Claude/settings.json don't exist)
  • Tool deny lists: No disallowedTools in any settings file
  • Server enablement: enableAllProjectMcpServers: true is set, and "chrome" is explicitly in enabledMcpjsonServers
  • Plugin conflict: Tried with the superpowers-chrome plugin both enabled and disabled — same result either way
  • Duplicate servers: Tried with only the .mcp.json entry (no plugin) — same result

Expected behavior

mcp__chrome__use_browser should be available as a deferred tool and findable via ToolSearch.

Actual behavior

Server connects but tool is invisible to the session.

View original on GitHub ↗

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