HTTP MCP servers returning 405 on GET health check fail to load tools at session startup
Summary
HTTP MCP servers that return 405 Method Not Allowed on GET requests have their tools silently skipped during session initialization. The health check failure (cosmetic per docs) is actually blocking tool loading entirely.
Environment
- Claude Code version: 2.1.104
- Transport: HTTP (
type: http) - MCP server: Datadog (
https://mcp.datadoghq.com/api/unstable/mcp-server/mcp)
Steps to Reproduce
- Add an HTTP MCP server that only accepts
POST(notGET) — e.g. the official Datadog MCP server:
````
claude mcp add --transport http datadog-mcp "https://mcp.datadoghq.com/api/unstable/mcp-server/mcp?toolsets=all" \
-H "DD-API-KEY: <key>" -H "DD-APPLICATION-KEY: <app-key>"
- Run
claude mcp list— shows✗ Failed to connect - Start a fresh
claudesession - The Datadog MCP tools are not available in the session
Expected Behavior
The health check result should be cosmetic only. Session startup should independently attempt MCP initialization via POST, and if that succeeds (200 OK + mcp-session-id), tools should be loaded.
Actual Behavior
Tools from the server are not loaded into the session. The health check failure (GET → 405) appears to gate tool initialization entirely.
Evidence the Server Works
A manual POST initialize request to the Datadog MCP server returns 200 OK with a valid MCP response and session ID:
HTTP/1.1 200 OK
mcp-session-id: mcp-session-1cb3828c-2381-448b-b175-7859318d3323
content-type: application/json
{"jsonrpc":"2.0","id":1,"result":{"protocolVersion":"2024-11-05","capabilities":{"tools":{"listChanged":true}},...}}
The server is fully compliant with the MCP Streamable HTTP transport spec — it just doesn't respond to GET (which is not required by the spec).
Root Cause Hypothesis
Claude Code's session startup either:
- Uses the health check result to decide whether to attempt initialization, OR
- Uses GET for the initialization request itself (same as the health check)
Either way, a server that is spec-compliant but GET-unfriendly never gets its tools loaded.
Workaround
None currently. claude mcp add has no --skip-health-check flag.
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗