项目简介
'spring-boot-ai' 仓库包含一个使用 Spring AI 构建的示例应用,其中包含了 MCP 服务器 和一个使用该服务器作为客户端的 Chat 服务器。此项目重点展示了如何利用 Spring AI 的 Model Context Protocol (MCP) 功能来创建和托管工具,供大型语言模型 (LLM) 调用。
本项目中的 MCP 服务器部分实现了标准的 MCP 协议,可以独立运行,并通过 JSON-RPC 提供注册的工具能力。Chat 服务器作为 MCP 客户端,可以连接到此 MCP 服务器来调用特定的工具(例如 README 中提到的预订工具)。
主要功能点
- 托管工具: 作为 MCP 服务器,核心功能是注册和托管供 LLM 使用的工具。
- 工具执行: 接收来自 MCP 客户端的工具调用请求,执行相应的业务逻辑,并返回结果。
- 协议支持: 通过 JSON-RPC 协议与客户端通信,支持 SSE 等传输方式。
- Spring AI 集成: 利用 Spring AI 提供的 MCP 服务器启动器简化开发。
安装步骤
- 克隆仓库:
git clone https://github.com/rogervinas/spring-boot-ai.git cd spring-boot-ai - 进入 MCP 服务器目录:
cd mcp-server - 构建项目:
或使用 Maven (如果适用):./gradlew build
这将生成 MCP 服务器的可执行 JAR 文件。./mvnw package - 运行 MCP 服务器:
或使用 Java 命令运行生成的 JAR 包(具体路径和文件名可能因构建过程而异):./gradlew bootRun
服务器默认会在一个随机或配置的端口启动。java -jar build/libs/mcp-server.jar
服务器配置 (供 MCP 客户端参考)
MCP 服务器是为 MCP 客户端提供服务的。MCP 客户端需要配置如何启动或连接到这个服务器。对于此基于 Spring Boot 的 MCP 服务器示例,一个典型的 MCP 客户端配置信息(JSON 格式)可能如下所示。请注意,具体的路径和端口可能需要根据您的实际构建和运行环境进行调整。
{ "name": "booking-mcp-server", "command": "java", "args": [ "-jar", "path/to/mcp-server.jar" // 替换为 mcp-server 模块构建生成的 JAR 文件路径 ], "env": {}, "workingDirectory": "path/to/mcp-server", // 替换为 mcp-server 模块的根目录路径 "transport": { "type": "sse", "url": "http://localhost:8080" // 替换为 MCP 服务器实际启动的地址和端口 } }
- 'name': 服务器的标识名称,客户端使用此名称来引用该服务器。
- 'command': 启动服务器进程的命令 (例如 'java' 或一个 shell 脚本)。
- 'args': 传递给命令的参数 (例如 '-jar mcp-server.jar')。
- 'env': 启动进程所需的环境变量 (可选)。
- 'workingDirectory': 启动进程的工作目录 (可选)。
- 'transport': 定义客户端与服务器通信的方式和地址。'type' 指定传输协议 (如 'sse'),'url' 指定服务器监听的地址和端口。
MCP 客户端根据此配置来启动或连接到 MCP 服务器,并发现/调用其提供的工具。
基本使用方法
成功运行 MCP 服务器后,它会监听配置的端口。任何支持 MCP 协议的客户端应用(例如仓库中的 Chat 服务器模块或其他基于 Spring AI 的 MCP 客户端)都可以通过配置连接到这个服务器。
客户端连接后,可以通过 MCP 协议调用服务器注册的工具。例如,如果服务器注册了 'book' 工具,客户端可以发送一个包含 'book' 工具名称和所需参数(如 'city', 'checkinDate', 'checkoutDate')的 MCP 请求。服务器将执行相应的 'BookingTool' 逻辑并将结果返回给客户端。
graph LR A[MCP 客户端<br>(例如:Chat Server)] -->|JSON-RPC over SSE/或其他| B(MCP 服务器<br>本项目 mcp-server) B --> C{执行注册的工具<br>例如:BookingTool} C -->|结果| B B -->|JSON-RPC 响应| A
要体验完整的端到端流程,还需要按照 README 中的说明设置并运行 Chat 服务器(作为 MCP 客户端)和其它依赖服务(如 Ollama, PGVector)。
信息
分类
AI与计算