项目简介
该项目是 'qy-framework-ai' AI框架的一部分,专门提供了基于 Spring Boot 构建的 MCP(Model Context Protocol)服务器实现。它旨在帮助开发者轻松创建后端服务,为大型语言模型(LLM)客户端提供必要的功能和上下文信息,特别是工具调用能力。
主要功能点
- MCP 协议支持: 实现了 MCP 协议的服务端逻辑,能够接收和处理来自 LLM 客户端的标准化请求。
- 工具自动化注册: 通过简单的注解('@Tool'),可以将 Spring Bean 中的方法自动注册为 LLM 可调用的工具,极大地简化了工具接入流程。
- 工具执行能力: MCP 服务器负责接收 LLM 客户端发起的工具调用请求,解析参数,并执行对应的后端工具方法。
- 能力声明: 服务器能够向客户端声明其支持的能力,包括工具 (Tools)、资源 (Resources)、提示词模板 (Prompts) 和日志 (Logging) 等(框架当前重点支持 Tools)。
- 传输协议: 支持基于 WebFlux SSE 的传输协议,实现客户端与服务器的实时通信。
- 易于集成: 作为 Spring Boot Starter 模块设计,可以方便地集成到现有的 Spring Boot 项目中。
安装步骤
要在您的 Spring Boot 项目中使用此 MCP 服务器模块,您需要将其作为依赖添加到您的项目构建文件(如 Maven 的 'pom.xml' 或 Gradle 的 'build.gradle')中。
例如,使用 Maven:
<dependency> <groupId>org.quanyu.ai</groupId> <artifactId>qy-framework-ai-mcp-server</artifactId> <version>最新版本号</version> <!-- 请替换为实际的最新版本号 --> </dependency>
(如果您使用 Gradle,请参照相应的语法添加依赖。)
服务器配置(供 MCP 客户端使用)
此模块提供了 MCP 服务器能力。要让 MCP 客户端(如 'qy-framework-ai-mcp-client' 或其他符合 MCP 协议的客户端)连接并使用此服务器,您需要在客户端进行相应的配置。客户端通常需要服务器的网络地址和 MCP 服务端点路径。
典型的 MCP 客户端配置(通常为 JSON 格式)可能需要以下信息:
{ // 服务器的标识名称,用于客户端识别 "name": "您的MCP服务器名称", // 连接到MCP服务器的URI // URI应包含服务器的网络地址、端口和MCP端点路径 // 例如:http://localhost:8080/mcp/message "uri": "http://<您的服务器地址>:<服务器端口>/mcp/message" }
- 将 '"您的MCP服务器名称"' 替换为您为该服务器定义的名称。
- 将 '<您的服务器地址>' 替换为运行 MCP 服务器的机器的 IP 地址或域名。
- 将 '<服务器端口>' 替换为您在 Spring Boot 应用中配置的服务器端口(例如,'server.port' 设置的值)。
- '/mcp/message' 是此框架默认提供的 MCP 服务端点路径。
您自己的 Spring Boot 应用只需进行标准的配置(如端口配置),框架会自动暴露 MCP 端点。
基本使用方法
定义一个可供 LLM 调用的工具非常简单:
- 创建一个标准的 Spring 组件类(例如,使用 '@Service', '@Component' 等注解)。
- 在该组件类中,创建一个公共方法,并使用 '@Tool' 注解标记它。您可以在 '@Tool' 注解中提供工具的描述。
- (可选)使用 '@McpParameter' 注解标记方法的参数,为参数提供更详细的描述信息。
框架启动时会自动扫描带有 '@Tool' 注解的方法,并将其注册为 MCP 工具。当 LLM 客户端通过 MCP 协议调用这些工具时,框架会负责参数解析并调用您定义的方法。
例如(此处仅为概念说明,实际代码请参照仓库示例):
创建一个服务类:
// 假设这是一个Spring服务类 // @Service // public class MyCalculationService { // // @Tool(desc = "执行两个数字的加法运算") // public int addNumbers(@McpParameter(desc = "第一个加数") int num1, @McpParameter(desc = "第二个加数") int num2) { // // 在这里实现加法逻辑 // return num1 + num2; // } // }
定义好后,这个 'addNumbers' 方法就会被注册为 MCP 工具,LLM 客户端就能发现并调用它了。
信息
分类
AI与计算