项目简介

'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 服务器启动器简化开发。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/rogervinas/spring-boot-ai.git
    cd spring-boot-ai
  2. 进入 MCP 服务器目录:
    cd mcp-server
  3. 构建项目:
    ./gradlew build
    或使用 Maven (如果适用):
    ./mvnw package
    这将生成 MCP 服务器的可执行 JAR 文件。
  4. 运行 MCP 服务器:
    ./gradlew bootRun
    或使用 Java 命令运行生成的 JAR 包(具体路径和文件名可能因构建过程而异):
    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与计算