MCP协议客户端

一个基于Spring Boot和Maven的Model Context Protocol (MCP)客户端实现,支持动态连接MCP服务器并调用其API。

  • by GeneralSparsh
  • Java
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 GeneralSparsh/mcp-spring-boot-client_v2

使用说明

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兼容服务器

构建并运行

  1. 克隆并构建项目:

    mvn clean package
    
  2. 运行应用程序:

    java -jar target/mcp-spring-boot-client-1.0.0.jar
    
  3. 访问应用程序:

    • 基本URL:http://localhost:8080
    • 健康检查:http://localhost:8080/api/mcp/health

配置

在中配置MCP服务器 application.yml:

mcp:
  servers:
    - name: "example-server"
      url: "http://localhost:3000"
      transport: HTTP

API使用示例

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/tools

3.调用工具

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许可证