MCP客户端
这是一个基于Java的MCP(模型上下文协议)客户端,使用Spring Boot构建,连接到运行在localhost:8080上的MCP服务器。
特性
- 完整的MCP协议支持:实施MCP 2024-11-05协议规范
- RESTful API:通过REST端点公开MCP功能
- 响应式编程:使用Spring WebFlux进行非阻塞I/O
- 工具管理:列出并调用MCP服务器上的可用工具
- 资源管理:从MCP服务器访问和读取资源
- 及时管理:从MCP服务器列出并检索提示
- 健康监测:检查服务器连接和状态
先决条件
- Java 25+
- Maven 3.6+
- 在本地主机8080上运行的MCP服务器
配置
客户端通过以下方式配置 application.properties:
spring.application.name=mcp
server.port=8090
# MCP Server Configuration
mcp.server.host=localhost
mcp.server.port=8080
mcp.server.url=http://localhost:8080
mcp.server.timeout=30000运行应用程序
- 在localhost:8080上启动MCP服务器
- 运行Spring Boot应用程序:
./mvnw spring-boot:run客户端将在端口8090上启动,并自动测试与MCP服务器的连接。
API终点
健康和状态
GET /api/mcp/health-检查MCP服务器连接GET /api/mcp/ping-向MCP服务器发送pingGET /api/mcp/info-获取客户信息
连接管理
POST /api/mcp/initialize-初始化与MCP服务器的连接
工具
GET /api/mcp/tools-列出可用工具POST /api/mcp/tools/{toolName}-使用参数调用特定工具
资源
GET /api/mcp/resources-列出可用资源GET /api/mcp/resources/read?uri={uri}-阅读特定资源
提示词
GET /api/mcp/prompts-列出可用提示POST /api/mcp/prompts/{promptName}-获取带有参数的特定提示
自定义请求
POST /api/mcp/custom?method={method}-向MCP服务器发送自定义请求
示例用法
检查服务器运行状况
curl http://localhost:8090/api/mcp/health初始化连接
curl -X POST http://localhost:8090/api/mcp/initialize列出可用工具
curl http://localhost:8090/api/mcp/tools调用工具
curl -X POST http://localhost:8090/api/mcp/tools/example-tool \
-H "Content-Type: application/json" \
-d '{"param1": "value1", "param2": "value2"}'列出资源
curl http://localhost:8090/api/mcp/resources阅读资源
curl "http://localhost:8090/api/mcp/resources/read?uri=file:///path/to/resource"建筑
客户端由以下组件构成:
- McpClient配置:WebClient和MCP设置的配置
- McpClientService:核心服务处理MCP协议通信
- McpController:REST API控制器暴露MCP功能
- 按单设计服务:MCP请求和响应的数据传输对象
- McpTestClient:用于测试连接性的命令行运行器
MCP协议支持
此客户端实现MCP协议版本2024-11-05,支持:
- JSON-RPC 2.0:所有通信都使用JSON-RPC 2.0协议
- 工具:使用类型化参数调用工具并接收结构化结果
- 资源:访问文件系统资源、URI和其他数据源
- 提示词:检索并使用带有参数的预定义提示
- 能力:与MCP服务器协商能力
- 错误处理:正确的错误响应和记录
故障排除
- 连接问题:确保您的MCP服务器在localhost:8080上运行
- 超时错误:调整application.properties中的超时
- JSON解析:检查您的MCP服务器是否返回有效的JSON响应
- CORS问题:客户端包括web访问的CORS配置#mcp第一个客户端
