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 99cf2a625..6005c4496 100644 --- a/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java @@ -420,12 +420,15 @@ public Mono sendMessage(JSONRPCMessage message) { .build(); return Mono.fromFuture( - httpClient.sendAsync(request, HttpResponse.BodyHandlers.discarding()).thenAccept(response -> { - if (response.statusCode() != 200 && response.statusCode() != 201 && response.statusCode() != 202 - && response.statusCode() != 206) { - logger.error("Error sending message: {}", response.statusCode()); - } - })); + httpClient.sendAsync(request, HttpResponse.BodyHandlers.discarding()) + .thenCompose(response -> { + int status = response.statusCode(); + if (status != 200 && status != 201 && status != 202 && status != 206) { + return CompletableFuture.failedFuture(new McpError("Error sending message: " + status)); + } + return CompletableFuture.completedFuture(null); + }) + ); } catch (IOException e) { if (!isClosing) {