MCP server shows Connected but tools silently not loaded into session

Resolved 💬 3 comments Opened Mar 24, 2026 by michaelbloom01 Closed Mar 28, 2026

Bug Report

Description

An MCP server (stdio, local binary) consistently shows ✓ Connected via claude mcp list and claude mcp get, and the server correctly responds to JSON-RPC tools/list with 18 tools — but zero tools from this server appear in the session's available tools.

Environment

  • Claude Code version: latest (March 2026)
  • OS: Windows 11 ARM64
  • MCP server: custom Go binary (google-mcp-server.exe), stdio transport

Steps to Reproduce

  1. Configure an MCP server in ~/.claude.json under mcpServers
  2. Start a new Claude Code session
  3. Run claude mcp list — server shows ✓ Connected
  4. Run claude mcp get <name> — shows Connected with correct config
  5. Manually pipe JSON-RPC tools/list to the server binary — returns 18 valid tools
  6. Check deferred tools in session — no tools from this server appear

What I Expected

The 18 tools should appear in the session's deferred tools list and be callable.

What Actually Happened

The server is Connected but its tools are silently dropped. No error message, no warning, no indication anything is wrong. The user has to manually compare the deferred tools list against expected tools to notice.

Impact

  • User spent an entire day (10+ restarts across 9 sessions) trying to debug this
  • Previous hypothesis was tool budget overflow (~160 tool limit), so other MCP servers were removed to make room — but the problem persisted
  • There is no diagnostic output to help users understand why tools aren't loading
  • claude mcp list showing ✓ Connected is actively misleading when tools aren't loaded

Suggestions

  1. Show tool count in claude mcp list output (e.g., ✓ Connected (18 tools) vs ✓ Connected (0 tools))
  2. Warn when a server is connected but zero tools are loaded
  3. Log or surface the reason when tools are dropped (budget exceeded, schema validation failure, etc.)
  4. If there IS a tool budget, make it visible and configurable

🤖 Generated with Claude Code

View original on GitHub ↗

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