Open
Description
Because the implementation of java mcp sdk does not handle the problem of messageEndpoint returning CompleteMessageEndpoint URI when splicing messageEndpoint and base URL, it simply splices, resulting in the phenomenon of http://localhost/mcphttp://localhost/mcp/message.
Here are the references:
https://github.com/modelcontextprotocol/java-sdk/releases/tag/v0.8.1
public Mono<Void> sendMessage(McpSchema.JSONRPCMessage message) {
if (this.isClosing) {
return Mono.empty();
} else {
try {
if (!this.closeLatch.await(10L, TimeUnit.SECONDS)) {
return Mono.error(new McpError("Failed to wait for the message endpoint"));
}
} catch (InterruptedException var5) {
return Mono.error(new McpError("Failed to wait for the message endpoint"));
}
String endpoint = (String)this.messageEndpoint.get();
if (endpoint == null) {
return Mono.error(new McpError("No message endpoint available"));
} else {
try {
String jsonText = this.objectMapper.writeValueAsString(message);
HttpRequest request = HttpRequest.newBuilder().uri(URI.create(this.baseUri + endpoint)).header("Content-Type", "application/json").POST(BodyPublishers.ofString(jsonText)).build();
return Mono.fromFuture(this.httpClient.sendAsync(request, BodyHandlers.discarding()).thenAccept((response) -> {
if (response.statusCode() != 200 && response.statusCode() != 201 && response.statusCode() != 202 && response.statusCode() != 206) {
logger.error("Error sending message: {}", response.statusCode());
}
}));
} catch (IOException var6) {
return !this.isClosing ? Mono.error(new RuntimeException("Failed to serialize message", var6)) : Mono.empty();
}
}
}
}
Metadata
Metadata
Assignees
Labels
No labels