mcp - 发布 Tool 服务,使用 Tool 服务
在 Hello World 的基础上,再构建一个真实的场景(天气预报的工具服务)
1、服务端(mcp-server)示例(发布工具服务)
跟在 Solon AI 里开发 Tool Call 很像。只需要在工具类上添加 @McpServerEndpoint
注解,就变成了 MPC 服务了(可以被“跨进程”或“远程”使用)。
@McpServerEndpoint(sseEndpoint = "/mcp/sse")
public class McpServerTool {
//
// 建议开启编译参数:-parameters (否则,要再配置参数的 name)
//
@ToolMapping(description = "查询天气预报")
public String getWeather(@Param(description = "城市位置") String location) {
return "晴,14度";
}
}
public class McpServerApp {
public static void main(String[] args) {
//启动时,会扫描到 McpServerTool 类,并转为真实的 Mcp 服务。
Solon.start(McpServerApp.class, args);
}
}
比如,这是国家气象台,提供的一个天气 mcp tool 服务。就可以被各种 AI 应用集成。
2、客户端(mcp-client)示例(使用工具服务)
使用 McpClientProvider 可以快速使用工具服务。(也可以使用第三方的工具,或平台)
- 直接调用(测试场景)
public void case1() {
McpClientProvider clientProvider = McpClientProvider.builder()
.apiUrl("http://localhost:8080/mcp/sse")
.build();
String rst = clientProvider.callToolAsText("getWeather", Map.of("location", "杭州"))
.getContent();
}
- 集成到大模型使用(应用场景)
在 AI 应用里,可以快速集成上面国家气象台的天气 mcp tool 服务。
public void case2() {
McpClientProvider clientProvider = McpClientProvider.builder()
.apiUrl("http://localhost:8080/mcp/sse")
.build();
ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat")
.provider("ollama")
.model("qwen2.5:1.5b")
.defaultToolsAdd(clientProvider) //添加为默认工具。和本地的 Tool 使用一样。
.build();
String rst = chatModel.prompt("杭州今天的天气怎么样?")
.call()
.getMessage()
.getContent();
}
3、MCP 之于 AI 应用开发
- 以前调用第三方接口,我们需要先封装成本地的 Tool 规范,再给 ChatModel。
- 现在,第三方提供 Mcp Tool 服务(通过 MCP 协议)。可以直接整合给 ChatModel 用了。
- 再进一步的话,能过“配置”就可以使用第三方的 Mcp Tool 服务