这是一个大型代码实验场(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传输协议。

安装步骤:

  1. 克隆整个GitHub仓库到本地。
  2. 确保你安装了Java开发工具包 (JDK) 21或更高版本以及Apache Maven。
  3. 打开命令行终端,进入仓库的 '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)。

基本使用方法:

  1. 按照安装步骤进入 'java-playground' 目录。
  2. 使用以下命令启动MCP服务器:
    mvn spring-boot:run -DskipTests
    服务器启动后,会打印日志信息,表明其正在运行并注册了天气工具。
  3. 使用任何兼容Model Context Protocol的LLM客户端连接到 'http://127.0.0.1:8080' (默认端口和协议)。
  4. 客户端可以发送请求来:
    • 初始化会话 ('initialize' 方法)
    • 检查服务器状态 ('ping' 方法)
    • 获取可用工具列表 ('listTools' 方法),会看到 'getWeatherForecastByLocation' 和 'getAlerts' 工具。
    • 调用工具 ('callTool' 方法),例如调用 'getWeatherForecastByLocation' 并提供 'latitude' 和 'longitude' 参数,或调用 'getAlerts' 并提供 'state' 参数 (例如 "NY")。

该示例代码中也包含了一个简单的MCP客户端 ('ClientDemo.java'),在服务器启动后会自动运行以演示如何调用这些工具。

信息

分类

网页与API