使用说明

项目简介

本项目 'spring-ai-mcp-demo' 中的 'mcp-server' 模块是一个简单的 Model Context Protocol (MCP) 服务器示例,它基于 Spring AI 框架构建,旨在演示如何实现 MCP 协议的核心功能。该服务器去除了数据库依赖,专注于提供资源、工具和 Prompt 模板的管理和访问能力,为 LLM 应用提供上下文服务。

主要功能点

  • 资源管理 (Resources)
    • 提供系统信息资源 ('system://info'),展示如何注册和提供资源数据。
  • 工具注册与调用 (Tools)
    • 注册 'BookService',包含 'getBooks' 和 'getBookTitlesByAuthor' 两个工具,模拟外部功能调用。
  • Prompt 模板 (Prompts)
    • 定义 'greeting' Prompt 模板,接受 'name' 参数,生成个性化问候语,演示 Prompt 模板的定制能力。
  • HTTP/SSE 传输协议
    • 通过 Spring WebMVC 提供 HTTP/SSE 协议支持,允许 MCP 客户端通过 HTTP/SSE 与服务器通信。

安装步骤

  1. 环境准备
    • 确保已安装 JDK 17+、Maven 3.8.6+。
  2. 代码下载
    • 从 GitHub 克隆仓库 'https://github.com/AHUCodingBeast/spring-ai-mcp-demo' 到本地。
  3. 编译打包
    • 进入 'mcp-server' 目录,执行 'mvn install' 命令进行编译和打包。
    • 编译成功后,将在 'mcp-server/target' 目录下生成可执行的 JAR 文件,例如 'mcp-server-*.jar'。
  4. 启动服务器
    • 进入 'mcp-server/target' 目录,执行 'java -jar mcp-server-*.jar' 命令启动 MCP 服务器。
    • 默认情况下,服务器将在 'http://localhost:8080' 监听 HTTP/SSE 连接。

服务器配置

MCP 服务器本身是 Spring Boot 应用程序,可以通过 Spring Boot 的标准方式进行配置(例如,修改 'application.properties' 或 'application.yml' 文件)。

对于 MCP 客户端,需要配置连接到此 MCP 服务器的信息。由于 'mcp-server' 模块作为一个独立的服务器运行,客户端需要配置服务器的访问地址和协议。

以下是一个 MCP 客户端 (例如 'mcp-client' 或 'call-mcp-server' 模块) 使用 HTTP/SSE 协议 连接 'mcp-server' 的配置示例 (假设客户端使用 Spring AI MCP Client):

{
  "serverName": "mcp-demo-server",
  "transport": "http-sse",
  "uri": "http://localhost:8080"
}

配置参数说明

  • 'serverName': 自定义服务器名称,用于客户端标识。
  • 'transport': 传输协议,这里设置为 'http-sse' 表示使用 HTTP/SSE 协议。
  • 'uri': MCP 服务器的 HTTP/SSE 访问地址,默认为 'http://localhost:8080' (与 'mcp-server' 默认配置一致)。

请注意,实际的客户端配置可能需要根据具体的客户端实现和配置方式进行调整。上述 JSON 配置仅为示例,展示了客户端连接到基于 HTTP/SSE 的 'mcp-server' 所需的关键信息。

基本使用方法

  1. 启动 MCP 服务器 (参考 "安装步骤" 中的 "启动服务器" 部分)。
  2. 运行 MCP 客户端 (例如 'mcp-client' 或 'call-mcp-server' 模块,请参考仓库中的 README 文档和示例代码)。
  3. 客户端与服务器交互
    • 客户端通过 Spring AI MCP Client 或其他 MCP 客户端库,根据配置连接到 'mcp-server'。
    • 客户端可以发送 MCP 请求,例如:
      • 列出可用工具 ('listTools')
      • 调用工具 ('callTool'),例如调用 'getBooks' 工具查询书籍信息
      • 列出可用资源 ('listResources')
      • 读取资源 ('readResource'),例如读取 'system://info' 资源获取系统信息
      • 列出可用 Prompt 模板 ('listPrompts')
      • 获取 Prompt 模板 ('getPrompt'),例如获取 'greeting' Prompt 模板并传入 'name' 参数
    • 服务器接收请求并返回 MCP 响应。

注意事项

  • 'mcp-server' 模块是一个简化的演示示例,实际应用中可能需要根据需求扩展功能,例如增加数据库集成、更完善的资源和工具管理、更丰富的 Prompt 模板等。
  • 示例代码中 'BookService' 的工具方法仅为模拟实现,未连接真实数据源。
  • 客户端配置中的 'uri' 需要与实际 'mcp-server' 运行的地址和端口保持一致。

信息

分类

AI与计算