mcpField
J
Jarroba Tools · Test audit

Jarroba Tools · Test audit

本地服务
github.com/Invarato开发工具05 天前更新

关于 Jarroba Tools · Test audit

Jarroba Tools · Test audit 是面向开发者的本地 MCP 服务,用于检查测试实际验证的内容。它解析测试文件而不运行代码,并比较变更以发现被削弱的断言和禁用测试。

主要功能

  1. 01提供断言审计及证据
  2. 02比较测试文件版本
  3. 03按类型生成测试用例建议
  4. 04查找禁用测试及其时长
  5. 05解析五种语言且不执行代码

适用场景

  1. 01检查测试是否真正验证某个值
  2. 02确认代码变更是否削弱测试保护
  3. 03根据类型或 Schema 推导边界用例
  4. 04优先处理长期禁用的测试

MCP 相关

通过 stdio 向 MCP 客户端提供四种测试审计工具。它读取本地文件并进行解析,不会执行测试或代码。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"invarato-jarroba-tools-tests": {
"command": "npx",
"args": [
"-y",
"@jarroba/mcp-tests"
],
"env": {
"JARROBA_MCP_DOMAINS": "<JARROBA_MCP_DOMAINS>"
}
}
}
}
启动命令npx -y @jarroba/mcp-tests
需要配置的环境变量
JARROBA_MCP_DOMAINSWhich tool domains to publish, comma-separated. Defaults to what this package is for. Valid: core, calc, diagram, kg, db, ai, logs, queue, project, tests, api, chip, chem, access, archsim, security, experiments, payroll. Fewer domains means less of your context window spent on tool definitions.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@jarroba/mcp-tests0.3.0

工具

4

收录的工具列表 · 更新于 4 天前

参数类型必填说明
pathstring否测试文件的路径。根据扩展名推断语言。
textstring否以文本形式提供的测试文件。可替代 `path`。
dialectsarray否你自己的断言辅助函数。如果团队有自定义的 expect(),请在此处声明,这样它就不会再被判定为“indeterminate”。
languageenum否如果传入 `text` 而不传 `path`,则必填。typescript | javascript | python | java | go

详细介绍

@jarroba/mcp-tests

一个用于审查测试而非编写测试的 MCP 服务——旨在让你用自己的工作接受检验。

claude mcp add jarroba-tests -- npx -y @jarroba/mcp-tests
// Claude Desktop, Cursor, Cline, VS Code…
{ "mcpServers": { "jarroba-tests": { "command": "npx", "args": ["-y", "@jarroba/mcp-tests"] } } }

4 个工具 · 上下文约 1.7k tokens · 使用 stdio,在你的机器上运行 · 不会上传任何内容。

为什么要做这个

当 Agent 被要求 “让测试通过” 时,有两条路:诊断 bug,或放宽匹配器/删除断言/跳过用例。第二条路成本更低,能让测试变绿,看起来也像是在干活。

更好的模型解决不了这个问题,在提示词里好言相劝也无济于事——这是由结构性激励造成的。需要一个模型之外的裁判。这就是它的作用:在 Jarroba Tools 工具目录中,唯有它的目的就是反驳调用它的人。

工具

test_audit逐个检查测试文件中的用例,说明它们实际断言了什么:哪些断言了某个值,哪些只检查某个东西是否存在,哪些完全没有断言,哪些已禁用——并给出每项判定的依据,以便你检验审查器。支持 TypeScript、JavaScript、Python、Java、Go。
test_diff_audit比较同一文件的两个版本,判断变更是加强还是削弱了安全网:放宽匹配器(toBe → toContain → toBeGreaterThan)、消失的断言、停止运行的用例。在声称完成之前,先用它检查自己的 diff。
test_cases从一个类型推导出值得编写的用例——根据 TypeScript 签名或 JSON Schema 列出等价类和边界值,并说明适用的技术及其原因。边界值若没有顺序就毫无意义,因此布尔值和枚举不会产生边界值。包含一个 fast-check 属性测试,以及如果你只有时间写 5 个用例,最重要的 5 个用例(它们绝不会从典型值开始)。
test_debt列出每个已禁用测试及其存在时长,信息来自 git blame。覆盖率报告不会显示这些测试,因为在运行器看来,它们根本不存在——这就是无人衡量、却最持久的债务。按最久远的测试优先排序,让结果切实可用。

不会执行任何操作。不会运行测试,也不会评估代码:它使用 tree-sitter 解析。

不会轻易指责

对于无法识别的匹配器,结果会是**“无法判定”**,绝不会说成“没有断言”。有疑问时,它会选择弃权,因为错误指责会让这类工具被停用。如果你的团队有自定义的 expect(),将它添加到 dialects 中,它就不会再含糊其辞。

在五种语言(TypeScript、JavaScript、Python、Java、Go)的带标签语料库上进行测量:21 次指责,21 次均属实,零误报,解析器也没有无法界定的情况。这就是这项测量的真实规模——21 次指责,而非基准测试——每次变更都会重新运行,因此它只是一个下限,而非夸大其词的承诺。

隐私

传输方式为 stdio:你的 MCP 主机将其作为子进程启动,并通过 stdin/stdout 通信。没有端点、账号或遥测数据。npx 首次运行时会从 npm 下载软件包;此后不会有任何数据传出。

test_audit 和 test_debt 接受文件路径,并读取启动它们的进程能够读取的内容,因此它们拥有的权限与 MCP 主机完全相同。test_debt 还会在你指定的文件夹中调用 git blame——测试存在时长的信息就来自这里,这也是浏览器绝对做不到的事情。

更多信息

想要全部功能(90 个工具:按路径查看日志、使用真正的临时 PostgreSQL 数据库、JTD 图表、SPARQL、make 模拟)?@jarroba/mcp。 只需要日志?@jarroba/mcp-logs。

MIT 许可——请参阅 LICENSE。源代码:github.com/Invarato/jarroba-mcp。

此软件包重新分发了 tree-sitter 语法(MIT,第三方);相关声明见 dist/tree-sitter/NOTICE.txt。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。