Spring AI MCP Server示例
使用说明
项目简介
本项目是一个基于 Spring AI 框架实现的 MCP (Model Context Protocol) 服务器示例。它展示了如何利用 Spring AI 方便地构建 MCP 服务器,并集成了 AWS Bedrock 大语言模型服务。该示例旨在帮助开发者理解 MCP 服务器的核心概念,并学习如何使用 Spring AI 快速搭建自己的 MCP 服务后端。
主要功能点
- 资源管理 (Resources):虽然 README 中没有明确提及资源管理,但作为 MCP 服务器,它应该具备资源管理能力,用于托管和管理数据资源,并提供数据访问接口。 (需要代码确认具体实现)
- 工具执行 (Tools):同样,README 未明确提及工具,但 MCP 服务器的核心功能之一是工具注册和执行,允许 LLM 调用外部功能。 (需要代码确认具体实现)
- Prompt 模板 (Prompts):MCP 服务器负责定义和渲染 Prompt 模板,以支持定制化的 LLM 交互模式。 (需要代码确认具体实现)
- 集成 AWS Bedrock:示例集成了 AWS Bedrock 服务,可以使用 Bedrock 上的大语言模型进行推理。
- RESTful API:通过 RESTful API 提供服务接口,客户端可以通过 HTTP 请求与服务器交互。
- Spring AI 框架:基于 Spring AI 构建,利用 Spring 框架的便利性和 AI 能力。
安装步骤
-
配置 AWS Bedrock:
- 在 AWS Console 中设置 Bedrock,并 申请 Nova Pro 等模型的访问权限。
- 配置本地开发所需的 AWS 认证,例如配置 AWS CLI 凭证或环境变量。
-
启动 MCP 服务器:
- 确保已安装 Gradle。
- 在项目根目录下,打开终端并执行以下 Gradle 命令启动服务器:
./gradlew :server:bootRun服务器默认监听 'http://localhost:8080'。
-
启动 MCP 客户端/代理 (可选):
- 虽然 README 中提到启动客户端,但根据描述,'client' 模块更像是用于测试服务器的工具,而非独立的 MCP 客户端。
- 如果需要运行客户端,可以使用以下命令:
./gradlew :client:bootRun
服务器配置 (MCP 客户端配置)
对于 MCP 客户端,需要配置连接到此 MCP 服务器的信息。以下是一个可能的 MCP 客户端配置示例 (JSON 格式):
{ "serverName": "spring-ai-bedrock-mcp-server", "command": "./gradlew", "args": [":server:bootRun"], "description": "Spring AI MCP Server running on localhost:8080" }
配置说明:
- 'serverName': 服务器的名称,可以自定义,用于在客户端中标识该服务器。例如:"spring-ai-bedrock-mcp-server"。
- 'command': 启动 MCP 服务器的命令。 在本示例中,使用 Gradle 启动 Spring Boot 应用,因此命令为 '"./gradlew"'。
- 'args': 启动命令的参数。 对于 Gradle Spring Boot 应用,参数为 '[":server:bootRun"]',指定运行 'server' 模块的 'bootRun' 任务。
- 'description': 服务器的描述信息,方便用户理解该服务器的用途。例如:"Spring AI MCP Server running on localhost:8080"。
注意: 实际的 MCP 客户端可能需要更详细的配置,例如服务器地址、端口、协议等。 上述配置主要参考了 README 中启动服务器的命令,并假设 MCP 客户端需要能够启动或管理 MCP 服务器进程 (尽管本示例更倾向于手动启动服务器)。 更完善的 MCP 客户端配置可能需要根据具体的 MCP 客户端实现和服务器的实际接口进行调整。
基本使用方法
-
发送请求:
- 可以使用 'curl' 命令或 IntelliJ IDEA 中的 'client.http' 文件发送 HTTP POST 请求到服务器的 '/inquire' 端点。
-
请求示例 (curl):
curl -X POST --location "http://localhost:8080/inquire" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d 'question=Get employees that have skills related to Java, but not Java'- 将 'question' 参数替换为你想要发送给 LLM 的问题。
-
查看响应:
- 服务器将返回 JSON 格式的响应,其中包含 LLM 的回复或其他相关信息。 (响应格式需要根据实际代码确定)
更详细的使用方法: 需要进一步分析仓库代码,才能了解其完整的 API 接口、资源管理、工具调用和 Prompt 模板的使用方式。 请参考仓库中的代码和文档以获取更详细的信息。