Custom MCP servers show as Connected but tools not indexed in ToolSearch/deferred tools

Resolved 💬 4 comments Opened Feb 16, 2026 by kpfitzgerald Closed Mar 20, 2026

Bug Description

Custom stdio MCP servers connect successfully (confirmed via claude mcp list) but their tools are not indexed in Claude Code's deferred tools system, making them uncallable during conversations.

Environment

  • Claude Code version: Latest (as of Feb 16, 2026)
  • OS: WSL2 (Ubuntu) on Windows — Linux 6.6.87.2-microsoft-standard-WSL2
  • MCP SDK version: mcp 1.26.0 (Python)

Reproduction

I have 3 custom Meta/Facebook MCP servers configured in ~/.claude.json under mcpServers:

| Server | Type | Framework | Tools | Status |
|--------|------|-----------|-------|--------|
| meta-ads | stdio (uvx) | Custom Python (low-level MCP Server) | 29 | Works — tools appear in ToolSearch |
| facebook-pages | stdio (uv run ... mcp run server.py) | FastMCP (mcp.server.fastmcp) | 30 | Broken — connected but tools missing |
| instagram | stdio (bash -c "cd ... && exec python -m ...") | Low-level MCP Server (mcp.server.Server) | 10 | Broken — connected but tools missing |

Steps

  1. Configure all 3 servers in ~/.claude.json mcpServers section
  2. Start Claude Code
  3. Run claude mcp list — all 3 show "Connected"
  4. In conversation, use ToolSearch to find tools:
  • meta-ads tools: Found (e.g., mcp__meta-ads__get_ad_accounts)
  • facebook-pages tools: Not found — no mcp__facebook-pages__* tools in deferred list
  • instagram tools: Not found — no mcp__instagram__* tools in deferred list
  1. Direct select:mcp__instagram__get_profile_info — returns "No matching deferred tools found"

Expected Behavior

All 3 servers' tools should appear in the deferred tools index and be callable, since all 3 are connected.

Actual Behavior

Only meta-ads tools are indexed. The other two servers connect and respond to health checks, but their tools never appear in ToolSearch or the deferred tools list.

Additional Context

  • All 3 servers work correctly when tested manually (start up, validate tokens, respond to MCP protocol)
  • The instagram server validates an API access token on startup (makes an HTTP call) before entering the MCP stdio loop — this slight delay might cause a race condition with tool indexing
  • The facebook-pages server uses FastMCP with mcp run wrapper; instagram uses the low-level mcp.server.Server API — both fail equally
  • The meta-ads server uses uvx for execution, which is the only difference in launch mechanism from the others
  • The deferred tools list in the system prompt only shows tools from certain servers (official plugins like plugin:github:github, marketplace connectors like claude_ai_AWS_Marketplace, and meta-ads) — custom servers seem to be excluded from indexing

Server Configs (sanitized)

"meta-ads": {
  "type": "stdio",
  "command": "/home/user/.local/bin/uvx",
  "args": ["--from", "/home/user/meta-ads-mcp", "meta-ads-mcp"],
  "env": { "META_APP_ID": "...", "META_APP_SECRET": "...", "META_ACCESS_TOKEN": "..." }
},
"facebook-pages": {
  "type": "stdio",
  "command": "/home/user/.local/bin/uv",
  "args": ["run", "--directory", "/home/user/facebook-mcp-server", "--with", "mcp[cli]", "--with", "requests", "mcp", "run", "/home/user/facebook-mcp-server/server.py"],
  "env": { "FACEBOOK_ACCESS_TOKEN": "...", "FACEBOOK_PAGE_ID": "...", "FACEBOOK_APP_SECRET": "..." }
},
"instagram": {
  "type": "stdio",
  "command": "bash",
  "args": ["-c", "cd /home/user/ig-mcp && exec .venv/bin/python -m src.instagram_mcp_server"],
  "env": { "INSTAGRAM_ACCESS_TOKEN": "...", "FACEBOOK_APP_ID": "...", "FACEBOOK_APP_SECRET": "...", "INSTAGRAM_BUSINESS_ACCOUNT_ID": "..." }
}

View original on GitHub ↗

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