Skip to content

Commit 2a7aca9

Browse files
committed
support streamable http
1 parent 34b3744 commit 2a7aca9

File tree

4 files changed

+22
-4
lines changed

4 files changed

+22
-4
lines changed

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
<maven.compiler.source>21</maven.compiler.source>
2222
<maven.compiler.target>21</maven.compiler.target>
2323
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
24-
<spring-ai.version>1.1.0</spring-ai.version>
24+
<spring-ai.version>1.1.1</spring-ai.version>
2525
<chat-agent-ui.version>0.14.0</chat-agent-ui.version>
2626
<llm-agent-spec.version>0.4.0</llm-agent-spec.version>
2727
</properties>
@@ -73,7 +73,7 @@
7373
<dependency>
7474
<groupId>io.modelcontextprotocol.sdk</groupId>
7575
<artifactId>mcp-bom</artifactId>
76-
<version>0.16.0</version>
76+
<version>0.17.0</version>
7777
<type>pom</type>
7878
<scope>import</scope>
7979
</dependency>

src/main/java/com/javaaidev/easymcpclient/client/McpClientService.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@
33
import com.javaaidev.easymcpclient.config.mcp.NamedMcpServer;
44
import com.javaaidev.easymcpclient.config.mcp.SseServer;
55
import com.javaaidev.easymcpclient.config.mcp.StdioServer;
6+
import com.javaaidev.easymcpclient.config.mcp.StreamableServer;
67
import io.modelcontextprotocol.client.McpClient;
78
import io.modelcontextprotocol.client.transport.HttpClientSseClientTransport;
9+
import io.modelcontextprotocol.client.transport.HttpClientStreamableHttpTransport;
810
import io.modelcontextprotocol.client.transport.ServerParameters;
911
import io.modelcontextprotocol.client.transport.StdioClientTransport;
1012
import io.modelcontextprotocol.json.McpJsonMapper;
@@ -42,6 +44,8 @@ public List<NamedMcpSyncClient> connect(Collection<NamedMcpServer> servers) {
4244
return connect(name, stdioServer);
4345
} else if (server instanceof SseServer sseServer) {
4446
return connect(name, sseServer);
47+
} else if (server instanceof StreamableServer streamableServer) {
48+
return connect(name, streamableServer);
4549
}
4650
return Optional.<NamedMcpSyncClient>empty();
4751
}).flatMap(Optional::stream).toList();
@@ -51,6 +55,11 @@ private Optional<NamedMcpSyncClient> connect(String name, SseServer server) {
5155
return doConnect(name, HttpClientSseClientTransport.builder(server.url()).build());
5256
}
5357

58+
private Optional<NamedMcpSyncClient> connect(String name, StreamableServer server) {
59+
return doConnect(name, HttpClientStreamableHttpTransport.builder(server.url()).build());
60+
}
61+
62+
5463
private Optional<NamedMcpSyncClient> connect(String name, StdioServer server) {
5564
return doConnect(name, new StdioClientTransport(
5665
ServerParameters.builder(server.command())

src/main/java/com/javaaidev/easymcpclient/config/mcp/McpServer.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,18 @@
66
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY, property = "type")
77
@JsonSubTypes({
88
@JsonSubTypes.Type(value = SseServer.class, name = "sse"),
9-
@JsonSubTypes.Type(value = StdioServer.class, name = "stdio")})
10-
public sealed interface McpServer permits SseServer, StdioServer {
9+
@JsonSubTypes.Type(value = StdioServer.class, name = "stdio"),
10+
@JsonSubTypes.Type(value = StreamableServer.class, name = "streamable"),
11+
})
12+
public sealed interface McpServer permits SseServer, StdioServer, StreamableServer {
1113

1214
default String type() {
1315
if (this instanceof SseServer) {
1416
return "sse";
1517
} else if (this instanceof StdioServer) {
1618
return "stdio";
19+
} else if (this instanceof StreamableServer) {
20+
return "streamable";
1721
}
1822
throw new IllegalArgumentException("Unknown server type: " + this);
1923
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.javaaidev.easymcpclient.config.mcp;
2+
3+
public record StreamableServer(String url) implements McpServer {
4+
5+
}

0 commit comments

Comments
 (0)