Token导航 LogoToken导航TokenDH.com
Test Coverage MCP Server logo
开发工具未说明官方级别未说明来源级核验

Test Coverage MCP Server

MCP Server

一个为AI助手提供.NET测试覆盖率工具直接访问的MCP服务器,支持运行测试、解析覆盖率报告、识别未覆盖分支等功能。

工具数

8

提示词数

0

GitHub Stars

0

资源数

0
C#Claude代码分析Claude

安装说明

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

作者 / 组织

Hyeonu-Cha

提供方

Hyeonu-Cha

最后核验

2026/5/17 20:23

快速接入

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

详细介绍

.net覆盖mcp

![build](https://github.com/Hyeonu-Cha/dotnet-coverage-mcp/actions/workflows/dotnet.yml) ![NuGet](https://www.nuget.org/packages/dotnet-coverage-mcp/) ![License: MIT](LICENSE)

一个MCP(模型上下文协议)服务器,为人工智能助手(Claude Code、Gemini CLI等)提供直接访问。NET测试覆盖率工具。运行dottest,解析Cobertura XML,识别未覆盖的分支,运行之间的覆盖率差异,并在整个stdio中附加测试代码。

目的

该服务器允许AI助手运行单元测试、收集覆盖率数据并分析结果,所有这些都不需要离开聊天室。而不是手动运行 dotnet test AI可以直接调用服务器的工具来:

  • 发现源文件并按行预算构建智能批处理
  • 运行一组经过筛选的测试并收集覆盖率
  • 阅读紧凑、人工智能优化的覆盖率摘要(方法级线路/分支率)
  • 根据可配置的目标速率(默认80%)检查每个文件的覆盖率
  • 将未覆盖的分支识别为结构化JSON
  • 跑步之间的覆盖范围不同,只看有什么变化
  • 使用原子写入将新测试代码附加到现有测试文件

运作原理

服务器作为控制台进程启动,并通过以下方式进行通信 标准 使用MCP协议。MCP兼容客户端(Claude Code、Gemini CLI等)启动流程并调用其工具,就像它们是函数一样。

AI Client    dotnet-coverage-mcp    dotnet test + reportgenerator

可用工具

工具说明
GetSourceFiles发现 .cs 文件、文件夹或 .csproj 项目。返回文件元数据(行数、方法计数)和按以下方式分组的智能批处理 lineBudget.
RunTestsWithCoverage快跑 dotnet test 使用XPlat代码覆盖率,通过以下方式生成JSON摘要 reportgenerator。返回到的路径 Summary.jsoncoverage.cobertura.xml.支持 forceRestoresessionId 用于并发隔离。
GetCoverageSummary解析 Summary.json 按分支覆盖率升序(从低到高)排序的结构化类/方法覆盖率数据。
GetFileCoverage从Cobertura XML获取单个源文件的覆盖率。退货 allMeetTarget (当所有类都符合配置时为true targetRate 用于线路和分支覆盖;默认值0.8)。支持 sessionId.
GetUncoveredBranches查找与给定名称匹配的方法的未覆盖分支条件。返回所有支持部分名称的匹配方法。支持 sessionId.
GetCoverageDiff将当前Cobertura XML与基线进行比较。显示方法级别的更改,包括新方法和删除的方法。支持 sessionId 用于并发隔离。
AppendTestCode将C#测试代码插入或附加到测试文件中。支持基于锚点的插入,具有空格容忍回退匹配功能。使用原子写入来防止文件损坏。
CleanupSession删除会话状态文件和 TestResults/coveragereport 目录。通过 sessionId 查看范围,或忽略清理比 maxAgeMinutes (默认值120)。

批处理工作流

对于具有许多源文件的项目,建议的工作流程是:

  1. 发现 --呼叫 GetSourceFiles 在文件夹或 .csproj 获取所有文件和智能批处理
  2. 跑一次 --呼叫 RunTestsWithCoverage 使用宽滤波器(例如。, *)收集所有文件的覆盖率
  3. 按文件检查 --呼叫 GetFileCoverage 对于当前批处理中的每个文件(即时XML解析,无需重新运行测试)
  4. 聚焦 --选择3种最低的分支覆盖率方法并调用 GetUncoveredBranches 对于每一个
  5. 编写测试 --使用 AppendTestCode 添加测试方法
  6. 重新运行和差异 --运行一次测试,调用 GetCoverageDiff 验证改进
  7. 重复 --继续,直到批处理文件达到目标速率(默认80%)或3个周期没有改进,然后移动到下一批

这最大限度地减少了 dotnet test 调用(主要瓶颈),同时仍跟踪每个文件的进度。

并发

通过传递 sessionId 对于每个工具调用:

  • 独立输出目录RunTestsWithCoverage 创造 TestResults-{hash}/coveragereport-{hash}/ 每个会话,防止一个代理在解析过程中删除另一个代理的XML
  • 作用域状态文件 --覆盖状态写入 .mcp-coverage/.coverage-state-{hash},所以 ResolveCoberturaPath 解析为每个会话的正确XML
  • 范围基线GetCoverageDiff 将基线存储为 .coverage-prev-{hash}.xml 每次会话
  • 原子写入 --所有文件写入(状态文件和测试代码)都使用write-to-temp,然后重命名,以防止竞争条件或进程崩溃造成的损坏

没有 sessionId,工具使用共享默认值——对单个代理使用是安全的。

需求

  • .NET 9.0 SDK(或更高版本)
  • 报表生成器 全局工具--安装一次:
  dotnet tool install --global dotnet-reportgenerator-globaltool
  • MCP兼容客户端(Claude Code、Gemini CLI等)
  • COVERAGE_MCP_ALLOWED_ROOT --推荐。设置为存储库根目录,以限制每个工具对该子树的文件系统访问。客户端在此根目录之外传递的任何路径都将被拒绝 pathNotAllowed未设置时,服务器会记录一次警告并接受任何路径(向后兼容,但不建议用于共享环境)。
  export COVERAGE_MCP_ALLOWED_ROOT=/path/to/your/repo

安装

建议的安装方式是全局安装。NET工具从NuGet:

dotnet tool install --global dotnet-coverage-mcp

安装后 dotnet-coverage-mcp 命令位于PATH中。

构建和运行(从源代码)

cd 

# Restore dependencies
dotnet restore

# Build
dotnet build

# Run
dotnet run

服务器将启动并通过stdin/stdout等待MCP消息。

MCP客户端配置

如果您是通过安装的 dotnet tool,将MCP客户端指向全局命令:

{
  "mcpServers": {
    "coverage": {
      "command": "dotnet-coverage-mcp",
      "transport": "stdio",
      "env": {
        "COVERAGE_MCP_ALLOWED_ROOT": "/path/to/your/repo"
      }
    }
  }
}

若要从源代码运行,请使用 dotnet run:

{
  "mcpServers": {
    "coverage": {
      "command": "dotnet",
      "args": ["run", "--project", "
"],
      "transport": "stdio"
    }
  }
}

或者直接指向已编译的可执行文件:

{
  "mcpServers": {
    "coverage": {
      "command": "
\\bin\\Debug\\net9.0\\DotNetCoverageMcp.exe",
      "transport": "stdio"
    }
  }
}

刀具参数

GetSourceFiles

参数类型必填说明
pathstring路径 .cs 文件、文件夹或 .csproj 项目
lineBudgetint每批的最大总行数(默认值:300)。小文件被分组在一起;大文件有自己的批处理。

RunTestsWithCoverage

参数类型必填说明
testProjectPathstring完整路径 .csproj 测试项目
filterstring测试筛选器字符串(与匹配 FullyQualifiedName).使用 *, 用于跨多个测试类的广泛运行。
workingDirstring工作目录;默认为项目目录
forceRestorebool何时 true,跳过 --no-restore 旗帜。在构建新的测试项目或添加NuGet包后使用。
sessionIdstring隔离输出目录(TestResults-{hash}/, coveragereport-{hash}/)以及用于并发多代理使用的状态文件。
includeClassstring将覆盖率收集限制为与此名称匹配的类型。已转发至封面 /p:Include=[*]*{includeClass}设定时始终受到尊重,独立于 filter --将显式值传递给范围覆盖率;省略它以收集跑步所涉及的所有内容的报道。

GetCoverageSummary

参数类型必填说明
summaryJsonPathstring生成的完整路径 Summary.json 文件

GetFileCoverage

参数类型必填说明
coberturaXmlPathstring路径 coverage.cobertura.xml (回到 .mcp-coverage/.coverage-state 如果未找到)
sourceFileNamestring要查找的源文件名(例如。, ExampleService.cs)
sessionIdstring解析会话范围的状态文件以实现并发隔离。
targetRate用于计算的双覆盖阈值(0.0-1.0) allMeetTarget.默认值 0.8.

GetUncoveredBranches

参数类型必填说明
coberturaXmlPathstring路径 coverage.cobertura.xml (回到 .mcp-coverage/.coverage-state 如果未找到)
methodNamestringYes要检查的方法名称(支持部分匹配;返回所有匹配的方法)
sessionIdstring解析会话范围的状态文件以实现并发隔离。

GetCoverageDiff

参数类型必填说明
coberturaXmlPathstring当前路径 coverage.cobertura.xml
workingDirstring存储基线的目录;默认为XML的父目录
sessionIdstring将基线隔离为 .coverage-prev-{hash}.xml 并解析会话范围的状态文件。

AppendTestCode

参数类型必填说明
testFilePathstring目标的完整路径 .cs 测试文件
codeToAppendstring要插入的C#代码
insertAfterAnchorstring如果提供,则在该字符串的最后一次出现后插入代码(允许空格回退)。如果省略,则在最后一个之前附加 }.

CleanupSession

参数类型必填说明
workingDirstring项目工作目录包含 .mcp-coverage/ 和测试结果工件
sessionIdstring设置后,仅删除此会话范围内的状态文件和目录。
maxAgeMinutesint何时 sessionId 省略,删除超过这几分钟的伪影。默认 120.

状态文件

所有状态文件都写入到 .mcp-coverage/ 工作目录中的子目录,保持项目根目录的干净。添加 .mcp-coverage/ 到目标存储库 .gitignore.

文件目的
.coverage-state单代理使用的默认Cobertura XML路径
.coverage-state-{hash}会话范围的Cobertura XML路径
.coverage-prev.xmldiff的默认覆盖基线
.coverage-prev-{hash}.xml会话范围覆盖基线

插件(技能和代理)

此回购包括 plugin/ 具有Claude Code技能的目录和用于指导测试覆盖工作流程的代理定义:

plugin/
├── plugin.json
├── agents/
│   └── test-coverage.agent.md
└── skills/
    ├── scaffold-test-files/     — Create test directories and files mirroring source structure
    ├── run-coverage/            — Run tests and view coverage reports
    ├── analyze-coverage-gaps/   — Find uncovered branches and compare diffs
    └── improve-test-coverage/   — Iterative loop to reach 80% coverage

这些技能通过框架无关的参考文档支持NUnit、xUnit和MSTest references/unit.mdreferences/integration.md.

依赖项

包装版本用途
Microsoft.Extensions.Hosting10.0.7DI和托管
ModelContextProtocol1.2.0MCP服务器框架
Microsoft.CodeAnalysis.CSharp5.3.0Roslyn AST用于安全的代码插入和精确的方法计数(~15MB)

安全

netscoverage-mcp作为本地stdio进程运行,并验证每个工具参数 COVERAGE_MCP_ALLOWED_ROOT 限制文件系统访问。看 安全.md 对于威胁模型,强化建议,以及如何报告漏洞。

贡献

欢迎捐款。看 贡献.md 为了发展 设置、拉取请求准则和代码约定。跟踪显著变化 在 更改日志.md.

释放

仅限维护者——发布过程、NuGet发布和MCP注册表提交记录在 发布.md.

目录标签

目录标签

C#Claude代码分析测试覆盖率本地部署.NET工具AI集成单元测试

支持客户端

Claude

接入字段

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

未说明

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

none

工具数量(toolCount,工具数)

8

资源数量(resourceCount,资源数)

0

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

0

权限和风险

未说明none部署方式未说明

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

安装前确认

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

仍需确认:installCommand

来源信息

继续浏览同类 MCP

上一个 MCP

Test Coverage MCP

一个提供智能测试覆盖率分析的工具,支持多种覆盖率平台,具有可扩展的架构和稳定的工具接口。

下一个 MCP

TestDino MCP

TestDino MCP is a Model Context Protocol server that lets AI agents work directly with your Playwright test data, without leaving your editor or opening a browser. Once connected, your AI assistant can browse TestDino runs, inspect failing tests, and manage manual cases using plain language. Ask it to “show the last 5 failed runs in production,” “debug the checkout flow test,” or “list all critical manual test cases in project X,” and it will call the right tools behind the scenes. The server exposes 12 focused tools for CI runs, debugging, and manual test management. You can: Check account health and validate your PAT Filter runs by branch, commit, author, time window, or environment Drill into a single test case, including errors, logs, steps, screenshots, and traces Run debug_testcase to aggregate historical failures, classify patterns, and get AI‑ready prompts for root‑cause analysis and flakiness Create, update, and organize manual test cases and suites (status, severity, tags, layers, behaviors) TestDino MCP is MCP‑compatible and works with clients like Cursor and Claude Desktop. Configure it via mcp.json using either npx testdino-mcp (no install) or a global install (npm install -g testdino-mcp), and provide a TESTDINO_PAT from your TestDino account. Typical use cases include: speeding up Playwright failure triage from within your IDE, giving AI agents structured access to real test history, and keeping manual test management in sync with how your team actually debugs CI.