使用java8开发mcp server
目前,MCP官网给出的java sdk必须要求java17+以上。然而,使用 SolonMCP,可以基于 java8 开发(像 MVC 的开发风格),比较简单。本文就基于Solon AI MCP 实现一个简单的 MCP Server 入门。
官网java-sdk:For Server Developers - Model Context Protocol
一、SolonMCP 简介
SolonMCP(全称:solon-ai-mcp)是 solon 的一个扩展。支持内嵌到 jfinal,vert.x,springboot2,springboot3 等框架使用。
Maven 主要依赖包:
<dependency><groupId>org.noear</groupId><artifactId>solon-ai-mcp</artifactId><version>3.3.1</version>
</dependency>
solon-ai-mcp:https://solon.noear.org/article/993
二、 编写tools
1、启动类
可以用idea基于solon创建一个初始项目,也可以创建一个空的maven项目开始。
import org.noear.solon.Solon;
import org.noear.solon.annotation.SolonMain;@SolonMain
public class App {public static void main(String[] args) {Solon.start(App.class, args);}
}
2、mcp tools
solon-ai-mcp 支持多端点的架构,可以手动构建端点,或者注解构建端点(@McpServerEndpoint
)。再使用 @ToolMapping
注解编写工具,就像开发 MVC 一样简单和熟悉。
- @ToolMapping 注解标记这个方法是一个工具映射,通过 description 属性告诉大模型这个工具是做什么的,其实就是提示词,大模型会根据自己的理解调用这个工具,所以这个描述很重要。
- @Param:工具调用时需要传什么参数
import org.noear.solon.ai.annotation.ToolMapping;
import org.noear.solon.ai.mcp.server.annotation.McpServerEndpoint;
import org.noear.solon.annotation.Param;import java.sql.SQLException;@McpServerEndpoint(sseEndpoint = "/sse/mcp")
public class McpController {@ToolMapping(description = "查询手机号归属地") public String getPhone(@Param(name = "phone", description = "手机号") String phone) {return "手机号归属地:北京";}@ToolMapping(description = "查询IP归属地")public String getIp(@Param(name = "ip", description = "IP") String ip) {return "IP归属地:上海";}
}
配置下配置文件里的端口既可以启动服务了,本地可以运行启动类,如下就说明启动成功。
3、单测测试
@SolonTest(App.class)
public class HelloTest extends HttpTester {@Testpublic void testmcp() throws IOException {McpClientToolProvider clientToolProvider = McpClientToolProvider.builder().apiUrl("http://localhost:8080/sse/mcp").build();String rst = clientToolProvider.callToolAsText("getPhone", Maps.of("phone", "11111112222"));log.warn(rst);}
如下说明测试成功
4、客户端测试
使用cursor等客户端连接测试。
首先启动服务,服务可以本地启动,也可以部署到一个服务器上运行,客户端上配置 http://ip:端口/sse/mcp即可