mcpField
C
contribpath

contribpath

本地服务
github.com/CloudCorpRecords开发工具01 周前更新

关于 contribpath

contribpath 将提供的 CONTRIBUTING 文本与仓库实际贡献门槛进行比较,并报告已记载和缺失的要求。维护者可用它检查指南是否涵盖所提供的门槛;匹配采用不区分大小写的子串检查。

主要功能

  1. 01匹配门槛标签和替代关键词
  2. 02报告已记载及缺失的门槛 ID
  3. 03计算覆盖率和判定结果
  4. 04找出未匹配任何门槛的主题
  5. 05验证输入及重复门槛 ID

适用场景

  1. 01根据 CI 要求审查 CONTRIBUTING 指南
  2. 02检查贡献文档是否包含发布步骤
  3. 03找出门槛列表之外的文档主题

MCP 相关

MCP 服务提供 `check_contributing_coverage` 工具,接收文档文本、贡献门槛及可选的已记录主题,并返回覆盖率和缺口。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-contribpath": {
"command": "npx",
"args": [
"-y",
"@reneturcios/contribpath"
]
}
}
}
启动命令npx -y @reneturcios/contribpath

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

安装包
npm@reneturcios/contribpath0.1.0
ocighcr.io/cloudcorprecords/contribpath:0.1.0

工具

1

收录的工具列表 · 更新于 1 周前

参数类型必填说明
gatesarray是仓库的实际贡献门槛
documentstring是要检查的贡献指南文档文本
documented_topicsarray否调用方从文档中提取的主题,用于与门槛集合进行核对(可选)

详细介绍

contribpath

CONTRIBUTING 指南即便写得很出色,也仍可能让新贡献者不知所措,因为文档与仓库的实际要求会出现偏差:指南没有提到 CI 强制要求的 DCO 签署,或发布机器人要求的 changeset。contribpath 用于衡量这种偏差。你提供文档文本和仓库实际设有的关卡——每个关卡都包含一个 id、在文档中会出现的标签,以及任何同样可计入的替代表述——它会报告哪些关卡已有文档说明、哪些缺失、覆盖率是多少,以及最终判定。

匹配方式刻意保持简单且可审计。所有内容都会转换为小写;如果文档包含关卡标签,或至少包含一个非空关键词作为子字符串,该关卡就算已有文档说明。空关键词会被有意忽略:空字符串是每份文档的子字符串,若将其计入,就会把每个关卡都标记为已覆盖,从而掩盖这个工具要找出的缺口。任一信号单独成立就足够——即使标签从未出现,只要关键词匹配,该关卡仍可算作已覆盖;如果关卡没有任何关键词,仅凭标签也能算作已覆盖。

覆盖率按 Math.round(100 * documented / gate_count) 计算,因此三个关卡中有两个已说明时,结果是 67,而不是 66。覆盖率为 100 时,判定为 complete;达到 60 时,判定为 partial;低于 60 时,判定为 sparse。已说明和缺失列表会按照关卡的输入顺序列出各关卡 id,因此报告顺序与调用方提供的关卡列表一致。

如果调用方还从文档中提取了主题,可以通过 documented_topics 传入,以找出完全没有对应关卡的主题。如果主题与某个关卡的 id 完全一致,或忽略大小写后与该关卡标签相同,则视为匹配;没有匹配任何关卡的主题会按原样、按输入顺序放入 extra_topics。未提供主题时,extra_topics 为空。

重复的关卡 id 会导致错误,并指出对应的 id——同一关卡有两条记录会使覆盖率失去意义。格式错误的输入——缺少 document、其值不是字符串、缺少或为空的 gates 数组、关卡缺少 id 或 label、其值为空或不是字符串、keywords 的值不是字符串数组,或 documented_topics 中的条目不是非空字符串——会导致验证错误,并指出出错路径,不返回部分结果。未知的额外字段会被忽略,包括关卡条目中的字段。计算是纯本地操作:不会访问网络,不需要配置,也不会读取或修改任何仓库。contribpath 只比较你提供的内容;从仓库中提取关卡则是另一项工作。

CLI

npx @reneturcios/contribpath check --input args.json
npx @reneturcios/contribpath --version

args.json 包含完整的参数对象:

{
  "document": "Please sign off your commits (DCO) and add a changeset.",
  "gates": [
    { "id": "dco", "label": "Developer Certificate of Origin", "keywords": ["dco", "sign off"] },
    { "id": "changeset", "label": "Changeset" },
    { "id": "cla", "label": "Contributor License Agreement", "keywords": ["cla"] }
  ],
  "documented_topics": ["dco", "Changeset", "Code of Conduct"]
}

结果会以 JSON 格式打印:

{
  "documented": ["dco", "changeset"],
  "missing": ["cla"],
  "extra_topics": ["Code of Conduct"],
  "coverage_percent": 67,
  "verdict": "partial",
  "gate_count": 3
}

空的 document 字符串是有效输入:所有关卡都会被标记为缺失,判定为 sparse。退出码:成功时为 0,运行时错误时为 1(包括输入文件无法读取或无效,以及输入无效),用法错误时为 2。

MCP server

npx -y @reneturcios/contribpath mcp

MCP 客户端配置:

{
  "mcpServers": {
    "contribpath": {
      "command": "npx",
      "args": ["-y", "@reneturcios/contribpath", "mcp"]
    }
  }
}
工具
  • check_contributing_coverage — 根据仓库实际的贡献关卡检查 CONTRIBUTING 文档。

    • document(字符串,必填,可为空)— 要检查的贡献指南文本
    • gates(数组,必填,至少包含 1 项)— 仓库实际设有的贡献关卡;每项都是一个对象,包含:
      • id(字符串,必填,不能为空)— 关卡标识符
      • label(字符串,必填,不能为空)— 在文档中会出现的关卡标签
      • keywords(字符串数组,可选)— 同样可用于判定关卡已有文档说明的替代表述
    • documented_topics(字符串数组,可选)— 调用方从文档中提取的主题,用于与关卡集合进行匹配

    返回 {documented, missing, extra_topics, coverage_percent, verdict, gate_count}。

Docker

docker run -i ghcr.io/cloudcorprecords/contribpath
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/contribpath check --input /w/args.json

开发

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

License

MIT — Copyright (c) 2026 Rene Turcios

评论

支持 Markdown

第一次接触 MCP?

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

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