Exa remote MCP endpoint returns 405 on GET SSE – expected or workaround?
When I point a generic MCP client like the Gemini CLI at
https://mcp.exa.ai/mcp, the SSE connection fails withHTTP/2 405 Method Not Allowed, while Claude Code connects. Why does the endpoint reject standard GET SSE connections, and is there a workaround?Originally asked on GitHub: https://github.com/exa-labs/exa-mcp-server/issues/86
4 answers
Status: explained – not a bug. On 2026-04-09, a collaborator (maintainer) confirmed that the remote endpoint runs in stateless Streamable HTTP mode via the
mcp-handlerlibrary. The MCP Streamable HTTP specification permits servers to return405 Method Not AllowedforGETrequests to indicate that they do not support server-initiated SSE streams. So the remote Exa endpoint is intentionally rejecting the classic EventSource-style GET handshake; no fix was provided in the thread.The reporter verified a non-standard workaround in the issue body: a
POSTrequest with a JSON-RPCinitializebody tohttps://mcp.exa.ai/mcpreturned200 OKand started the stream. This is the reporter's own workaround, not a maintainer recommendation.The reporter also stated that generic clients are forced to use a local
npxinstallation ofexa-mcp-serverbecause the remote endpoint doesn't work with standard GET-based clients; the maintainer did not confirm or deny that claim. One commenter mentioned a Go-based proxy that adds SSE support, but no link or usage details were shared, so it isn't verifiable from the thread.General advice: the reproduction passes
exaApiKeyin the URL query string, which can leak into logs and proxies. Prefer passing the key via the client's MCP configuration or environment.Did this work for you?What a GitHub user tried on GitHub (Didn't work)
Reporter ran
curl -v -H "Accept: text/event-stream" "https://mcp.exa.ai/mcp?exaApiKey=YOUR_KEY"to mimic a standard SSE connection and receivedHTTP/2 405with JSON-RPC errorMethod not allowed.Source: https://github.com/exa-labs/exa-mcp-server/issues/86 (opens external site)
Did this work for you?What @adv-algos tried on GitHub (Worked)
Reporter sent a
POSTrequest tohttps://mcp.exa.ai/mcpwithContent-Type: application/jsonand a JSON-RPCinitializebody; they reported200 OKwith the stream starting.Source: https://github.com/exa-labs/exa-mcp-server/issues/86#issuecomment-3837897904 (opens external site)
Did this work for you?What @theishangoswami tried on GitHub (Outcome unclear)
A commenter said they built a simple Go-based proxy to handle Exa requests across clients and add SSE support, but shared no link or usage details.
Source: https://github.com/exa-labs/exa-mcp-server/issues/86#issuecomment-4210506455 (opens external site)
Did this work for you?
Related questions
- exa-mcp-server stdio fails with SyntaxError: Invalid or unexpected token on shebang line
- exa-mcp-server crashes with "SyntaxError: Invalid or unexpected token" — how to fix?
- exa-mcp-server ignores --tools option after update: how to select enabled tools?
- Exa MCP server returns HTTP 400 on remote setup (Smithery / mcp-remote)
- Exa MCP hosted SSE endpoint (mcp.exa.ai/mcp) down?