使用说明
春季ai-mcp
该项目演示了如何使用Spring AI构建MCP服务器和客户端。
这是我探索使用Spring AI构建人工智能应用程序的第三步,包括RAG、MCP和代理工作流。
这个例子在很大程度上是基于 这 春季博客文章。 它建立在 春之春. 一切都在本地运行(应用程序、模型和MCP服务器)。
概述
这个例子展示了:
- MCP气象服务器:一个Spring Boot服务器,将天气预报功能作为MCP工具公开。利用 API开放气象预报.
- MCP天气客户端:一个连接到MCP服务器并使用LLM的Spring Boot AI应用程序(Ollama与Hugging Face GGUF型号)。
建筑
┌────────────────────────────────────────────────────────────┐
│ MCP Weather Client │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────┐ │
│ │ ChatClient │──│ MCP Client │──│ Weather Server │ │
│ │ (Claude) │ │ Transport │ │ (Streamable-HTTP)│ │
│ └─────────────┘ └──────────────┘ └──────────────────┘ │
│ │ │
│ ┌──────────────┐ │
│ │ MCP Client │ │
│ │ Transport │ │
│ └──────────────┘ │
└────────────────────────────────────────────────────────────┘
演示的功能
MCP服务器功能
- 工具:按坐标检索天气预报
- 日志记录:发送到客户端的结构化日志消息(高级服务器功能)
- 进度跟踪:操作的实时进度更新(高级服务器功能)
- 采样:从客户端的LLM(高级服务器功能)请求AI生成的内容
MCP客户端功能
多服务器连接:同时连接到多个MCP服务器- 运输支持:流式HTTP和STDIO传输
- 处理程序注释:处理服务器通知和请求
- LLM集成:与Olama无缝集成
先决条件
- Java 25(已安装在您的系统上)
- 奥拉玛 (已安装并在您的系统上运行)
- Maven 3.9.12(通过自动拉入
./mvnw) - Spring AI 2.0.0-M2(自动拉入)
构建
构建整个项目(所有模块):
./mvnw clean package
从根目录构建每个模块:
./mvnw -pl spring-ai-mcp-weather-server clean package
./mvnw -pl spring-ai-mcp-weather-client clean package
跑
从根目录运行每个模块:
./mvnw -pl spring-ai-mcp-weather-server spring-boot:run
./mvnw -pl spring-ai-mcp-weather-client spring-boot:run
Spring Boot Maven插件配置如下
--enable-native-access=ALL-UNNAMED因此Netty的原生DNS解析器(在macOS上使用)可以在没有Java 21+受限方法警告的情况下加载。如果你用java -jar或者从IDE中添加JVM参数,这样警告就不会出现。
测试
ClientStreamable和ClientStdio
在 test 文件夹中有2个可运行的类,它们使用MCP Java SDK客户端以编程方式连接到服务器:
ClientStreamable-通过连接Streamable HTTP运输类型。ClientStdio-通过连接STDIO运输类型。
MCP 检查员
这 MCP 检查员 是一个用于测试和调试MCP服务器的交互式开发工具。要启动检查器运行,请执行以下操作:
npx @modelcontextprotocol/inspector
在浏览器UI中,将传输类型设置为Streamable HTTP,将URL设置为http://localhost:8080/mcp.单击“连接”以建立连接。然后列出工具并运行 getWeatherForecast.