Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Vetting for MCP servers and skills: capabilities, configs, mismatches, typosquats, probe parity.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"mcpvet": {
"command": "npx",
"args": [
"-y",
"@reneturcios/mcpvet",
"mcp"
]
}
}
}在终端中运行这条命令
claude mcp add mcpvet -- npx -y @reneturcios/mcpvet mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"mcpvet": {
"command": "npx",
"args": [
"-y",
"@reneturcios/mcpvet",
"mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"mcpvet": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@reneturcios/mcpvet",
"mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过 GitHub 账户 CloudCorpRecords 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.2.1)于11天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js, Docker。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Fomu MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ 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.
Kenya government form guides: checklists, draft letters, eCitizen, Huduma, timelines. Sample data.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Vet MCP servers and agent skills before you install them.
In early 2026 the ClawHavoc wave put 1,184 malicious skills on a public skill marketplace from just 12 accounts: credential stealers and reverse shells dressed up as helpful agent skills, inheriting whatever permissions the agent itself had. Only a small minority of organizations audit the MCP servers they install, and almost none audit skill packs. The install click is the trust decision, and it usually happens with no evidence at all.
mcpvet is the pre-install check. Point it at a local MCP server directory, a SKILL.md skill directory, a client config tree, or an npm package name, and it returns a deterministic verdict with evidence for every finding: VETTED, REVIEW, or DO-NOT-INSTALL. The scan is static only. Scanned code is read as text and never executed, imported, or installed.
Since 0.2.0 there is also a separate, clearly labeled live mode (mcpvet probe). It spawns a stdio server command twice and compares what it answers: probe parity, exact-hash fingerprint matching, and a server-level risk score derived from the recorded signals. Live mode executes the target, which is exactly why it is a separate command and not folded into the static scan.
npx -y @reneturcios/mcpvet --version
npm install -g @reneturcios/mcpvet docker run -i --rm ghcr.io/cloudcorprecords/mcpvet mcp
mcpvet vet ~/src/some-mcp-server
mcpvet vet ~/skills/some-skill --json mcpvet vet-package @modelcontextprotocol/server-filesystem@2025.3.28 mcpvet probe -- node ~/src/some-mcp-server/dist/index.js mcpvet mcp
CLI exit codes: 0 when the verdict is VETTED, 1 for REVIEW or DO-NOT-INSTALL, 2 for a usage or setup error, 141 when the reader closed the output pipe before the report was delivered.
| Check | What it catches |
|---|---|
| Tool inventory | Declared tools (server.json, package.json, tool manifests) against tools actually registered in source, plus resources and prompts |
| Capability combos | Filesystem read plus network egress, env access plus egress, credential store access plus egress, shell execution reachable from the tool surface |
| Config audit | Client configs (claude_desktop_config.json, .mcp.json, Cursor and VS Code mcp.json): autostart entries, npx -y on unpinned packages, curl pipe shell launchers, shell wrappers, wide env blocks sweeping in credential-shaped keys, whole-environment passthrough |
| Install scripts | preinstall, install, postinstall, and prepare scripts in package.json, with dropper shapes (remote download piped to a shell) graded critical |
| Manifest honesty | A package.json or server.json that is present but unparseable, unreadable, oversize and skipped, or not a regular file is reported as present but not audited, with a MANIFEST-UNPARSEABLE or MANIFEST-UNREADABLE finding, never as absent. A byte order mark prefix is stripped before parsing, so a BOM-prefixed manifest is audited normally |
| Bundled scripts | Reverse shell shapes (including a reverse shell composed from a socket connection, a spawned shell, and pipes joining them), one file that both reads a credential store and makes network requests, persistence touches (session hooks, scheduled tasks, autostart entries), download-and-execute droppers |
| Description language | Tool descriptions, package descriptions, and SKILL.md text carrying instruction or exfiltration language: override prior instructions, hide actions from the user, send credential material onward, run shell commands from prose |
| Documentation download-and-execute | A download-and-execute step declared as text anywhere in the package (SKILL.md prerequisites, READMEs, other docs, bundled scripts): a remote download piped or substituted into a shell or interpreter, or downloaded and run on the same line. Graded critical, like the same shape in autostart configs and install scripts. A download with no execution step does not draw this finding |
| Native binaries | Compiled native artifacts shipped in the package (.node, .dll, .so, .dylib files, or a prebuilds directory). Native code cannot be audited by static text scanning, so its presence is graded medium with a NATIVE-BINARY finding and the verdict floors at REVIEW: presence is not evidence of malice (many legitimate packages ship prebuilt addons), and it never escalates to DO-NOT-INSTALL on its own, but the binary should be reviewed, or the package built from source, before the server is trusted. The MALFEX imgdecode campaign hid its payload in exactly this shape: a native addon under prebuilds/ loaded at require time, with no install scripts at all |
| Mismatches | Declared tools missing from code, undeclared tools present in code, server.json and package.json disagreeing on name or version |
| Pinning | Missing version fields, moving tags such as latest or *, registry entries with no version, unpinned container references |
| Typosquat | Target and package names at edit distance 1 (or 2 for long names) from a bundled list of well-known MCP server names |
| Probe parity (live only) | The server is spawned twice and asked the same questions (initialize, tools/list). Any drift in identity, tool set, descriptions, or schemas between the two identical probes is recorded as a signal with the diff as evidence |
| Fingerprints (live only) | The presented tool set and tool descriptions are hashed (sha256 over canonical JSON) and compared against a bundled fingerprint file. Matches are exact only, never fuzzy, and each entry carries its provenance |
| Risk score | Every report carries a score from 0 to 100 derived from its recorded signals (static findings, or live signals in probe mode). The score is computed from the signal list on read, never kept as a counter, and it informs the verdict without replacing the verdict rules |
A verdict is a scan result, never a safety claim. VETTED means these checks found nothing at or above medium severity in the files scanned; it does not certify a server safe.
Scope floor (v0.1.2): DO-NOT-INSTALL is a claim about an installable MCP bundle. If the target is not an MCP target (kind unknown, meaning no server, config, or skill as its primary subject, or a mixed monorepo root whose critical findings all come from outside every identified MCP bundle), the verdict floors at REVIEW with an explicit "not an MCP target" note telling you to scope vetting to the server or skill directory. Findings are still reported as evidence; a critical inside an identified bundle still verdicts DO-NOT-INSTALL.
Live mode (probe) has its own verdict rules, deliberately capped: any scoring signal (a parity drift or a fingerprint match) makes the verdict REVIEW, a clean double probe verdicts VETTED, and no usable evidence verdicts REVIEW as inconclusive. Live evidence never yields DO-NOT-INSTALL: a fingerprint match is grounds for a human look, not a hard fail. Two negative controls are explicit: a probe refused for auth reasons is recorded as a pass on that probe (a server demanding credentials is doing the minimum right), and a timeout records no signal at all.
mcpvet mcp serves a stdio MCP server with three tools:
| Tool | What it does |
|---|---|
| vet_path | Vet a local MCP server directory, skill directory, or client config tree before install |
| vet_package | Vet an npm package by name using registry metadata only: the tarball is not downloaded and no code runs |
| probe_server | Live-probe a stdio server command (spawns it twice): probe parity, exact-hash fingerprints, and the derived risk score. This tool EXECUTES the command it is given |
probe (or the probe_server MCP tool) spawns the given command twice on the machine running mcpvet. Run it only against commands you already trust enough to execute locally.Part of the Security Wave: hookcheck (persistence hooks), actionpin (Actions pinning), injectcheck (prompt injection in agent-read content), tracewatch (observability and root cause), mcpvet (pre-install vetting).
MIT.
If mcpvet saved you time, star this repo: it helps other developers find it.