Solon v3.3.1

mcp - 客户端连接 sse 和 stdio 的区别

</> markdown

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();