Spring AI - MCP 启动器客户端
本项目演示了如何在 Spring Boot 应用程序中使用 Spring AI MCP (模型上下文协议) 客户端启动器。它展示了如何连接到 MCP 服务器并将它们与 Spring AI 的工具执行框架集成。
请参考 MCP 客户端启动器 的参考文档。
概述
本项目使用 Spring Boot 和 Spring AI 创建一个命令行应用程序,演示了 MCP 服务器集成。该应用程序:
- 使用 STDIO 和/或 SSE (基于 HttpClient) 传输连接到 MCP 服务器
- 与 Spring AI 的聊天功能集成
- 演示通过 MCP 服务器进行工具执行
- 通过
-Dai.user.input
命令行属性接收用户定义的问题,该属性在代码中映射到一个 Spring@Value
注解
例如,使用 -Dai.user.input="Spring AI 是否支持 MCP?"
运行应用程序会将此问题通过 Spring 的属性注入注入到应用程序中,并且应用程序将使用它来查询 MCP 服务器。
前提条件
- Java 17 或更高版本
- Maven 3.6+
- openai GPT_API_freeAPI 密钥(获取地址:https://github.com/chatanywhere/GPT_API_free)
- 高德地图 API 密钥 (获取地址:https://lbs.amap.com/api/mcp-server/create-project-and-key)
依赖
本项目使用以下主要依赖:
<dependencies><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-mcp-client</artifactId></dependency><dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-starter-model-openai</artifactId></dependency>
</dependencies>
配置
应用程序属性
查看 MCP 客户端配置属性 文档。
可以通过 application.properties
或 application.yml
配置应用程序:
常用属性
# 应用程序配置
spring.application.name=mcp
spring.main.web-application-type=none# AI 提供商配置
spring.ai.openai.api-key=${OEPNAI_API_KEY}
spring.ai.openai.base-url=https://api.chatanywhere.tech
STDIO 传输属性
请参考 STDIO 配置属性 文档。
为每个要连接的 STDIO 服务器配置一个单独的、命名的配置:
spring.ai.mcp.client.stdio.connections.amap-maps-mcp-server.command=npx
spring.ai.mcp.client.stdio.connections.amap-maps-mcp-server.args=-y,@amap/amap-maps-mcp-server
这里,amap-maps-mcp-server
是您的连接名称。
或者,您可以使用 Claude Desktop 格式的外部 JSON 文件配置 STDIO 连接:
spring.ai.mcp.client.stdio.servers-configuration=classpath:/mcp-servers-config.json
示例 mcp-servers-config.json
:
{"mcpServers": {"amap-maps": {"command": "npx.cmd","args": ["-y","@amap/amap-maps-mcp-server"],"env": {"AMAP_MAPS_API_KEY": ""}}}
}
SSE 传输属性
您还可以使用 HttpClient 连接到服务器发送事件 (SSE) 服务器。
请参考 SSE 配置属性 文档。
SSE 传输的属性以 spring.ai.mcp.client.sse
为前缀:
spring.ai.mcp.client.sse.connections.server1.url=http://localhost:8080
spring.ai.mcp.client.sse.connections.server2.url=http://localhost:8081
工作原理
该应用程序演示了使用 MCP 工具与 AI 模型进行简单的命令行交互:
- 应用程序启动并配置多个 MCP 客户端(每个提供的 STDIO 或 SSE 连接配置对应一个)
- 它使用配置的 MCP 工具构建一个 ChatClient
- 将预定义的问题(通过
ai.user.input
属性设置)发送给 AI 模型 - 显示 AI 的响应
- 自动关闭应用程序
运行应用程序
-
设置所需的环境变量:
export OPENAI_API_KEY=your-api-key export AMAP_MAPS_API_KEY='your-brave-api-key-here'
-
构建应用程序:
./mvnw clean install
-
运行应用程序:
java -Dai.user.input='Spring AI 是否支持 MCP?' -jar target/mcp-starter-default-client-0.0.1-SNAPSHOT.jar
应用程序将执行问题 “Spring AI 是否支持 MCP?”,使用提供的高德地图(或其他工具)来回答它,并显示 AI 助手的响应。
更多资源
- Spring AI 文档
- MCP 客户端启动器
- 模型上下文协议规范
- Spring Boot 文档