405 Method not allowed on GET /mcp
- Spec
2025-11-25 → 2026-07-28- Evidence
- E2Reproducedarm64
- TypeScript SDK (server)
@modelcontextprotocol/server@2.4.0- Python SDK
mcp@2.3.0- Verified
What it means
Section titled “What it means”The 2026-07-28 Streamable HTTP transport has one endpoint that accepts POST only. The specification says a server that receives GET or DELETE on it should answer 405 Method Not Allowed. A TypeScript SDK v2 server built with createMcpHandler did exactly that:
HTTP/1.1 405 Method Not Allowed{"jsonrpc":"2.0","error":{"code":-32000,"message":"Method not allowed."},"id":null}Servers differ. The Python SDK 2.3.0 answered the same GET with 400 and Bad Request: Missing session ID (see that entry), and a TypeScript server that only registers app.post('/mcp') in Express answered 404.
You opened the endpoint in a browser
Section titled “You opened the endpoint in a browser”A browser sends GET. Seeing 405 there is normal and means the server is running. Test with a real client instead: the Inspector CLI or the curl requests in the SSE migration guide.
The client expects a GET stream
Section titled “The client expects a GET stream”Two kinds of older clients send GET:
- HTTP+SSE clients (2024-11-05). They open
GET /sseand wait for anendpointevent. Point them at a server that still offers SSE, or move the client to Streamable HTTP. - 2025 Streamable HTTP clients that open a standalone
GETstream for server notifications. In 2026-07-28 this is replaced bysubscriptions/listen, a POST request whose response stays open.
If the URL in the client ends in /sse, it is configured for the old transport.
Check it yourself
Section titled “Check it yourself”curl -i http://127.0.0.1:8000/mcpAny of the answers above (405, 400 Missing session ID, 404) means a web server is listening, and the problem is the method or the path, not the network. If curl reports Connection refused, see fetch failed instead. To check the MCP side, send a POST as shown in 415 Unsupported Media Type.
Related
Section titled “Related”Sources
MCPDev is community documentation. It is not affiliated with the Model Context Protocol project or with the vendors of the clients it covers.