mcp - 通讯方式的代理转换效果
(v3.2.1 后支持)
上面讲过,服务端支持接口实现的方式。这种方式,可以实现代理转换的效果。
1、stdio mcp-server 通过代理,转为 sse mcp-server
支持 java 包
@McpServerEndpoint(sseEndpoint="/mcp/sse")
public class McpStdioToSseServerDemo1 implements ToolProvider {
McpClientProvider stdioToolProvider = McpClientProvider.builder()
.channel(McpChannel.STDIO) //表示使用 stdio
.serverParameters(ServerParameters.builder("java")
.args("-jar", "/Users/noear/Downloads/demo-mcp-stdio/target/demo-mcp-stdio.jar")
.build())
.build();
@Override
public Collection<FunctionTool> getTools() {
return stdioToolProvider.getTools();
}
}
支持 node.js 包
@McpServerEndpoint(sseEndpoint="/case3/sse")
public class McpStdioToSseServerDemo2 implements ToolProvider {
McpClientProvider stdioToolProvider = McpClientProvider.builder()
.channel(McpChannel.STDIO) //表示使用 stdio
.serverParameters(ServerParameters.builder("npx")
.args("-y", "@gitee/mcp-gitee@latest")
.addEnvVar("GITEE_API_BASE", "https://gitee.com/api/v5")
.addEnvVar("GITEE_ACCESS_TOKEN", "<your personal access token>")
.build())
.build();
@Override
public Collection<FunctionTool> getTools() {
return stdioToolProvider.getTools();
}
}
不限制,任何语言或环境。
2、sse mcp-server 通过代理,转为 stdio mcp-server
@McpServerEndpoint(channel = McpChannel.STDIO)
public class McpSseToStdioServerDemo implements ToolProvider {
McpClientProvider sseToolProvider = McpClientProvider.builder()
.apiUrl("http://localhost:8081/sse")
.build();
@Override
public Collection<FunctionTool> getTools() {
return sseToolProvider.getTools();
}
}