Skip to content

fix: return HTTP 404 for METHOD_NOT_FOUND in stateless transport (#1072) - #1083

Open
elang2 wants to merge 1 commit into
modelcontextprotocol:mainfrom
elang2:fix/server-discover-500
Open

fix: return HTTP 404 for METHOD_NOT_FOUND in stateless transport (#1072)#1083
elang2 wants to merge 1 commit into
modelcontextprotocol:mainfrom
elang2:fix/server-discover-500

Conversation

@elang2

@elang2 elang2 commented Aug 9, 2026

Copy link
Copy Markdown

Summary

The 2026-07-28 Streamable HTTP spec requires that an unsupported RPC method return HTTP 404 with JSON-RPC error -32601, not HTTP 500. Right now HttpServletStatelessServerTransport returns 200 for everything, including unrecognized methods like server/discover. OpenAI's hosted MCP client hits this path and surfaces a 424 external_connector_error to users.

This PR adds a mapJsonRpcErrorToHttpStatus() helper that maps -32601 to 404. It's a small, isolated change that unblocks production traffic without waiting for full 2026-07-28 lifecycle support tracked in #1011.

Test plan

  • Updated testMissingHandlerReturnsMethodNotFoundError to verify HTTP 404 status
  • Added testUnknownMethodReturnsHttp404WithMethodNotFoundError for server/discover specifically
  • All 340 mcp-core tests pass
  • All 937 mcp-test integration tests pass (BUILD SUCCESS)

Fixes #1072

…elcontextprotocol#1072)

The HttpServletStatelessServerTransport was returning HTTP 200 for all
JSON-RPC responses, including METHOD_NOT_FOUND errors. Per the MCP
Streamable HTTP specification (2026-07-28), an unrecognized method must
return HTTP 404 with JSON-RPC error code -32601, not HTTP 500 or 200.

This caused OpenAI's hosted MCP client to receive HTTP 500 (or 200 with
an error body it could not process) when sending server/discover requests,
resulting in HTTP 424 external_connector_error from the Responses API.

The fix maps METHOD_NOT_FOUND (-32601) responses to HTTP 404 at the
transport layer. All other JSON-RPC errors continue to use HTTP 200
per standard JSON-RPC conventions.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[2026-07-28] Java SDK 2.0.0 returns HTTP 500 for OpenAI server/discover requests

1 participant