mcp-server-lint Skill 技能
MCP 服务器工具声明合规性检查器
技能简介
mcp-server-lint 是给 Model Context Protocol(MCP)服务器开发者用的静态合规性检查器。在你把 MCP server 的 tools 暴露给 Claude / OpenAI 之前,先用它扫描一遍,看哪些 tool 声明会被 Antrhopic / OpenAI 的兼容性规则直接打回。零运行时依赖(zero runtime deps),规则集与真实违规计数全部基于 2026-09-08 抓取的 2,283 个独立 MCP server / 29,574 个 tool 声明 语料。规则集被"冻结"且带实测违规计数,开发者可以判断每条规则命中多少"已知不兼容"。当前版本 0.1.0(2026-09-30)。
- 一句话定位:Lint a live MCP server's tool declarations before connecting them to an agent.
- 核心价值:上线前用真实违规频次预演每条规则的影响,省掉后期排查"为什么我的 tool 没被调用"
核心能力
- Live HTTP 探测 + Local file 输入双模式:
npx mcp-server-lint@0.1.0 lint https://YOUR_SERVER/mcp(Streamable HTTP + JSON / SSE framing,支持 MCP session header;paginatedtools/list);或lint --file tools.json(接受{ "tools":[...] }/ JSON-RPCresult.tools包装)。 - 冻结 6 条规则(带真实计数):
- R1 ERROR:
^[a-zA-Z0-9_-]{1,64}$name 校验(OpenAI function definition 字符集与上限;真实 821 / 821 / 26) - R2 ERROR:description 缺失/空白(启发式;27 / 27 / 2)
- R3 ERROR:inputSchema 缺失或根非 object(OpenAI Structured Outputs;0 / 0 / 0)
- R4 WARNING:属性无 description 或 enum 关键词(OpenAI 文档质量启发式;34,510 / 8,191 / 1,019)
- R5 ERROR:根 oneOf/anyOf/allOf/not/patternProperties 或外部
$ref(OpenAI Structured Outputs 不支持;111 / 111 / 40) - R6 ERROR:重复 tool name(歧义路由;0 / 0 / 0)
- R1 ERROR:
- JSON 输出 + 退出码语义:0=clean/benchmark 完成;1=lint ERROR;2=transport/input/verification 失败;3=需要付费 benchmark;WARNING 单条 exit 0。
- Schema 智能遍历:跳过
examples/defaults/enums,不 dereference 链接;R5 把任何非 fragment ref(含相对路径)判外部 ref。 - Benchmark 付费子命令(5 USDT once):一次性 TRC20 USDT 转账(地址
TLwka4h5Rje4cKTTFyitgBzuouG、合约TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t),提供 per-rule corpus percentile ranking;本地 honor-system gate(无密码学身份保护,buyer 自行 review)。 - 复现一切计数:自带
data/tool-surfaces.jsonl.gz与data/counts.json;node scripts/count-corpus.mjs ...在本地复算与官方一致;原始data/tool-surfaces.jsonlSHA-2567a4596a95d845828681b6dfe64ee580b9e11bf15a5534ad4a3821b55f3865aea可做完整性校验。 - 透明抽样说明:4,609 个候选 server 中 2,283 个产出保留 tools,11,835 未被探测;抽样偏差是 schema-presence 计数偏高,但诚实地写在 README。
- 流量与隐私边界:Live 模式只发
initialize/notifications/initialized/tools/list(不做任何 tool 调用);responses 限 32 MiB + 1,000 页;local file 不发任何网络包;零 telemetry。
安装配置
- Node.js 前置:要求 Node.js 22 或更高。
- npx 临时运行:
npx --yes mcp-server-lint@0.1.0 lint https://YOUR_SERVER/mcp。 - 全局安装:
npm install --global mcp-server-lint@0.1.0后用mcp-server-lint lint https://YOUR_SERVER/mcp。 - 本地文件 lint:
mcp-server-lint lint --file tools.json(无需起 server)。 - Benchmark 命令:
mcp-server-lint benchmark https://YOUR_SERVER/mcp --payer YOUR_TRON_SENDING_ADDRESS;需先向TLwka4h5Rje4cKTTFyitgBzuouG转 ≥ 5 USDT(TRC20),网络费自付;自动从 TronGrid 公开账本读取入账。 - Token 合约要求:仅接受
TR7NHqjeKQxGTCi8q8ZY4pL8otSzgjLj6t(USDT 官方合约);用交易所出金请确认发送地址与命令行传入一致。 - Legacy 传输说明:GET/SSE transport、stdio、需鉴权的端点在 0.1.0 暂不支持;建议用导出 JSON 的方式喂
--file。
使用步骤
- 准备 server URL 或 tools.json:把 MCP server 起在可访问的 URL(或把
tools/list响应写成 JSON 文件)。 - 第一次扫描:
npx --yes mcp-server-lint@0.1.0 lint https://YOUR_SERVER/mcp;观察每条规则的 findings 数。 - 复现官方计数:
cd node_modules/mcp-server-lint && node scripts/count-corpus.mjs data/tool-surfaces.jsonl.gz /tmp/recount.json,对比data/counts.json验证数据集完整性。 - 修正违规:按 R1/R2/R3/R5/R6 ERROR 修 name、description、inputSchema、移除 oneOf/外部 ref、消重;R4 WARNING 视情清理。
- 本地离线 lint:CI 中可
mcp-server-lint lint --file tools.json,避免调用真实 server。 - 可选 Benchmark:5 USDT 转账后用
benchmark --payer <address>获取 percentile 排名;Tied 分数单独给出。 - 集成进 CI:在 PR pipeline 跑
mcp-server-lint lint --file exported-tools.json;exit code 1 时阻断合并。
适用场景
- MCP server 上线前合规审查:每次发布前 lint 一遍,避免上线后才发现 tool 不被调用。
- 第三方 MCP server 接入评估:采购前用
mcp-server-lint评估供应商的 tool 声明质量。 - CI 流水线合规校验:把 lint 加进 PR check,ERROR 即阻断合并。
- Schema 演化实验:改完 JSON schema 后快速复算违规计数,看 R1/R5 命中变化。
- MCP 协议课程教学:把规则与真实违规计数做成课堂案例。
- AI 安全审计:与 Snyk / Sonar 类似思路,把 MCP 生态质量基线化。
适用人群
- MCP server 开发者:在上线前自查工具声明是否会被 Claude / OpenAI 直接打回。
- AI Agent 平台架构师:评估第三方 MCP server 接入质量。
- CI / DevOps 工程师:把 MCP 工具质量检查纳入发布流水线。
- AI 协议研究者:研究 MCP / OpenAI function 定义 / Structured Outputs 兼容性边界。
- 企业 AI 治理:用 lint 的真实违规计数建立 MCP server 白名单机制。
- AI 教育者:MCP 课程教材配套工具。
工作原理
mcp-server-lint 在 live 模式下按 MCP 规范发 initialize → notifications/initialized → paginated tools/list(仅读取声明,不调任何 tool),然后用自带的 frozen 规则集遍历 declarations。R4 检查包括嵌套 schema 的 description / enum keyword 存在性;R5 把任何非 fragment $ref(含相对路径)判定为外部 ref;schema 遍历跳 examples/defaults/enums,不解析 link 标签;R6 仅在单 endpoint tools/list 内查重,不跨 endpoint。Benchmark 子命令通过本地 honor-system 读取 TronGrid 入账历史(GET /v1/accounts/{addr}/transactions/trc20),本地按 sender/recipient/token/decimals/amount/type 匹配,把 affected-tool 比例与语料整体百分位排名(分母固定 2,283)。整个程序零运行时依赖,零 telemetry,原始语料 SHA-256 公开可验。
官方链接
- npm 包:https://www.npmjs.com/package/mcp-server-lint
- 维护者:npm user
justaiagent - 协议:License 见仓库
LICENSE(lint 与语料重算可商用;benchmark 使用需 5 USDT TRC20 一次性付款) - 当前版本:v0.1.0(2026-09-30)
评论与建议
登录 后参与评论或提建议