项目简介

'spring-ai-examples' 仓库是 Spring AI 框架的示例集合,其中包含了基于 Model Context Protocol (MCP) 的服务器端实现示例。这些示例展示了如何构建一个 MCP 服务器,用于托管和执行工具 (Tools),并通过 Stdio 或 SSE 协议与 MCP 客户端进行通信。

主要功能点

  • MCP 服务器实现: 提供符合 MCP 标准的服务器端应用骨架。
  • 工具托管: 允许开发者注册和管理由服务器提供的工具(如示例中的天气查询工具)。
  • 多协议支持: 示例涵盖了基于 Stdio(标准输入输出)和 SSE(Server-Sent Events)的两种主要 MCP 传输协议实现。
  • 与 Spring AI 集成: 充分利用 Spring AI 框架的能力来定义和暴露工具。

安装步骤

  1. 克隆仓库: 使用 Git 命令克隆 'spring-ai-examples' 仓库到本地。
    git clone https://github.com/chinaxwl/spring-ai-examples.git
  2. 构建项目: 进入仓库目录,使用 Maven 或 Gradle 构建项目。
    • 使用 Maven:
      cd spring-ai-examples
      mvn clean package -DskipTests
    • 使用 Gradle:
      cd spring-ai-examples
      ./gradlew build -x test
    构建成功后,将在各自模块的 'target' 或 'build/libs' 目录下生成可执行的 JAR 文件,例如 'spring-ai-mcp-server-stdio-demo.jar' 和 'spring-ai-mcp-server-sse-demo.jar'。

服务器配置 (供 MCP 客户端参考)

MCP 客户端需要配置连接到该服务器的信息。这些信息通常以 JSON 格式提供给 MCP 客户端,包括服务器名称、传输协议、启动服务器进程的命令及其参数。以下是配置示例的说明:

示例 MCP 服务器配置 (Stdio):

  • 'serverName': 服务器的唯一标识名,例如 '"Spring AI Stdio MCP Server"'
  • 'protocol': 使用的传输协议,对于 Stdio 服务器应为 '"stdio"'
  • 'command': 一个字符串数组,包含启动服务器进程的命令及其参数。例如 '["java", "-jar", "/path/to/spring-ai-mcp-server-stdio-demo.jar"]'。请将 '/path/to/' 替换为实际构建生成的 JAR 文件路径。
  • 'args': 一个字符串数组,包含传递给服务器进程的额外命令行参数,例如 '[]'。

示例 MCP 服务器配置 (SSE):

  • 'serverName': 服务器的唯一标识名,例如 '"Spring AI SSE MCP Server"'
  • 'protocol': 使用的传输协议,对于 SSE 服务器应为 '"sse"'
  • 'command': 一个字符串数组,包含启动服务器进程的命令及其参数。例如 '["java", "-jar", "/path/to/spring-ai-mcp-server-sse-demo.jar"]'。请将 '/path/to/' 替换为实际构建生成的 JAR 文件路径。
  • 'args': 一个字符串数组,包含传递给服务器进程的额外命令行参数,例如 '["--server.port=8081"]'。客户端需要通过此参数指定的地址/端口连接到 SSE 服务器。请根据实际运行情况调整端口。

基本使用方法

  1. 启动 MCP 服务器: 使用 'java -jar' 命令运行构建生成的服务器 JAR 文件。选择 Stdio 或 SSE 服务器 JAR 运行。
    java -jar /path/to/spring-ai-mcp-server-stdio-demo.jar
    # 或
    java -jar /path/to/spring-ai-mcp-server-sse-demo.jar
  2. 配置 MCP 客户端: 在您的 MCP 客户端应用中,使用上述“服务器配置”部分提供的 JSON 格式信息来配置连接到已启动的服务器。
  3. 客户端与服务器交互: 客户端通过 MCP 协议向服务器发送请求(例如,调用服务器上托管的工具)。服务器接收请求,执行相应的操作(例如,运行 'WeatherService' 中的 'getWeather' 方法),并通过 Stdio 或 SSE 协议将结果返回给客户端。

信息

分类

AI与计算