Handle 202 Accepted response in HTTP client
Per the Streamable HTTP spec, a server returns 202 Accepted with no body as the ACK for a JSON-RPC notification or response. The client previously errored on 202 because it fell through Content-Type dispatch. Short-circuit to return nil before Content-Type handling so fire-and-forget messages (e.g. notifications/initialized) no longer raise. https://modelcontextprotocol.io/specification/2025-11-25/basic/transports#sending-messages-to-the-server Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
5c0fee309f
commit
cfc42dbfe7
1 changed files with 20 additions and 1 deletions
|
|
@ -369,6 +369,21 @@ module MCP
|
|||
assert_equal("Invalid request", response.dig("error", "message"))
|
||||
end
|
||||
|
||||
def test_send_request_returns_nil_for_202_accepted_response
|
||||
request = {
|
||||
jsonrpc: "2.0",
|
||||
method: "notifications/initialized",
|
||||
}
|
||||
|
||||
stub_request(:post, url)
|
||||
.with(body: request.to_json)
|
||||
.to_return(status: 202, body: "")
|
||||
|
||||
response = client.send_request(request: request)
|
||||
|
||||
assert_nil(response)
|
||||
end
|
||||
|
||||
def test_send_request_raises_error_for_sse_without_response
|
||||
request = {
|
||||
jsonrpc: "2.0",
|
||||
|
|
|
|||
Loading…
Reference in a new issue