Custom MCP servers show as Connected but tools not indexed in ToolSearch/deferred tools
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:
mcp1.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
- Configure all 3 servers in
~/.claude.jsonmcpServerssection - Start Claude Code
- Run
claude mcp list— all 3 show "Connected" - In conversation, use
ToolSearchto find tools:
meta-adstools: Found (e.g.,mcp__meta-ads__get_ad_accounts)facebook-pagestools: Not found — nomcp__facebook-pages__*tools in deferred listinstagramtools: Not found — nomcp__instagram__*tools in deferred list
- 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
instagramserver 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-pagesserver uses FastMCP withmcp runwrapper;instagramuses the low-levelmcp.server.ServerAPI — both fail equally - The
meta-adsserver usesuvxfor 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 likeclaude_ai_AWS_Marketplace, andmeta-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": "..." }
}This issue has 4 comments on GitHub. Read the full discussion on GitHub ↗