使用说明
项目简介
本项目是一个基于 Springboot 框架的 MCP (Model Context Protocol) 服务器模板,旨在帮助开发者快速搭建和运行 MCP 服务器。它预配置了 JUNIT 单元测试,并支持 STDIO 和 SSE 两种传输协议,方便与 MCP 客户端进行交互。通过此模板,您可以快速上手 MCP 服务器的开发,并进行功能扩展和定制。
主要功能点
- MCP 服务器基础框架: 基于 Springboot 快速搭建 MCP 服务器,符合 MCP 协议规范。
- STDIO 和 SSE 模式支持: 支持通过标准输入输出流 (STDIO) 和服务器发送事件 (SSE) 两种方式与客户端通信。
- 工具 (Tools) 注册和调用: 演示了如何注册和暴露工具服务(如天气查询、数字判断),供 LLM 客户端调用。
- JUNIT 单元测试: 内置 JUNIT 单元测试框架,方便进行服务器端的功能测试和协议验证。
- 可扩展性: 项目结构清晰,易于扩展新的 MCP 功能,如资源管理、Prompt 模板渲染等。
- 配置灵活性: 支持通过配置文件修改服务器端点和消息端点。
安装步骤
- 安装 JDK 17+: 确保本地安装了 JDK 17 或更高版本。
- 安装 Maven 3.8.1+: 推荐使用 Maven 3.8.1 或更高版本进行项目构建。
- 下载项目代码: 从 GitHub 仓库 https://github.com/dreamcenter/springboot-MCPserver-JUnit 克隆或下载项目代码。
- 使用 IDEA 导入项目: 使用 IDEA (或其他 IDE) 将项目作为 Maven 项目导入。
- 构建项目: 在项目根目录下,运行 Maven 命令 'mvn install' 进行项目构建,这将在 'target' 目录下生成 JAR 文件。
服务器配置
MCP 客户端配置信息(JSON 格式示例)
1. STDIO 客户端配置
{ "serverName": "springboot-mcp-stdio-server", "command": "java", "args": [ "-jar", "-Dfile.encoding=UTF-8", "-Dspring.ai.mcp.server.stdio=true", "AbsolutePath/**/xxx.jar" // 请替换为实际的 JAR 文件路径 (绝对路径) ], "environments": { "env1": "xxx", // 可选:设置环境变量 "env2": "yyy" // 可选:设置环境变量 } }
- serverName: 服务器名称,客户端用于标识连接的服务器。
- command: 启动服务器的命令,这里使用 'java'。
- args: 启动参数列表:
- '-jar': 指定运行 JAR 文件。
- '-Dfile.encoding=UTF-8': 设置文件编码为 UTF-8,避免中文乱码问题。
- '-Dspring.ai.mcp.server.stdio=true': 启用 STDIO 模式。
- '"AbsolutePath/**/xxx.jar"': 请务必替换为实际构建生成的 JAR 文件的绝对路径。 例如: '/path/to/springboot-MCPserver-JUnit/target/springboot-MCPserver-JUnit-0.0.1-SNAPSHOT.jar'
- environments: (可选) 设置服务器运行时需要的环境变量。
2. SSE 客户端配置
{ "serverName": "springboot-mcp-sse-server", "sseEndpoint": "http://主机地址:端口/sse" // 请替换为实际的 SSE 地址 }
- serverName: 服务器名称,客户端用于标识连接的服务器。
- sseEndpoint: SSE 服务端点 URL,请将 'http://主机地址:端口/sse' 替换为实际运行服务器的地址和端口。 例如: 'http://localhost:8080/sse' 。 默认端口为 '8080',主机地址为运行服务器的机器 IP 或域名。
服务器启动说明:
- STDIO 模式: 客户端根据上述 STDIO 配置,通过命令行启动 JAR 文件,并建立 STDIO 连接。
- SSE 模式: 客户端根据上述 SSE 配置,直接连接到服务器提供的 SSE 端点。
修改 SSE 端点 (可选):
如果需要修改默认的 '/sse' SSE 端点,可以参考 'README.md' 文档中 "修改sse端点" 部分的说明,通过重新注入 'ServerMcpTransport' Bean 来实现自定义。
基本使用方法
- 启动 MCP 服务器: 根据选择的 STDIO 或 SSE 模式,配置并启动 MCP 服务器。
- 配置 MCP 客户端: 根据服务器的运行模式,配置 MCP 客户端连接信息,包括服务器地址、端口、传输协议等。
- 调用工具 (Tools): 客户端可以使用 MCP 协议调用服务器端注册的工具,例如:
- getWeather 工具: 用于获取城市天气(示例中为模拟数据)。客户端可以调用 'getWeather' 工具并传入 'cityName' 参数,例如 '{"cityName": "北京"}'。
- judgeIfOdd 工具: 用于判断数字是否为双数。客户端可以调用 'judgeIfOdd' 工具并传入 'num' 参数,例如 '{"num": 7}'。
- 查看响应结果: 服务器执行工具后,会将结果以 MCP 响应格式返回给客户端。客户端解析响应结果,即可获取工具执行的输出信息。
示例工具调用 (基于 JUNIT 测试代码):
项目中的 'SSETest.java' 和 'STDIOTest.java' 文件提供了 JUNIT 单元测试示例,演示了如何使用 MCP 客户端调用服务器端的 'getWeather' 和 'judgeIfOdd' 工具。可以参考这些测试代码了解工具的调用方式和响应结果处理。
信息
分类
开发者工具