MCP SDK兼容性测试套件
跨SDK兼容性测试套件,用于验证官方MCP(模型上下文协议)SDK实现之间的互操作性。
支持的SDK
| 语言 | 包 | 存储库 |
|---|---|---|
C ModelContextProtocol | modelcontextprotocol/csharpsdk | |
| TypeScript | @modelcontextprotocol/sdk | 模型上下文协议/类型脚本sdk |
python mcp | 模型上下文协议/python sdk | |
| 去吧 | github.com/modelcontextprotocol/go-sdk/mcp | modelcontextprotocol/go-sdk |
先决条件
在运行测试之前,请确保已安装以下内容:
- .NET 10 SDK -用于测试线束和C#MCP服务器/客户端
- Node.js (v18+)-用于TypeScript MCP服务器/客户端
- 紫外线 -适用于Python MCP服务器/客户端(非pip)
- 去 (1.23+)-适用于Go MCP服务器/客户端
快速开始
1.检查依赖关系
dotnet run --project src/McpSdkCompat.Harness -- check-deps2.运行测试
测试工具在运行测试之前自动构建所有项目:
# Run all tests (uses stdio transport by default)
dotnet run --project src/McpSdkCompat.Harness -- test
# Run specific SDK combinations
dotnet run --project src/McpSdkCompat.Harness -- test --server csharp --client typescript
# Run specific test(s)
dotnet run --project src/McpSdkCompat.Harness -- test -t ping tools_list
# Run with HTTP transport
dotnet run --project src/McpSdkCompat.Harness -- test --transport http
# Skip building (use previously built projects)
dotnet run --project src/McpSdkCompat.Harness -- test --no-build
# Verbose output
dotnet run --project src/McpSdkCompat.Harness -- test -v运输类型
测试套件支持两种传输类型:
标准传输(默认)
每个客户端都创建自己的服务器作为子进程,并通过stdin/stdout进行通信。
流式HTTP传输(实验)
服务器作为HTTP服务器运行,客户端通过HTTP请求连接。使用 --transport http 以启用。
测试矩阵
该测试套件验证了服务器和客户端的所有16种组合:
| C#客户端 | TS客户端 | Python客户端 | Go客户端 | |
|---|---|---|---|---|
| C#服务器 | ✓ | ✓ | ✓ | ✓ |
| TS服务器 | ✓ | ✓ | ✓ | ✓ |
| Py服务器 | ✓ | ✓ | ✓ | ✓ |
| 转到服务器 | ✓ | ✓ | ✓ | ✓ |
测试用例
该测试套件包括26个MCP兼容性测试,涵盖:
- 生命周期 -乒乓球连接
- 工具 -列表、调用、结果类型(文本、图像、嵌入式资源)、错误处理、分页
- 资源 -列表、读取文本/二进制内容、模板、错误处理
- 提示 -列出、获取参数、嵌入资源内容
- 日志记录 -设置日志级别,接收日志通知
- 补全 -自动完成提示参数和资源URI
- 错误处理 -协议错误、无效参数、未知方法
- 进度和取消 -进度通知和请求取消
要查看所有可用的测试:
dotnet run --project src/McpSdkCompat.Harness -- test list要查看特定测试的完整详细信息:
dotnet run --project src/McpSdkCompat.Harness -- test show 项目结构
mcp-sdk-compat/
├── src/
│ ├── McpSdkCompat.Harness/ # Test harness CLI (C#)
│ ├── servers/
│ │ ├── csharp/ # C# MCP server
│ │ ├── typescript/ # TypeScript MCP server
│ │ ├── python/ # Python MCP server
│ │ └── go/ # Go MCP server
│ └── clients/
│ ├── csharp/ # C# MCP client
│ ├── typescript/ # TypeScript MCP client
│ ├── python/ # Python MCP client
│ └── go/ # Go MCP client
├── McpSdkCompat.sln
└── global.jsonCLI命令
# Check all dependencies
dotnet run --project src/McpSdkCompat.Harness -- check-deps
# List available servers and clients
dotnet run --project src/McpSdkCompat.Harness -- list
# List available tests
dotnet run --project src/McpSdkCompat.Harness -- test list
# Run all tests
dotnet run --project src/McpSdkCompat.Harness -- test
# Run tests with filtering
dotnet run --project src/McpSdkCompat.Harness -- test \
--server csharp typescript \
--client csharp typescript python go \
-t ping tools_list \
--verbose
# Skip automatic build
dotnet run --project src/McpSdkCompat.Harness -- test --no-build