diff --git a/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java b/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java index 8598e316..e866e097 100644 --- a/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java @@ -14,6 +14,8 @@ import java.util.function.Consumer; import java.util.function.Function; +import io.modelcontextprotocol.spec.McpSchema.ErrorCodes; +import io.modelcontextprotocol.spec.McpSchema.JSONRPCResponse.JSONRPCError; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -424,8 +426,11 @@ public Mono sendMessage(JSONRPCMessage message) { .flatMap(body -> sendHttpPost(messageEndpointUri, body).handle((response, sink) -> { if (response.statusCode() != 200 && response.statusCode() != 201 && response.statusCode() != 202 && response.statusCode() != 206) { - sink.error(new RuntimeException("Sending message failed with a non-OK HTTP code: " - + response.statusCode() + " - " + response.body())); + sink.error( + new McpError(new JSONRPCError( + ErrorCodes.INVALID_REQUEST, "Sending message failed with a non-OK HTTP code: " + + response.statusCode() + " - " + response.body(), + response.statusCode()))); } else { sink.next(response);