协议兼容性测试框架

MCPBench是一个用于测试不同语言实现的Model Context Protocol(MCP)客户端和服务器SDK兼容性的开源标准框架,确保跨语言实现的互操作性。

  • by unimcp
  • Makefile
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 unimcp/mcpbench

使用说明

MCPBench-模型上下文协议兼容性测试框架

概述

MCPBench是各种模型上下文协议(MCP)兼容性测试的开放标准https://github.com/modelcontextprotocol)客户端和服务器SDK实现。随着MCP生态系统的发展,并非每个服务器或客户端都将使用相同的语言编写,从而创建了一个N×N兼容性矩阵,其中N表示可用语言SDK的数量。

我们的目标是确保不同MCP实现之间的无缝互操作性,无论使用何种编程语言。

当前状态

初始SDK支持:

  • Python SDK(官方)
  • TypeScript SDK(官方)
  • Rust SDK(官方)

未来扩张: 随着MCP生态系统的发展,将添加其他语言SDK。

里程碑M0-基础

我们已经成功展示了关键的基础能力:

1.Git包信息提取

  • 从官方MCP SDK存储库自动获取和解析git包信息
  • 构建特定语言的兼容性矩阵
  • 跨SDK跟踪版本信息和依赖关系

2.Docker编写一代

  • 生成docker compose配置,以跨语言矩阵运行客户端-服务器组合
  • 支持跨语言测试场景
  • 自动化环境设置以进行兼容性测试

3.端到端(E2E)测试框架

  • 工作Python客户端↔ TypeScript服务器通信
  • 流式HTTP传输验证
  • 工具调用和响应验证
  • 会话管理和协议合规性测试

项目结构

mcpbench/
├── README.md                           # This file
├── matrix/                             # Core compatibility testing framework
│   ├── templates/                      # Test templates for different scenarios
│   │   ├── python/                     # Python client/server templates
│   │   │   ├── client/
│   │   │   │   ├── e2e/               # End-to-end client tests
│   │   │   │   ├── connection/        # Connection tests
│   │   │   │   └── ...                # Other test categories
│   │   │   └── server/
│   │   │       ├── e2e/               # End-to-end server implementations
│   │   │       └── ...                # Other server templates
│   │   ├── typescript/                 # TypeScript client/server templates
│   │   │   ├── client/
│   │   │   └── server/
│   │   │       └── e2e/               # TypeScript server implementations
│   │   └── rust/                       # Rust client/server templates
│   │       ├── client/
│   │       └── server/
│   ├── driver/                         # Test orchestration and automation
│   │   ├── update_sdk_info.py         # SDK information extraction
│   │   ├── setup.py                   # Environment setup
│   │   └── docker_generator.py        # Docker compose generation
│   └── requirements.txt               # Python dependencies
└── docs/                              # Documentation and guides

关键组件

matrix/templates/:包含按语言和测试类型组织的测试模板。每个模板都为特定的测试场景提供了MCP客户端/服务器实现的工作示例。

matrix/driver/:核心自动化脚本:

  • 从git仓库中提取SDK信息
  • 生成兼容性矩阵
  • 创建docker组合配置
  • 协调跨语言测试

matrix/templates/*/e2e/:端到端测试实现,演示了使用MCP协议的完整客户端-服务器通信。

如何运行E2E测试

先决条件

  • Python 3.8+ 使用pip
  • Node.js 18+ 使用npm
  • 码头工人 (用于集装箱测试)

快速入门:Python客户端↔ TypeScript服务器

  1. 安装Python依赖项

    cd mcpbench/matrix/templates/python/server
    pip install -r requirements.txt
    
  2. 启动TypeScript服务器

    cd mcpbench/matrix/templates/typescript/server/e2e
    npm install
    npm run dev
    

    服务器将于启动 http://localhost:8000

  3. 运行Python客户端测试

    cd mcpbench/matrix/templates/python/client/e2e
    python3 test_connection.py
    

期望输出

您应该看到:

  • 成功建立连接
  • 工具发现和列表
  • 工具调用和响应验证
  • 清理会话终止

测试其他语言组合

其他语言组合也可以遵循类似的模式:

  • Python客户端↔ Rust服务器
  • TypeScript客户端↔ Python服务器
  • Rust客户端↔ TypeScript服务器

每个组合在 matrix/templates/ 目录。

路线图

里程碑M1-矩阵扩展

  • 目标:完整的Python、TypeScript和Rust的N×N兼容性矩阵
  • 交付物:
    • 所有客户端-服务器组合均正常工作
    • 自动化矩阵测试
    • 性能基准测试
    • 协议合规性验证

里程碑M2-高级测试

  • 目标:全面的测试覆盖和边缘案例处理
  • 交付物:
    • 认证测试
    • 错误处理场景
    • 资源管理测试
    • 通知和流媒体测试
    • 负载测试和压力测试

里程碑M3——生态系统整合

  • 目标:与CI/CD和开发人员工作流程集成
  • 交付物:
    • GitHub操作集成
    • 自动兼容性报告
    • SDK版本兼容性跟踪
    • 性能回归检测

里程碑M4-扩展语言支持

  • 目标:支持其他语言SDK
  • 交付物:
    • Go SDK支持
    • Java SDK支持
    • C#SDK支持
    • 社区SDK集成

里程碑M5-生产准备就绪

  • 目标:企业级兼容性测试
  • 交付物:
    • 全面的文件
    • 性能SLA
    • 安全性测试
    • 合规性验证

贡献

我们欢迎MCP社区的贡献!以下是您可以提供帮助的方式:

入门指南

  1. 分叉存储库
  2. 创建要素分支: git checkout -b feature/your-feature-name
  3. 进行更改
  4. 添加测试 对于新功能
  5. 更新文档 根据需要
  6. 提交拉取请求

贡献领域

  • 新语言SDK支持:为其他MCP SDK添加模板和测试
  • 测试改进:增强现有测试或添加新的测试场景
  • 文档:改进指南、示例和API文档
  • 自动化:加强测试框架和CI/CD集成
  • 演出:优化测试执行并添加性能基准

开发指南

  • 代码的风格:遵循每种语言的现有代码样式
  • 测试:确保所有新功能都包括适当的测试
  • 文档:更新新功能的相关文档
  • 兼容性:验证更改不会破坏现有功能

报告问题

  • 使用GitHub Issues报告错误或请求功能
  • 包括详细的复制步骤
  • 提供相关日志和错误消息
  • 指定受影响的语言组合

社区

  • 加入我们在GitHub上的讨论
  • 参与MCP社区活动
  • 分享您的用例和需求
  • 帮助其他贡献者

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢

  • 规范和官方SDK的模型上下文协议团队
  • MCP社区提供反馈和贡献
  • 帮助构建和测试此框架的贡献者

MCPBench -确保MCP在所有语言和实现中的兼容性。