From 5fd074417e04247538f6988155f0dad2214867ad Mon Sep 17 00:00:00 2001 From: jookunshuai Date: Fri, 20 Jun 2025 17:11:19 +0800 Subject: [PATCH 1/2] fix: resolve duplicate requests caused by concurrent message sending --- .../io/modelcontextprotocol/client/transport/FlowSseClient.java | 2 +- .../client/transport/HttpClientSseClientTransport.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mcp/src/main/java/io/modelcontextprotocol/client/transport/FlowSseClient.java b/mcp/src/main/java/io/modelcontextprotocol/client/transport/FlowSseClient.java index 50af35c70..c33225704 100644 --- a/mcp/src/main/java/io/modelcontextprotocol/client/transport/FlowSseClient.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/transport/FlowSseClient.java @@ -121,7 +121,7 @@ public FlowSseClient(HttpClient httpClient, HttpRequest.Builder requestBuilder) * @throws RuntimeException if the connection fails with a non-200 status code */ public void subscribe(String url, SseEventHandler eventHandler) { - HttpRequest request = this.requestBuilder.uri(URI.create(url)) + HttpRequest request = this.requestBuilder.copy().uri(URI.create(url)) .header("Accept", "text/event-stream") .header("Cache-Control", "no-cache") .GET() 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..8128ee1ed 100644 --- a/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java @@ -415,7 +415,7 @@ public Mono sendMessage(JSONRPCMessage message) { try { String jsonText = this.objectMapper.writeValueAsString(message); URI requestUri = Utils.resolveUri(baseUri, endpoint); - HttpRequest request = this.requestBuilder.uri(requestUri) + HttpRequest request = this.requestBuilder.copy().uri(requestUri) .POST(HttpRequest.BodyPublishers.ofString(jsonText)) .build(); From 598d7b924c9b180df54b3f17e5837e6053765fb8 Mon Sep 17 00:00:00 2001 From: zhukunshuai Date: Mon, 23 Jun 2025 18:51:39 +0800 Subject: [PATCH 2/2] chore: fix code style --- .../modelcontextprotocol/client/transport/FlowSseClient.java | 3 ++- .../client/transport/HttpClientSseClientTransport.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/mcp/src/main/java/io/modelcontextprotocol/client/transport/FlowSseClient.java b/mcp/src/main/java/io/modelcontextprotocol/client/transport/FlowSseClient.java index c33225704..abfafa551 100644 --- a/mcp/src/main/java/io/modelcontextprotocol/client/transport/FlowSseClient.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/transport/FlowSseClient.java @@ -121,7 +121,8 @@ public FlowSseClient(HttpClient httpClient, HttpRequest.Builder requestBuilder) * @throws RuntimeException if the connection fails with a non-200 status code */ public void subscribe(String url, SseEventHandler eventHandler) { - HttpRequest request = this.requestBuilder.copy().uri(URI.create(url)) + HttpRequest request = this.requestBuilder.copy() + .uri(URI.create(url)) .header("Accept", "text/event-stream") .header("Cache-Control", "no-cache") .GET() 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 8128ee1ed..d951349d1 100644 --- a/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java +++ b/mcp/src/main/java/io/modelcontextprotocol/client/transport/HttpClientSseClientTransport.java @@ -415,7 +415,8 @@ public Mono sendMessage(JSONRPCMessage message) { try { String jsonText = this.objectMapper.writeValueAsString(message); URI requestUri = Utils.resolveUri(baseUri, endpoint); - HttpRequest request = this.requestBuilder.copy().uri(requestUri) + HttpRequest request = this.requestBuilder.copy() + .uri(requestUri) .POST(HttpRequest.BodyPublishers.ofString(jsonText)) .build();