solon-ai-mcp 是 solon-ai 的扩展特性。提供 mcp 协议的支持。通过它,可以方便的发布 Tool Service,方便的使用 Tool Service。
引入依赖包
xml
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai-mcp</artifactId>
<version>3.1.3-SNAPSHOT</version>
</dependency>
服务端演示(发布工具服务)
引入依赖包后,服务端默认不会启用,需要通过配置启用。
yaml
solon.ai.mcp.server:
enabled: true
sseEndpoint: "/mcp/sse"
启用 mcp server 后,所有组件的 @FunctionMapping
方法,会自动成为 mcp server 的 tool 服务。
java
@Component
public class McpServerTool {
@FunctionMapping(description = "查询天气预报")
public String getWeather(@FunctionParam(description = "城市位置") String location) {
return "晴,14度";
}
}
public class McpServerApp {
public static void main(String[] args) {
Solon.start(McpServerApp.class, args);
}
}
客户端演示(使用工具服务)
客户端可以使用原生的 modelcontextprotocol 接口,也可以使用 McpClientWrapper (包装简化过)
- 直接调用
java
public void case1(){
McpClientWrapper mcpClient = new McpClientWrapper("http://localhost:8080", "/mcp/sse");
String rst = mcpClient.callToolAsText("getWeather", Map.of("location", "杭州"));
}
- 绑定给模型使用
java
public void case2(){
McpClientWrapper mcpClient = new McpClientWrapper("http://localhost:8080", "/mcp/sse");
ChatModel chatModel = ChatModel.of("http://127.0.0.1:11434/api/chat")
.provider("ollama")
.model("qwen2.5:1.5b")
.build();
ChatResponse resp = chatModel.prompt("杭州今天的天气怎么样?")
.options(options -> {
//转为函数集合用于绑定
options.functionAdd(mcpClient.toFunctions());
})
.call();
}
项目仓库地址
- gitee:https://gitee.com/opensolon/solon-ai
- gitcode: https://gitcode.com/opensolon/solon-ai
- github:https://github.com/opensolon/solon-ai