这是一个大型代码实验场(playground)仓库中的一个子项目,专门用于演示如何构建一个基于Model Context Protocol (MCP) 的服务器,提供外部工具给大语言模型(LLM)客户端使用。该示例实现了天气预报和警报查询的功能,并通过Spring AI框架将其注册为LLM可调用的工具。
主要功能点:
- 工具托管与注册: 将天气查询功能 ('WeatherService') 通过Spring AI的'@Tool'注解自动注册为MCP工具。
- 天气数据接口: 提供通过经纬度获取天气预报,以及通过美国州码获取天气警报的工具。
- MCP协议支持: 利用Spring AI和Model Context Protocol库处理LLM客户端的JSON-RPC请求(如工具调用)。
- 会话管理与能力声明: 服务器负责管理与客户端的会话,并声明可用的工具列表。
- 多种传输协议 (Potential): 虽然示例客户端使用SSE,但底层库支持多种MCP传输协议。
安装步骤:
- 克隆整个GitHub仓库到本地。
- 确保你安装了Java开发工具包 (JDK) 21或更高版本以及Apache Maven。
- 打开命令行终端,进入仓库的 'java-playground' 目录。
服务器配置(供MCP客户端参考):
MCP客户端需要配置服务器的启动方式才能与其建立连接。对于这个示例服务器,配置信息应包含启动服务器进程所需的命令和参数。一个典型的MCP客户端配置可能如下所示(注意:这不是实际运行的代码块,只是配置说明):
{ "serverName": "WeatherMCP", "description": "Provides weather forecast and alerts as MCP tools.", "command": "mvn", // 启动命令 "args": [ "spring-boot:run", // Maven插件目标 "-DskipTests" // 跳过测试,加快启动 ], "workingDirectory": "/path/to/your/cloned/repo/java-playground", // 替换为你的实际路径 "transport": { "type": "sse", // 传输协议类型,示例客户端使用SSE over HTTP "url": "http://127.0.0.1:8080" // 服务器监听地址和端口 } // 其他可能的配置,如环境变量、超时等 }
客户端通过执行 'command' 和 'args' 启动服务器进程,然后使用 'transport' 中指定的方式与服务器建立连接(默认为 'http://127.0.0.1:8080' 使用SSE)。
基本使用方法:
- 按照安装步骤进入 'java-playground' 目录。
- 使用以下命令启动MCP服务器:
服务器启动后,会打印日志信息,表明其正在运行并注册了天气工具。mvn spring-boot:run -DskipTests - 使用任何兼容Model Context Protocol的LLM客户端连接到 'http://127.0.0.1:8080' (默认端口和协议)。
- 客户端可以发送请求来:
- 初始化会话 ('initialize' 方法)
- 检查服务器状态 ('ping' 方法)
- 获取可用工具列表 ('listTools' 方法),会看到 'getWeatherForecastByLocation' 和 'getAlerts' 工具。
- 调用工具 ('callTool' 方法),例如调用 'getWeatherForecastByLocation' 并提供 'latitude' 和 'longitude' 参数,或调用 'getAlerts' 并提供 'state' 参数 (例如 "NY")。
该示例代码中也包含了一个简单的MCP客户端 ('ClientDemo.java'),在服务器启动后会自动运行以演示如何调用这些工具。
信息
分类
网页与API