Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Inspect and score any MCP server 0-100 on publishability, schema and protocol before publish.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"probe": {
"command": "npx",
"args": [
"-y",
"@incultnitollc/mcp-probe",
"serve"
]
}
}
}在终端中运行这条命令
claude mcp add probe -- npx -y @incultnitollc/mcp-probe serve粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"probe": {
"command": "npx",
"args": [
"-y",
"@incultnitollc/mcp-probe",
"serve"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"probe": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@incultnitollc/mcp-probe",
"serve"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 incultnitollc 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(1.2.0)于3个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, ProAgentStore
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
MCP-first control plane for ProAgentStore agents and private instances.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
One command to diagnose your MCP server.
Tests every tool, resource, and prompt your server exposes — then gives you a health report with a pass/fail scorecard.
Built on the Anthropic Model Context Protocol (MCP) spec.
Note: Published to npm as
@incultnitollc/mcp-probe. The CLI binary ismcp-probe. The unscoped namemcp-doctoron npm is owned by an unrelated tool, so this project ships under a scope. Versions<= 0.2.1shipped under the deprecated@incultnitostudiosllcscope — install@incultnitollc/mcp-probeinstead.
npx @incultnitollc/mcp-probe test "npx -y @modelcontextprotocol/server-everything"
| Check | Description |
|---|---|
| Tool calling | Calls every tool with auto-generated sample arguments based on the input schema |
| Resource reading | Reads every resource and verifies content is returned |
| Prompt rendering | Gets every prompt with sample arguments and verifies messages are returned |
| Schema validation | Checks tool schemas for missing descriptions, broken required fields, malformed types |
| Health scoring | Summarizes everything into a pass/fail scorecard |
npm install -g @incultnitollc/mcp-probe
Or run directly:
npx @incultnitollc/mcp-probe test "your-server-command"
npx @incultnitollc/mcp-probe test "npx -y @modelcontextprotocol/server-everything"
npx @incultnitollc/mcp-probe test https://your-server.example.com/mcp
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"
| Flag | Description |
|---|---|
--json | Output results as JSON |
--timeout | Per-operation timeout (default 30000) |
--transport | Force stdio, sse, or http (auto-detected from target) |
--header | Add header to remote transport. Repeatable. |
0 — All checks passed1 — One or more checks failed (useful for CI gates)Use --json to get structured output for automation:
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 auto-generates arguments for each tool based on its inputSchema:
default values and enum first choices when availableurl → https://example.com, email → test@example.com)string → "test", number → 1, boolean → false)This means tools with complex required inputs may fail — and that's useful information. It tells you your tool isn't self-contained enough for automated testing.
mcp-probe ships a second, complementary check: a publishability composite that scores your server 0–100 on whether its schemas, descriptions, and metadata are ready for other people to install. Run it as a shorthand:
npx @incultnitollc/mcp-probe score "npx -y @your-scope/your-server" --package ./package.json
Or fold it into a full test run with --publishability:
npx @incultnitollc/mcp-probe test "npx -y @your-scope/your-server" --publishability --package ./package.json
The composite combines three sub-scores — Protocol (does the wire format work), Edge cases (does it handle weird inputs), and Publishability (would a stranger understand your tools) — and a five-axis breakdown across the publishability dimension:
| Axis | What it checks |
|---|---|
description-five-axis | Per-tool description density across purpose, mutation, side-effects, invariants, examples. Tools below 3.0/5 axes fire a ≤60 composite cap. |
enum-shape | Catches prose-only enums (e.g. "one of: open, closed" in the description with no JSON Schema enum). |
mutation-legibility | Does each tool tell a planner it mutates, or only reads? Name prefix / description signal / annotation all count. |
anti-purpose-clause | High-blast tools (delete, send, transfer) should include a "do not use for X, prefer Y" pointer to a narrower tool. |
distribution-metadata | npm package readiness — description length, keyword count, repository / license / homepage fields. Skipped without --package. |
The five official Anthropic MCP servers all land at 60/100 under v1.1.0 — the description-five-axis cap fires on every one. That's not a bug in the rubric; that's the bar Anthropic ships at, and the bar most servers will start from. Full scorecards in docs/publishability-scorecards/.
- uses: incultnitollc/mcp-probe@v1
with: command: 'node dist/index.js' publishability: 'true' package: './package.json' fail-under: '70'
mcp-probe's publishability score is the pre-publish quality lane — for server authors before they ship. For the install-time security lane — server installers before they connect a third-party server — see @stephenywilson/mcp-doctor. Different audiences, complementary tools.
test/score tell you if your server is healthy *today*. Contract testing tells you what changed since last time — so a breaking schema edit or a poisoned tool description never ships silently.
Record a snapshot of your server's contract (its tools, resources, prompts, and their schemas — no traffic, no side effects), commit the .mcpvcr file, then diff or gate every PR against it.
# 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"
mcp-probe diff --baseline .mcp/contract.mcpvcr "node dist/index.js"
mcp-probe gate --baseline .mcp/contract.mcpvcr "node dist/index.js"
Every change is classified so the gate is meaningful, not noisy:
| Severity | Examples |
|---|---|
| ❌ breaking | tool removed · new required argument · property removed · type changed · enum narrowed |
| ⚠️ security | tool description mutated (rug-pull / tool-poisoning) · readOnlyHint dropped · tool became destructive |
| ✅ additive | new tool · new optional field · enum widened |
| ℹ️ info | server name · resource/prompt description text |
gate fails on breaking,security by default — tune with --fail-on breaking (or any comma-separated set). Snapshots are deterministic: re-recording an unchanged server produces a byte-identical file, so committed baselines and diffs stay clean. Compare two recorded files offline with --against instead of a live target, and write a ready-to-post PR comment with --markdown .
Why it matters: the 2026-07-28 MCP spec ships breaking changes (dropped initialize handshake, error-code and JSON-Schema shifts, HTTP+SSE → Streamable HTTP). A recorded .mcpvcr baseline turns "did we break our clients?" into a one-line CI check. See examples/contract-gate.yml for the full PR workflow with auto-commenting.
mcp-probe exits 0 on full pass and 1 on any failure, so it drops directly into any CI pipeline:
# .github/workflows/mcp-health.yml
Use --json for structured output and jq to gate on specific metrics (e.g. fail the build if schemaWarnings > 0).
Drop mcp-probe into your MCP server's GitHub Actions workflow in two lines:
- uses: incultnitollc/mcp-probe@v1
with: command: 'node dist/index.js'
Gate your PRs on a publishability composite:
- uses: incultnitollc/mcp-probe@v1
with: command: 'node dist/index.js' publishability: 'true' package: './package.json' fail-under: '70'
| Name | Required | Default | Description |
|---|---|---|---|
command | yes | — | Command that launches your MCP server (e.g. node dist/index.js or npx -y @your-scope/your-server). |
fail-under | no | 0 | Fail the job if the publishability composite drops below this value (0–100). Requires publishability: 'true'. |
publishability | no | false | Run the publishability suite — 5 checks + 0–100 composite. Requires mcp-probe >= 1.1.0 (ships 2026-05-23). |
package | no | '' | Path to package.json for the distribution-metadata check. Empty skips the distribution check. |
html-report | no | '' | Path to write the HTML scorecard. Upload via actions/upload-artifact in a follow-on step. |
mcp-probe-version | no | latest | npm version, dist-tag, or latest. Pin for reproducible builds. |
json-output | no | '' | Path to write the JSON report for downstream parsing. |
| Name | Description |
|---|---|
composite-score | Publishability composite (0–100). Only set when publishability: 'true'. |
band | Grade band: publishable / almost / rough / not-ready. Only set when publishability: 'true'. |
tools-pass-rate | tools_callable / tools_listed as a decimal (e.g. 0.83). |
schema-warnings | Total schema warning count across all tools. |
More examples: examples/basic.yml · examples/publishability-gate.yml · examples/matrix.yml.
Marketplace listing: github.com/marketplace/actions/mcp-probe-mcp-server-health-check.
The official MCP Inspector is a GUI for interactive exploration — point, click, see what a server returns. mcp-probe is a CLI for automated, repeatable diagnosis — every tool/resource/prompt called automatically, pass/fail scorecard out, exit code in. Use Inspector when you're exploring; use mcp-probe in CI, in pre-publish checks, or when you want a shareable scorecard of someone else's server.
mcp-probe. CLI: npm i -g @incultnitollc/mcpr. Built by 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