SDK兼容性测试套件

MCP SDK兼容性测试套件,用于验证不同语言实现的MCP SDK之间的互操作性。

  • by MackinnonBuck
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 MackinnonBuck/mcp-sdk-compat

使用说明

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-deps

2.运行测试

测试工具在运行测试之前自动构建所有项目:

# 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 <test_id>

项目结构

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.json

CLI命令

# 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

参考文献