mcpField
M
mcp-probe

mcp-probe

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

关于 mcp-probe

mcp-probe 是用于测试和评分 MCP 服务的命令行工具,面向服务开发者及验证集成的团队。它会检查工具、资源和提示词,并提供发布就绪度评分及用于 CI 检查的契约快照。

主要功能

  1. 01使用生成的示例参数调用工具
  2. 02读取资源并渲染提示词
  3. 03验证工具 Schema
  4. 04生成健康度和发布就绪度评分卡
  5. 05记录并比较服务契约快照
  6. 06通过退出码集成 CI 检查

适用场景

  1. 01在开发期间发现服务回归
  2. 02依据健康度或发布就绪度检查阻止 CI 构建
  3. 03集成前评估第三方服务
  4. 04检测契约中的破坏性或安全相关变更

MCP 相关

通过 stdio、Streamable HTTP 或 SSE 测试 MCP 服务,包括工具、资源和提示词。它还可记录并比较服务契约,以用于 CI 门禁。

配置

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

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

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

安装包
npm@incultnitollc/mcp-probe1.2.0

工具

2

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

参数类型必填说明
targetstring是MCP 服务目标:启动命令或 http(s) URL。
headersarray否远程传输的标头,例如 "Authorization: Bearer x"。
timeoutnumber否每次操作的超时时间,单位为毫秒(默认值为 30000)。
transportenum否强制指定传输方式。省略时根据目标推断。stdio | sse | http

详细介绍

mcp-probe — 一条命令诊断你的 MCP 服务

mcp-probe

一条命令诊断你的 MCP 服务。

测试你的服务公开的每个工具、资源和提示词,然后生成包含通过/失败评分卡的健康报告。

基于 Anthropic Model Context Protocol(MCP)规范构建。

**注意:**已发布到 npm,包名为 @incultnitollc/mcp-probe。CLI 二进制文件名为 mcp-probe。npm 上不带作用域的名称 mcp-doctor 属于另一个无关工具,因此本项目使用带作用域的名称发布。版本 <= 0.2.1 使用已弃用的作用域 @incultnitostudiosllc 发布——请改为安装 @incultnitollc/mcp-probe。

mcp-probe 演示

npx @incultnitollc/mcp-probe test "npx -y @modelcontextprotocol/server-everything"

30 秒内测试你的 MCP 服务

检查项描述
工具调用根据输入架构自动生成示例参数,并调用每个工具
资源读取读取每个资源并验证是否返回内容
提示词渲染使用示例参数获取每个提示词,并验证是否返回消息
架构验证检查工具架构是否缺少描述、必填字段是否无效、类型是否格式错误
健康评分将所有结果汇总为通过/失败评分卡

安装

npm install -g @incultnitollc/mcp-probe

也可以直接运行:

npx @incultnitollc/mcp-probe test "your-server-command"

用法

本地 stdio 服务
npx @incultnitollc/mcp-probe test "npx -y @modelcontextprotocol/server-everything"
远程服务(Streamable HTTP)
npx @incultnitollc/mcp-probe test https://your-server.example.com/mcp
远程服务(SSE)
npx @incultnitollc/mcp-probe test https://your-server.example.com/mcp --transport sse
经过身份验证的远程服务
npx @incultnitollc/mcp-probe test https://your-server.example.com/mcp \
  --header "Authorization: Bearer $TOKEN"
选项
标志描述
--json将结果输出为 JSON
--timeout <ms>每项操作的超时时间(默认值为 30000)
--transport <kind>强制使用 stdio、sse 或 http(根据目标自动检测)
--header <Name: value>为远程传输添加标头。可重复使用。
退出代码
  • 0 — 所有检查均通过
  • 1 — 一项或多项检查失败(适用于 CI 门禁)
JSON 输出

使用 --json 获取用于自动化的结构化输出:

mcp-probe test --json "your-server" | jq '.score'
{
  "toolsCallable": 12,
  "toolsTotal": 13,
  "resourcesReadable": 7,
  "resourcesTotal": 7,
  "promptsGettable": 3,
  "promptsTotal": 4,
  "schemaErrors": 0,
  "schemaWarnings": 1
}

工具调用的工作原理

mcp-probe 根据每个工具的 inputSchema 自动生成参数:

  • 仅为必填字段赋值(最安全的做法)
  • 优先使用 default 值和 enum 的首选项(如有)
  • 根据字段名称推断合理的默认值(url → https://example.com,email → [email protected])
  • 使用符合类型的默认值作为后备(string → "test",number → 1,boolean → false)

这意味着必填输入复杂的工具可能会失败——而这能提供有用的信息。它会告诉你,你的工具还不够独立,无法进行自动化测试。

可发布性评分(v1.1.0+)

mcp-probe 提供第二项互补检查:可发布性综合评分,用于评估服务器的架构、描述和元数据是否已准备好供他人安装,评分范围为 0–100。可使用简写运行:

npx @incultnitollc/mcp-probe score "npx -y @your-scope/your-server" --package ./package.json

也可以使用 --publishability 将其纳入完整的 test 运行:

npx @incultnitollc/mcp-probe test "npx -y @your-scope/your-server" --publishability --package ./package.json

综合评分包含三个子项——协议(传输格式是否正常工作)、边缘情况(是否能处理特殊输入)和可发布性(陌生人能否理解你的工具)——以及对可发布性维度的五轴细分:

轴检查内容
description-five-axis每个工具描述在用途、变更、 副作用、不变量、示例方面的详尽程度。低于 3.0/5 轴的工具会触发综合评分上限 ≤60。
enum-shape检查仅以文本描述的枚举(例如,在描述中写 "one of: open, closed",却没有 JSON Schema enum)。
mutation-legibility每个工具是否告知规划器它会修改数据,还是只读取数据?名称前缀、描述信号或注释均计入。
anti-purpose-clause影响范围大的工具(删除、发送、转账)应包含“不要用于 X,请优先使用 Y”的提示,指向功能范围更窄的工具。
distribution-metadatanpm 包就绪度——描述长度、关键词数量、repository / license / homepage 字段。未使用 --package 时跳过。
实际服务器的评分情况

五个官方 Anthropic MCP 服务在 v1.1.0 下的评分均为 60/100——每个服务都触发了 description-five-axis 上限。这不是评分标准的问题;这是 Anthropic 发布时的水平,也是大多数服务的起点。完整评分表见 docs/publishability-scorecards/。

CI 门禁
- uses: incultnitollc/mcp-probe@v1
  with:
    command: 'node dist/index.js'
    publishability: 'true'
    package: './package.json'
    fail-under: '70'
发布前与安装时

mcp-probe 的可发布性评分属于发布前质量范畴,面向发布服务前的服务作者。若要了解安装时的安全性范畴——即连接第三方服务前的服务安装人员,请参阅 @stephenywilson/mcp-doctor。面向的受众不同,但工具互为补充。

契约测试——“MCP 版 VCR”(v1.2.0+)

test/score 会告诉你服务器当前是否健康。契约测试会告诉你自上次以来发生了什么变化——这样,破坏性架构编辑或被投毒的工具描述就不会悄无声息地发布。

记录服务器契约的快照(包括其工具、资源、提示词及其架构——不含流量,也不产生副作用),提交 .mcpvcr 文件,然后针对每个 PR 执行 diff 或 gate。

# 1. Record a baseline (lists only — never calls a tool)
mcp-probe record "node dist/index.js" --out .mcp/contract.mcpvcr
git add .mcp/contract.mcpvcr && git commit -m "record MCP contract baseline"

# 2. See what a change did to the contract
mcp-probe diff --baseline .mcp/contract.mcpvcr "node dist/index.js"

# 3. Gate CI — exit 1 on breaking or security changes
mcp-probe gate --baseline .mcp/contract.mcpvcr "node dist/index.js"

每项变更都会分类,让门禁发挥实际作用而非产生噪声:

严重程度示例
❌ 破坏性移除工具 · 新增必需参数 · 移除属性 · 类型变更 · 枚举范围缩小
⚠️ 安全工具描述变更(暗中操纵 / 工具投毒) · 移除 readOnlyHint · 工具变为破坏性操作
✅ 增量新增工具 · 新增可选字段 · 扩大枚举范围
ℹ️ 信息服务器名称 · 资源/提示词描述文本

默认情况下,gate 会在出现 breaking,security 时失败——可使用 --fail-on breaking(或任意逗号分隔的集合)调整。快照具有确定性:对未更改的服务器重新录制会生成字节完全一致的文件,因此已提交的基线和差异始终整洁。使用 --against <file> 离线比较两个录制文件,无需连接实时目标;使用 --markdown <path> 生成可直接发布的 PR 评论。

为何重要:2026-07-28 MCP 规范包含破坏性变更(移除 initialize 握手、错误代码和 JSON-Schema 变更、HTTP+SSE → Streamable HTTP)。录制的 .mcpvcr 基线可将“我们是否破坏了客户端?”转化为一行 CI 检查。完整的 PR 工作流(含自动评论)请参阅 examples/contract-gate.yml。

使用场景

  • MCP 服务开发 — 在测试套件中运行 mcp-probe,及时发现回归问题
  • CI/CD 门禁 — 如果 MCP 服务未通过健康检查,则阻止部署
  • 服务评估 — 在集成第三方 MCP 服务前快速评估
  • 架构质量 — 在用户遇到问题前,找出缺失的描述和格式错误的架构

CI 集成

mcp-probe 在全部通过时以 0 退出,出现任何失败时以 1 退出,因此可以直接用于任何 CI 流水线:

# .github/workflows/mcp-health.yml
- name: Health-check MCP server
  run: npx @incultnitollc/mcp-probe test "$MCP_SERVER_CMD"

使用 --json 获取结构化输出,并用 jq 根据特定指标设置门禁(例如,若 schemaWarnings > 0,则使构建失败)。

GitHub Action

只需两行,即可将 mcp-probe 添加到 MCP 服务的 GitHub Actions 工作流中:

- uses: incultnitollc/mcp-probe@v1
  with:
    command: 'node dist/index.js'

根据可发布性综合评分为 PR 设置门禁:

- uses: incultnitollc/mcp-probe@v1
  with:
    command: 'node dist/index.js'
    publishability: 'true'
    package: './package.json'
    fail-under: '70'
输入
名称必填默认值描述
command是—用于启动 MCP 服务的命令(例如 node dist/index.js 或 npx -y @your-scope/your-server)。
fail-under否0如果可发布性综合评分低于此值,则使任务失败(0–100)。需要设置 publishability: 'true'。
publishability否false运行可发布性测试套件 — 5 项检查 + 0–100 综合评分。需要 mcp-probe >= 1.1.0(于 2026-05-23 发布)。
package否''分发元数据检查所用 package.json 的路径。留空则跳过分发检查。
html-report否''HTML 评分卡的写入路径。可在后续步骤中通过 actions/upload-artifact 上传。
mcp-probe-version否latestnpm 版本、dist-tag 或 latest。为保证构建可复现,请固定版本。
json-output否''JSON 报告的写入路径,供后续解析。
输出
名称描述
composite-score可发布性综合评分(0–100)。仅在 publishability: 'true' 时设置。
band等级区间:publishable / almost / rough / not-ready。仅在 publishability: 'true' 时设置。
tools-pass-ratetools_callable / tools_listed 的小数值(例如 0.83)。
schema-warnings所有工具的架构警告总数。

更多示例:examples/basic.yml · examples/publishability-gate.yml · examples/matrix.yml。

Marketplace 列表:github.com/marketplace/actions/mcp-probe-mcp-server-health-check。

与 MCP Inspector 对比

官方 MCP Inspector 是用于交互式探索的 GUI — 指向、点击,即可查看服务返回的内容。mcp-probe 是用于自动化、可重复诊断的 CLI — 自动调用每个工具/资源/提示词,输出通过/失败评分卡,并返回退出代码。探索时使用 Inspector;在 CI、发布前检查中,或需要分享其他服务的评分卡时,使用 mcp-probe。

生态系统

  • MCP Registry — 跨来源 MCP 服务目录(汇集 6 个上游列表中的约 6,900 个条目),质量评分由 mcp-probe 提供。CLI:npm i -g @incultnitollc/mcpr。由 Incultnito LLC 构建。

开发

git clone https://github.com/incultnitollc/mcp-probe.git
cd mcp-probe
npm install
npm run dev -- test "npx -y @modelcontextprotocol/server-everything"
npm test

许可证

MIT - Incultnito LLC

评论

支持 Markdown

第一次接触 MCP?

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

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