使用说明

项目简介

本项目 'mcp-all' 是一个基于 Spring AI 框架构建的 Model Context Protocol (MCP) 服务器示例。它包含服务端 'mcp-server' 和客户端 'mcp-client' 两个模块。服务端 'mcp-server' 演示了如何通过 Spring AI 将外部服务 (天气 API) 封装成 MCP 工具 (Tool),并提供给 LLM 客户端使用。

主要功能点

  • 工具注册与执行: 通过 Spring AI 的 '@Tool' 注解,将 'WeatherService' 中的 'getWeatherForecast' 方法注册为 MCP 工具,允许 LLM 客户端调用该工具查询天气信息。
  • 外部数据访问: 'WeatherService' 工具内部集成了对第三方天气 API 的调用 (通过 Feign 客户端 'ALWeatherFeignClient'),实现了 MCP 服务器 提供数据访问能力 的核心职责。
  • Spring AI 集成: 项目基于 Spring AI 框架构建,利用 Spring AI 简化了 LLM 应用的开发,并为 MCP 服务器的实现提供了基础框架。
  • 可扩展性: 通过 Spring Boot 和 Spring AI 的特性,服务器易于扩展新的工具和服务。

安装步骤

  1. 安装 JDK 17+: 确保本地已安装 JDK 17 或更高版本。
  2. 安装 Maven: 确保本地已安装 Maven。
  3. 克隆仓库: 将 'mcp-all' 仓库克隆到本地:
    git clone https://github.com/yyykf/mcp-all.git
    cd mcp-all
  4. 构建项目: 在 'mcp-all' 根目录下执行 Maven 命令构建项目:
    mvn clean install
  5. 配置 API Token:
    • 在 'mcp-server/src/main/resources/application.properties' 文件中配置第三方天气 API 的 Token ('ws.al-api.token')。你需要自行注册并获取 AL 天气 API 的 Token。
    • 如果需要加密配置,可以使用 Jasypt 进行加密,具体参考仓库中的 'mcp-server/src/test/java/com/code4j/ai/mcp/server/common/JasyptTest.java' 测试类。

服务器配置 (MCP 客户端配置)

MCP 客户端需要配置以下 JSON 格式信息才能连接到 'mcp-server' 服务器。以下是一个示例配置,假设 'mcp-server' 打包后的 JAR 文件名为 'mcp-server.jar',并且 'application.properties' 配置文件与 JAR 文件在同一目录下。

{
  "serverName": "spring-ai-mcp-server-weather",  // MCP 服务器名称,客户端可以自定义
  "command": "java",                             // 启动服务器的命令,这里使用 java 命令
  "args": [                                      // 启动服务器命令的参数
    "-jar",                                     // 指定运行 JAR 文件
    "mcp-server/target/mcp-server.jar"          // MCP 服务器 JAR 文件路径,根据实际情况修改
    // "--spring.config.location=./application.properties" // (可选) 如果配置文件不在JAR同目录,可以指定配置文件路径
  ],
  "protocol": "stdio",                           // (可选) MCP 协议,默认为 stdio,本项目可能使用 stdio 或其他 Spring AI 支持的协议
  "description": "Spring AI MCP Server 示例,提供天气查询工具" // (可选) 服务器描述信息
}

参数注释:

  • 'serverName': MCP 服务器的名称,客户端可以自定义,用于标识不同的 MCP 服务器。
  • 'command': 启动 MCP 服务器的可执行命令,对于 Java Spring Boot 应用,通常使用 'java' 命令。
  • 'args': 传递给 'command' 的参数列表。
    • '-jar mcp-server/target/mcp-server.jar': 指定要运行的 Spring Boot JAR 文件路径。请根据实际构建后的 JAR 文件路径进行修改。如果配置文件 'application.properties' 与 JAR 文件不在同一目录,可以使用 '--spring.config.location=./application.properties' 参数指定配置文件路径。
  • 'protocol': (可选) MCP 服务器使用的通信协议。如果项目使用了 Spring AI 默认的通信方式,或者明确使用了 stdio 协议,则可以设置为 'stdio'。 如果使用了其他协议 (例如 WebSocket, SSE),则需要根据实际情况修改。如果省略,客户端可能会尝试默认协议或自动检测。
  • 'description': (可选) 对 MCP 服务器的简要描述,方便客户端用户理解服务器的功能。

请注意: 上述配置中的 JAR 文件路径 'mcp-server/target/mcp-server.jar' 是 Maven 默认的打包路径。实际运行前,请确保已经执行 'mvn clean install' 命令构建项目,并且 JAR 文件存在于该路径。

基本使用方法

  1. 启动 MCP 服务器: MCP 客户端根据上述配置,通过 'command' 和 'args' 启动 'mcp-server'。
  2. MCP 客户端发现工具: MCP 客户端连接到服务器后,可以发送 MCP 协议的请求,发现服务器提供的工具 (例如 'getWeatherForecast')。
  3. 客户端调用工具: 客户端可以使用 MCP 协议,根据工具的描述 ('@Tool' 和 '@ToolParam' 注解提供的信息) 构建请求,调用 'getWeatherForecast' 工具,并传递相应的参数 (例如 城市名称、省份、经纬度等)。
  4. 服务器返回结果: 'mcp-server' 执行工具后,将天气 API 返回的数据封装成 MCP 协议的响应,发送回客户端。
  5. 客户端处理结果: MCP 客户端接收到响应后,可以解析和使用天气数据,例如将其展示给用户或用于后续的 LLM 推理。

要实际使用该 MCP 服务器,你需要开发或使用一个兼容 MCP 协议的客户端程序,并按照上述 "服务器配置" 中的说明进行配置,才能与 'mcp-server' 建立连接并调用其提供的工具。 仓库中的 'mcp-client' 目录可能包含一个简单的客户端示例,但可能需要进一步完善才能完整地与 'mcp-server' 交互。

信息

分类

网页与API