solon-ai-mcp [预览]
<dependency>
<groupId>org.noear</groupId>
<artifactId>solon-ai-mcp</artifactId>
</dependency>
1、描述
(v3.2.0 后支持)solon-ai 的扩展插件,提供 mcp 协议支持。支持完整的 MCP 能力开发。
- MCP-Server,服务端
- MCP-Client,客户端
- MCP-Proxy,代理(stdio 与 sse 相互代理转换)
学习参考 《教程 / Solon AI 开发》
2、服务端示例(发布工具服务)
@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) {
Solon.start(McpServerApp.class, args);
}
}
3、客户端示例(使用工具服务)
- 直接调用
public void case1(){
McpClientProvider mcpClient = new McpClientProvider("http://localhost:8080/mcp/sse");
String rst = mcpClient.callToolAsText("getWeather", Map.of("location", "杭州")).getContent();
}
- 绑定给模型使用(结合配置与注入)
solon.ai:
chat:
demo:
apiUrl: "http://127.0.0.1:11434/api/chat"
provider: "ollama"
model: "qwen2.5:1.5b"
mcp:
client:
demo:
apiUrl: "http://localhost:8080/mcp/sse"
gitee:
apiUrl: "http://ai.gitee.demo/mcp/sse"
@Configuration
public class McpClientConfig {
@Bean
public McpClientProvider clientWrapper(@Inject("${solon.ai.mcp.client.demo}") McpClientProvider client) {
return client;
}
@Bean
public ChatModel chatModel(@Inject("${solon.ai.chat.demo}") ChatConfig chatConfig, McpClientProvider toolProvider) {
return ChatModel.of(chatConfig)
.defaultToolsAdd(toolProvider.getTools()) //添加默认工具
.build();
}
@Bean
public void case2( McpClientProvider toolProvider, ChatModel chatModel) {
ChatResponse resp = chatModel.prompt("杭州今天的天气怎么样?")
.options(options -> {
//转为工具集合用于绑定 //如果有 defaultToolsAdd,这里就不需要了
//options.toolsAdd(toolProvider.getTools());
//获取特定工具用于绑定
//options.toolsAdd(toolProvider.getTool("getWeather"));
})
.call();
}
}