Token导航 LogoToken导航TokenDH.com
Zero MCP Test Kit Dotnet logo
运维云端未说明官方级别未说明来源级核验

Zero MCP Test Kit Dotnet

MCP Server

ZeroMcp.TestKit是一个流畅的.NET API,用于测试MCP(Model Context Protocol)服务器,集成了xUnit以支持Visual Studio Test Explorer。

工具数

2

提示词数

0

GitHub Stars

1

资源数

0
C#本地部署云端部署

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

ZeroMcp

提供方

ZeroMcp

最后核验

2026/5/17 20:23

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

ZeroMcp。测试套件--。NET DSL

流利。NET API,用于测试MCP(模型上下文协议)服务器。包裹 mcptest 生锈的发动机和 与xUnit集成,支持Visual Studio测试资源管理器。

快速开始

using ZeroMcp.TestKit;

await McpTest
    .Server("http://localhost:8000/mcp")
    .Tool("search")
        .WithParams(new { query = "hello" })
        .ExpectSchemaMatch()
        .ExpectDeterministic()
    .RunAsync();

包裹

包装用途
ZeroMcp.TestKit核心DSL、型号、发动机转轮
ZeroMcp.TestKit.XunitxUnit属性([McpFact], [McpTheory])以及 McpAssert

发动机分辨率

mcptest 二进制文件按以下顺序自动定位:

  1. MCPTEST_PATH 环境变量(二进制文件的完整路径)
  2. NuGet本机资产(runtimes/{rid}/native/mcptest)
  3. 系统 PATH

每个构建器的覆盖: .WithEnginePath("path/to/mcptest")

流利的API

await McpTest
    .Server("http://localhost:8000/mcp")
    .WithTimeout(TimeSpan.FromSeconds(30))
    .WithDeterminismRuns(5)
    .ValidateProtocol()
    .ValidateMetadata()
    .WithAutoErrorTests()
    .Tool("search")
        .WithParams(new { query = "hello" })
        .ExpectSchemaMatch()
        .ExpectDeterministic()
        .WithIgnorePaths("$.result.timestamp")
    .Tool("echo")
        .WithParams(new { text = "world" })
        .ExpectSchemaMatch()
    .RunAsync();

关键方法

McpServerBuilder (从 McpTest.Server(url)):

  • .WithTimeout(TimeSpan) --全局超时
  • .WithDeterminismRuns(int) --确定性检查的重新运行次数
  • .ValidateProtocol() --启用MCP握手+JSON-RPC帧验证
  • .ValidateMetadata() --验证工具名称、描述、inputSchema
  • .WithAutoErrorTests() --自动生成错误路径测试
  • .Tool(name) --添加工具测试用例

McpToolBuilder (从 .Tool(name)):

  • .WithParams(object) --工具调用参数
  • .ExpectSchemaMatch() --根据声明的模式验证输出
  • .ExpectDeterministic() --跨运行断言相同的输出
  • .WithIgnorePaths(params string[]) --确定性中要跳过的JSONPath字段
  • .ExpectError() / .ExpectErrorCode(long) --误差路径测试
  • .ExpectMinStreamChunks(int) --流验证
  • .WithTimeout(TimeSpan) --每个工具超时覆盖

执行:

  • .RunAsync() --执行并投掷 McpTestException 失败时
  • .RunWithoutThrowAsync() --执行并返回结果而不抛出

xUnit 集成

using ZeroMcp.TestKit;
using ZeroMcp.TestKit.Xunit;

public class MyMcpServerTests
{
    [McpFact(DisplayName = "search returns valid schema")]
    public async Task SearchToolSchemaValid()
    {
        await McpTest
            .Server("http://localhost:8000/mcp")
            .Tool("search")
                .WithParams(new { query = "hello" })
                .ExpectSchemaMatch()
            .RunAsync();
    }
}

McpAssert助手

var result = await McpTest
    .Server("http://localhost:8000/mcp")
    .Tool("search").WithParams(new { query = "hi" }).ExpectSchemaMatch()
    .RunWithoutThrowAsync();

McpAssert.Passed(result);
McpAssert.ToolPassed(result, "search");
McpAssert.SchemaValid(result, "search");
McpAssert.Deterministic(result, "search");

响应值断言

引擎现在将原始MCP服务器响应包含在每个工具结果中。使用这些助手 对特定的响应属性和值进行断言:

var result = await McpTest
    .Server("http://localhost:8000/mcp")
    .Tool("search").WithParams(new { query = "hi" })
    .RunWithoutThrowAsync();

// Assert a specific property path has an expected value
McpAssert.ResponseContains(result, "search", "content[0].text", "hello world");

// Assert a property exists at a given path
McpAssert.ResponseHasProperty(result, "search", "content[0].type");

// Get the raw JsonElement for custom assertions
var response = McpAssert.GetResponse(result, "search");
Assert.Equal("text", response.GetProperty("content")[0].GetProperty("type").GetString());

流畅的断言链

var result = await McpTest
    .Server("http://localhost:8000/mcp")
    .Tool("search").WithParams(new { query = "hi" })
    .RunWithoutThrowAsync();

result
    .Passed()
    .HasToolName("search")
    .HasValidSchema("search")
    .HasReturnProperty("content")
    .HasReturnValue("search", "content[0].type", "text");

项目结构

dotnet/
├── ZeroMcp.TestKit.slnx
├── src/
│   ├── ZeroMcp.TestKit/           # Core DSL library
│   │   ├── Models/
│   │   │   ├── McpTestDefinition.cs
│   │   │   └── McpTestResult.cs
│   │   ├── McpTest.cs
│   │   ├── McpServerBuilder.cs
│   │   ├── McpToolBuilder.cs
│   │   ├── McpTestRunner.cs
│   │   ├── EngineResolver.cs
│   │   └── McpTestException.cs
│   └── ZeroMcp.TestKit.Xunit/     # xUnit integration
│       ├── McpFluentAssertions.cs
│       ├── McpFactAttribute.cs
│       ├── McpTheoryAttribute.cs
│       └── McpAssert.cs
└── tests/
    └── ZeroMcp.TestKit.Tests/     # Unit tests (33 passing)
        ├── Models/
        │   ├── McpTestDefinitionTests.cs
        │   └── McpTestResultTests.cs
        ├── FluentApiTests.cs
        ├── McpTestExceptionTests.cs
        ├── McpAssertResponseTests.cs
        └── EngineResolverTests.cs

建筑

dotnet build
dotnet test

需求

  • .NET 8.0 SDK
  • mcptest 二进制(见上文发动机分辨率)

许可证

麻省理工学院

目录标签

目录标签

C#本地部署云端部署MCP测试.NETAPIxUnit集成

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP