HTTP MCP server tools not exposed to model despite successful connection
Resolved 💬 3 comments Opened Mar 15, 2026 by jgoad Closed Mar 18, 2026
Description
Claude Code connects to an HTTP MCP server (Streamable HTTP transport) successfully — resources load and work correctly — but tools are not exposed to the model. The /mcp UI shows Capabilities: resources with no mention of tools, even though the server advertises "tools": {"listChanged": true} in its capabilities and returns valid tools from tools/list.
Environment
- Claude Code: 2.1.72 and 2.1.76 (tested both)
- macOS Darwin 25.3.0
- MCP server: Custom Streamable HTTP server (FastAPI-based, Python)
Reproduction
- Configure
.mcp.jsonwith an HTTP MCP server:
{
"mcpServers": {
"myserver": {
"type": "http",
"url": "http://myserver.api.localhost/mcp"
}
}
}
- Server responds correctly to all MCP methods:
initialize→ returns{"capabilities": {"tools": {"listChanged": true}, "resources": {...}}, ...}tools/list→ returns 38 valid tools with proper JSON SchemainputSchemaresources/list→ returns 10 resources
- Launch Claude Code — server connects (confirmed via server logs showing POST /mcp requests)
- Expected: Tools appear as
mcp__myserver__*in the model's available tools - Actual: No tools are exposed.
ToolSearchreturns nothing. Direct tool calls fail with "No such tool available"./mcpUI showsCapabilities: resourcesonly.
Key observations
- Resources always work —
ListMcpResourcesToolandReadMcpResourceToolsuccessfully read from the server - Tools work intermittently — in ~1 out of 10 fresh sessions, tools load correctly and work perfectly (including mutations). The other 9 times, they don't appear at all.
- MCP Inspector confirms server is correct —
npx @modelcontextprotocol/inspectorconnects via Streamable HTTP and sees all 38 tools, can invoke them successfully - Not a tool count issue — tested with 2 tools and 38 tools, same behavior
- Not a transport issue — also tested with stdio proxy, same behavior
- Not a version issue — reproduced on both 2.1.72 and 2.1.76
- Not an auth issue — server has no auth requirements, no OAuth endpoints
Server logs during connection
Successful connection pattern (tools don't load):
POST /mcp HTTP/1.1 200 OK # initialize
POST /mcp HTTP/1.1 204 # initialized (notification)
POST /mcp HTTP/1.1 200 OK # tools/list (returns 38 tools!)
POST /mcp HTTP/1.1 200 OK # resources/list
POST /mcp HTTP/1.1 204 # initialized
POST /mcp HTTP/1.1 200 OK # (another request)
The server returns valid tools in the tools/list response, but Claude Code doesn't surface them.
Possibly related
- #4118 —
notifications/tools/list_changedsupport - #13646 — MCP tool list not refreshed on list_changed
- #27142 — Stale session ID caching
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗