Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
All six agent guard suites in one local MCP server, with optional cloud intelligence.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"agent-guards": {
"command": "npx",
"args": [
"-y",
"agent-guards"
]
}
}
}在终端中运行这条命令
claude mcp add agent-guards -- npx -y agent-guards粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"agent-guards": {
"command": "npx",
"args": [
"-y",
"agent-guards"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"agent-guards": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"agent-guards"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日
注册名称已通过 GitHub 账户 mlawsonking 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.3.0)于3个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, topo^alpin
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ 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.
Avalanche bulletins and mountain weather forecasts for any place in the Alps.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
The detection engines behind Package Guard, Agent Firewall, Payment Guard, Email Guard, Code Guard and Agent Web Tools, in one package, running on your machine.
Everything here is deterministic: regex rules, published lists, and parsers. No model is called in any detection path, so the same input gives the same verdict and every verdict names the rules version that produced it.
npx agent-guards
That starts an MCP stdio server with every tool from all six products. No configuration, no API key, no account.
npx agent-guards --offline # local engines only
npx agent-guards --only code-guard # one product npx agent-guards --list # what you get, and which tools need the network npx agent-guards --disable check_ip,check_password
The same package installs the guard CLI:
npx --yes --package agent-guards guard scan src/
npx --yes --package agent-guards guard diff npx --yes --package agent-guards guard stats --json
This repository publishes a staged-diff hook for the pre-commit framework. It needs Node 18 or newer. Add this to .pre-commit-config.yaml:
repos:
Then run pre-commit install. The hook scans added lines only and uses the rules in that pinned checkout. It does not call a model or send file contents anywhere. A second manual hook, agent-guards-scan, scans the whole working tree when you run pre-commit run agent-guards-scan --hook-stage manual.
Local tools run entirely on your machine. The text you scan never leaves it.
| Local, works offline | Needs the network |
|---|---|
| prompt-injection and Unicode-obfuscation scanning | package existence, age and vulnerabilities (npm, PyPI, OSV) |
| secret and PII detection, with redaction | sanctions and scam-list screening (OFAC lists, blocklists) |
| code and diff scanning | breached-password lookup (Have I Been Pwned) |
| URL structure analysis | domain age, ASN, blocklist reputation |
| email parsing, spoof heuristics, header reading | SPF/DMARC/MX records, disposable-domain list |
Cloud tools say which service they call in their own tool description. With --offline, they report that they could not check. They do not return a verdict.
That distinction is the whole design. A check that did not run is not a pass. This codebase shipped the opposite once: four endpoints answered "not sanctioned", "no known vulnerabilities", "not a honeypot" and "safe" when the lookup behind each had failed or was never attempted. A security tool that says "clear" when it means "I don't know" is worse than no tool.
The injection scanner matches known instruction-override, jailbreak, prompt-leak, exfiltration and tool-poisoning phrasings, and the Unicode tricks used to hide them: zero-width characters, bidi overrides, the Unicode tag block, hidden CSS, instructions in HTML comments. It is a deterministic pattern scanner, not a classifier. Novel phrasing gets through. Anyone who reads the rules can write around them. It is one layer, not a wall.
The secret scanner matches 22 credential formats plus generic assignments and 3 PII patterns. A secret in a format it does not know, or split across lines, is not detected. What it does guarantee is that the value it found is gone from the redacted output, not just the label next to it.
The code scanner is 31 regex rules across JS/TS and Python. No parser, no data flow, no taint tracking, so exec(cmd) with a bare variable does not fire while exec("ls " + dir) does. That is a deliberate limit and there is a test pinning it.
Sanctions screening covers the EVM-format OFAC address lists. Honeypot checks only cover the chains honeypot.is actually simulates.
const guards = require('agent-guards');
guards.injection.scan(untrustedText); // { risk, score, verdict, findings, rules_version } guards.secrets.scan(text); // { found, verdict, findings, redacted, rules_version } guards.code.scanDiff(unifiedDiff, 'py'); // findings against new-file line numbers await guards.safeFetch(url); // SSRF-guarded: pins the resolved IP, rechecks every hop
safeFetch is the one to reach for whenever you fetch a URL you did not choose. It resolves the hostname once, refuses the request if anything it resolves to is private or loopback, and connects to that exact address, so there is no second lookup for DNS rebinding to poison. It re-checks every redirect hop and never pools sockets, because a pooled connection skips the pin.
The rules go stale. Addresses get sanctioned, packages get pulled from npm for shipping malware, and none of that reaches you if the rules only change when you reinstall. So about once a day the server and the CLI ask the rules feed whether there is a newer ruleset, and apply it if there is.
A pull sends two things: which surface asked (cli, plugin, mcp or facade) and the rules version you already have.
GET /api/rules/latest?surface=mcp&have=2026.07.31
No machine id, no user id, no file names, nothing you scanned. Bundles are signed with Ed25519 and verified against a public key compiled into this package, so it does not matter which mirror served one. A bundle that fails its signature, its schema, or its ReDoS check is discarded and you keep the rules you had. Rules never roll back to an older version on their own.
guard update --status # what is in use, and when it last checked
guard update # pull now
Every verdict carries rules_provenance, which is either bundled or feed@ , so you can always tell which ruleset produced a result.
To turn updates off: --offline, AGENT_GUARDS_NO_FEED=1, or {"feed": false} in ~/.agent-guards/config.json. AGENT_GUARDS_FEED_URL points it somewhere else. With updates off everything still works on the rules compiled into the package.
The bundle format, the verification steps, and how the malicious-package list is curated are in rules/README.md.
npm test
Offline suites only. Anything that asserts against a third-party endpoint is run by hand, because a suite that goes red at random teaches everyone to ignore red.
MIT.