mcp - 客户端连接 sse 和 stdio 的区别
1、构建 stdio 客户端
注意事项:
- 客户端,以子进程方式启动服务端。不能在同一个进程内(否则,会串流)
- 服务端,不能开启控制台日志(否则,可能会污染协议流)
使用 channel 属性(默认是 sse)与 serverParameters 属性,进行构建
//连接一个 java 的服务
McpClientProvider clientProvider1 = McpClientProvider.builder()
.channel(McpChannel.STDIO) //表示使用 stdio
.serverParameters(McpServerParameters.builder("java")
.args("-jar", "/data/demo/target/demo-mcp-stdio.jar")
.build())
.build();
//连接一下 node.js 的服务
McpClientProvider clientProvider2 = McpClientProvider.builder()
.channel(McpChannel.STDIO) //表示使用 stdio
.serverParameters(McpServerParameters.builder("npx")
.args("/c", "npx.cmd", "-y", "@modelcontextprotocol/server-everything", "dir")
.build())
.build();
2、构建 sse 客户端
主要使用 apiUrl 及 http 相关的属性进行构建。
McpClientProvider clientProvider = McpClientProvider.builder()
.apiUrl("http://localhost:8080/mcp/sse")
.build();