使用说明

项目简介

本项目 '2025-bootiful-aws-ai' 包含两个主要服务:

  1. Adoptions service (领养服务): 一个使用 Spring AI 和 AWS Bedrock 构建的狗狗领养问询服务,作为 MCP 客户端。
  2. Scheduling service (调度服务): 一个 MCP 服务器,负责处理狗狗领养预约调度,提供 LLM 工具调用能力。

本使用说明主要针对 Scheduling service (调度服务),即 MCP 服务器部分。

主要功能点

  • 提供工具 (Tools) 注册和执行: 通过 Spring AI 的 '@Tool' 注解,将 'DogAdoptionAppointmentScheduler' 类中的 'scheduleDogAdoptionAppointment' 方法注册为 MCP 工具,允许 LLM 客户端调用该工具进行狗狗领养预约。
  • 基于 Spring Boot 构建: 利用 Spring Boot 框架快速搭建 MCP 服务器,简化开发和部署流程。
  • 使用 HTTP SSE 协议: 通过 HTTP Server-Sent Events (SSE) 协议与 MCP 客户端进行通信。
  • Docker 容器化部署: 支持将 MCP 服务器打包成 Docker 容器,方便部署和管理。
  • 提供 ToolCallbackProvider: 通过 'MethodToolCallbackProvider' 将服务类的方法暴露为 MCP 工具,方便 Spring AI 集成。

安装步骤

  1. 环境准备:

    • 确保已安装 JDK 23 或更高版本
    • 确保已安装 Docker
    • 根据 AWS 文档 配置 AWS 认证,以便访问 AWS Bedrock 服务 (虽然本 MCP 服务器本身不直接使用 Bedrock,但整个项目依赖 AWS 环境)。
    • 如果本地运行,需要 请求访问 Nova Lite 和 Cohere Embed Multilingual 模型 以便完整体验整个 '2025-bootiful-aws-ai' 项目的功能。
  2. 构建 Docker 镜像: 打开终端,进入 'scheduling' 目录:

    cd scheduling

    使用 Maven 构建 Docker 镜像:

    ./mvnw spring-boot:build-image

    或者,为了更快的服务器启动速度,构建 GraalVM Native Image 容器 (可选):

    ./mvnw -Pnative spring-boot:build-image

    构建成功后,Docker 中将出现名为 'scheduling' 的镜像。

  3. 运行 Docker 容器: 运行构建好的 'scheduling' Docker 镜像:

    docker run --name scheduling-server -p 8081:8080 scheduling

    这将启动 MCP 服务器,并将其端口 '8080' 映射到主机的 '8081' 端口。

服务器配置 (MCP 客户端配置)

以下 JSON 配置信息用于配置 MCP 客户端 (例如 'adoptions service') 连接到本 MCP 服务器。客户端需要配置服务器的启动命令 (在这里实际上是服务器的 URL)。

{
  "serverName": "scheduling-service",
  "command": "http://localhost:8081/sse",
  "args": []
}

配置参数说明:

  • serverName (服务器名称): 'scheduling-service', 用于在客户端标识该 MCP 服务器连接,可以自定义名称。
  • command (命令): 'http://localhost:8081/sse', MCP 服务器的 SSE 协议端点 URL。客户端通过此 URL 与服务器建立连接。 请注意,这里配置的是服务器的 URL,而不是启动服务器的命令行命令。 假设 MCP 服务器运行在本地 'localhost' 的 '8081' 端口,并使用 SSE 协议,则配置为 'http://localhost:8081/sse'。 如果服务器部署在其他地址或端口,请相应修改此 URL。
  • args (参数): '[]', 额外的命令行参数,本例中无需额外参数,配置为空数组即可。

MCP 客户端 (例如 'adoptions service') 需要在其配置中指定上述 JSON 信息,才能连接和调用本 MCP 服务器提供的工具。 具体客户端如何配置请参考 MCP 客户端的文档或代码。 在 'adoptions service' 项目中,服务器 URL 'http://localhost:8081' 是通过 'adoptions/src/test/java/com/example/adoptions/SchedulingServiceConfiguration.java' 中的 Testcontainers 动态配置的,实际应用中可能需要通过配置文件或环境变量进行配置。

基本使用方法

  1. 启动 MCP 服务器: 按照上述 "运行 Docker 容器" 步骤启动 'scheduling-server' 容器。

  2. 配置 MCP 客户端: 在 MCP 客户端 (例如 'adoptions service') 中,配置上述 JSON 信息,确保客户端能够连接到正在运行的 MCP 服务器。

  3. 客户端调用工具: MCP 客户端 (例如 'adoptions service') 可以通过 MCP 协议向 MCP 服务器发送请求,调用 'scheduleDogAdoptionAppointment' 工具,实现狗狗领养预约功能。 具体调用方式取决于 MCP 客户端的实现。

例如,在 'adoptions service' 的 'ServerTest.java' 测试用例中,可以看到通过提问 "fantastic. when could i schedule an appointment to adopt Prancer, from the London location?", 间接触发了对 'scheduleDogAdoptionAppointment' 工具的调用 (虽然测试代码没有直接展示 MCP 协议交互细节,但 Spring AI MCP 客户端库在底层处理了这些细节)。

总而言之,本仓库的 'scheduling' 模块提供了一个基于 Spring AI 的有效 MCP 服务器实现,用于演示如何通过 MCP 协议提供工具服务给 LLM 应用。

信息

分类

生产力应用