使用说明

项目简介

本项目是一个基于 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 模板渲染等。
  • 配置灵活性: 支持通过配置文件修改服务器端点和消息端点。

安装步骤

  1. 安装 JDK 17+: 确保本地安装了 JDK 17 或更高版本。
  2. 安装 Maven 3.8.1+: 推荐使用 Maven 3.8.1 或更高版本进行项目构建。
  3. 下载项目代码: 从 GitHub 仓库 https://github.com/dreamcenter/springboot-MCPserver-JUnit 克隆或下载项目代码。
  4. 使用 IDEA 导入项目: 使用 IDEA (或其他 IDE) 将项目作为 Maven 项目导入。
  5. 构建项目: 在项目根目录下,运行 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 来实现自定义。

基本使用方法

  1. 启动 MCP 服务器: 根据选择的 STDIO 或 SSE 模式,配置并启动 MCP 服务器。
  2. 配置 MCP 客户端: 根据服务器的运行模式,配置 MCP 客户端连接信息,包括服务器地址、端口、传输协议等。
  3. 调用工具 (Tools): 客户端可以使用 MCP 协议调用服务器端注册的工具,例如:
    • getWeather 工具: 用于获取城市天气(示例中为模拟数据)。客户端可以调用 'getWeather' 工具并传入 'cityName' 参数,例如 '{"cityName": "北京"}'。
    • judgeIfOdd 工具: 用于判断数字是否为双数。客户端可以调用 'judgeIfOdd' 工具并传入 'num' 参数,例如 '{"num": 7}'。
  4. 查看响应结果: 服务器执行工具后,会将结果以 MCP 响应格式返回给客户端。客户端解析响应结果,即可获取工具执行的输出信息。

示例工具调用 (基于 JUNIT 测试代码):

项目中的 'SSETest.java' 和 'STDIOTest.java' 文件提供了 JUNIT 单元测试示例,演示了如何使用 MCP 客户端调用服务器端的 'getWeather' 和 'judgeIfOdd' 工具。可以参考这些测试代码了解工具的调用方式和响应结果处理。

信息

分类

开发者工具