MCP Spring Boot客户端
使用Spring Boot和Maven的全面模型上下文协议(MCP)客户端实现。
概述
该项目演示了获取MCP服务器URL并使用模型上下文协议调用这些服务器公开的任何API的能力。该实现被设计为通用的,可以与任何符合MCP的服务器配合使用。
特性
- 动态MCP服务器连接:通过提供其URL连接到任何MCP服务器
- 通用API调用:调用连接的MCP服务器暴露的任何工具或API
- 多种运输支持:HTTP和STDIO传输机制
- RESTful API:用于外部集成的完整REST API
- 综合测试:涵盖所有主要功能的单元测试
- 异步操作:无阻塞操作,性能更佳
- 配置管理:灵活配置多台服务器
- 错误处理:强大的错误处理和日志记录
建筑
该项目遵循分层架构:
├── Controller Layer (REST API)
├── Service Layer (Business Logic)
├── Model Layer (Data Transfer Objects)
├── Configuration Layer (Application Settings)
└── Transport Layer (MCP Communication)项目结构
mcp-spring-boot-client/
├── src/
│ ├── main/
│ │ ├── java/com/interview/mcp/
│ │ │ ├── config/
│ │ │ │ └── McpServerProperties.java
│ │ │ ├── controller/
│ │ │ │ └── McpClientController.java
| | | ├──schema/
│ │ │ │ ├── McpSchema.java
│ │ │ ├── model/
│ │ │ │ ├── McpApiCallResult.java
│ │ │ │ ├── McpConnectionResult.java
│ │ │ │ ├── McpServerInfo.java
│ │ │ │ └── McpToolInfo.java
│ │ │ ├── service/
│ │ │ │ ├── HttpMcpServerConnection.java
│ │ │ │ ├── McpClientService.java
│ │ │ │ └── McpServerConnection.java
│ │ │ └── McpClientApplication.java
│ │ └── resources/
│ │ └── application.yml
│ └── test/
│ └── java/com/interview/mcp/
│ ├── McpClientControllerTest.java
│ └── McpClientServiceTest.java
├── pom.xml
└── README.md关键组件
1.McpClientService
管理MCP服务器连接和操作的核心服务:
- 使用HTTP或STDIO传输连接到MCP服务器
- 发现可用的工具和资源
- 执行工具调用和API请求
- 同时管理多个服务器连接
2.McpClientController
REST API控制器为以下各项提供终结点:
/api/mcp/connect-连接到新的MCP服务器/api/mcp/servers-列出已连接的服务器/api/mcp/tools-列出可用工具/api/mcp/tools/call-调用特定工具/api/mcp/call-进行通用API调用
3.HttpMcpServerConnection
遵循MCP规范的HTTP传输实现:
- JSON-RPC 2.0消息格式
- 工具发现和执行
- 资源管理
- 错误处理和日志
入门指南
先决条件
- Java 17或更高版本
- Maven 3.8+
- 要连接的MCP兼容服务器
构建并运行
- 克隆并构建项目:
mvn clean package- 运行应用程序:
java -jar target/mcp-spring-boot-client-1.0.0.jar- 访问应用程序:
- 基本URL:http://localhost:8080 - 健康检查:http://localhost:8080/api/mcp/health
配置
在中配置MCP服务器 application.yml:
mcp:
servers:
- name: "example-server"
url: "http://localhost:3000"
transport: HTTPAPI使用示例
1.连接到MCP服务器
curl -X POST http://localhost:8080/api/mcp/connect \
-H "Content-Type: application/json" \
-d '{
"serverUrl": "http://localhost:3000",
"serverName": "my-server"
}'2.列出可用工具
curl http://localhost:8080/api/mcp/tools3.调用工具
curl -X POST http://localhost:8080/api/mcp/tools/call \
-H "Content-Type: application/json" \
-d '{
"serverName": "my-server",
"toolName": "calculator",
"parameters": {
"operation": "add",
"a": 5,
"b": 3
}
}'4.进行通用API调用
curl -X POST http://localhost:8080/api/mcp/call \
-H "Content-Type: application/json" \
-d '{
"serverUrl": "http://localhost:3000",
"method": "GET",
"endpoint": "/api/data"
}'测试
运行单元测试:
mvn test测试套件包括:
- MCP操作的服务层测试
- REST API端点的控制器测试
- 端到端场景的集成测试
模型上下文协议合规性
此实现遵循MCP规范:
- JSON-RPC 2.0消息格式
- 标准MCP方法(初始化、工具/列表、工具/调用等)
- 正确的错误处理和状态代码
- 支持HTTP和STDIO传输
设计原则
- 通用实现:适用于任何符合MCP标准的服务器
- 可扩展体系结构:支持多个并发服务器连接
- 可扩展设计:易于添加新的传输机制
- 生产就绪:全面的错误处理和记录
- 可测试:单元和集成测试的高测试覆盖率
未来的增强功能
- WebSocket传输支持
- 服务器发送事件以进行实时更新
- 连接池和负载平衡
- 高级身份验证机制
- 监控和指标集成
作者
稀疏的萨胡
许可证
MIT许可证
