关于 Dredd MCP
Dredd MCP 为 Agent 及其运营者提供调用前的 MCP 服务安全检查。它检查依赖风险、工具和 URL 变更以及权限升级,并返回带证据的签名判定;可见性有限时会给出提示。
主要功能
- 01检查直接和传递依赖风险
- 02将工具与已批准快照比较
- 03检测远程 URL 变更
- 04标记权限升级
- 05返回 HMAC 签名判定
- 06端点不可用时默认放行
适用场景
- 01调用工具前检查 MCP 服务
- 02服务更新后审查新增工具
- 03会话开始前评估软件包供应链风险
- 04依赖数据不可用时提示不确定性
MCP 相关
Dredd 通过远程 MCP 服务提供 `check_mcp_server` 工具。MCP 客户端可提交服务名称、可选版本和工具名称,并获得 `ALLOW`、`ADVISORY` 或 `BLOCK` 判定。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://analytics.dugganusa.com/api/v1/dredd/mcpclaude mcp add --transport http pduggusa-dredd https://analytics.dugganusa.com/api/v1/dredd/mcp{"mcpServers":{"pduggusa-dredd":{"type":"http","url":"https://analytics.dugganusa.com/api/v1/dredd/mcp"}}}在 Cursor 中打开{"servers":{"pduggusa-dredd":{"type":"http","url":"https://analytics.dugganusa.com/api/v1/dredd/mcp"}}}在 VS Code 中打开{"mcpServers":{"pduggusa-dredd":{"type":"http","url":"https://analytics.dugganusa.com/api/v1/dredd/mcp"}}}{"mcpServers":{"pduggusa-dredd":{"serverUrl":"https://analytics.dugganusa.com/api/v1/dredd/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
1| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| tool | string | 否 | 正在调用的特定工具名称(可选) |
| server | string | 是 | 必填。要评估的服务:其准确的 MCP Registry 名称(io.github.owner/server-name,可选带 @version)。裸名称(server-name)按输入内容评估,不会映射到 Registry 服务;匹配的完整名称会通过 input.did_you_mean 返回。仅当身份可被证明时,也会解析 Registry URL(https://registry.modelcontextprotocol.io/v0/servers/<name>)和由该所有者发布且恰好对应一个 Registry 服务的 GitHub 仓库("owner/repo" 或 https://github.com/owner/repo)。软件包名称(npm/PyPI)、镜像和 Smithery id 会被记录,但按原样评估(通常为 REVIEW):其名称无法证明实际运行的是哪段代码。拒绝:命令、shell 元字符、非 ASCII 字符、本地路径、端点 URL。不会进行子字符串或模糊匹配:任何无法解析为唯一一个服务的输入都会返回 REVIEW,不会猜测。 |
| version | string | 否 | MCP 服务的版本(semver,可选)。若此项为空,则使用 `server` 中的版本([email protected])。 |
详细介绍
Dredd MCP — 为 MCP 生态系统提供上线前安全检查
文档: https://docs.dugganusa.com/agents/dredd/
你做你自己的事,我做我自己的事。我们共享上下文。
如今,一切都是上下文:数据、传输,甚至你客厅里的电视。共享上下文,绝不共享核心。在你的 Agent 运行之前,Dredd 会审查即将进入其中的内容:服务、它的完整依赖树,以及针对它发布的 CVE。每个判定都经过签名;如果我们无法查看,就会如实给出 unknown。
“Jeevesus 负责拯救,Dredd 负责审判。”
Dredd MCP 是面向 Model Context Protocol 生态系统的调用前安全检查。在你的 Agent 调用其他任何 MCP 服务上的工具之前,Dredd 都会给出判定:BLOCK、ADVISORY 或 ALLOW。每个判定都经过 HMAC 签名,并注明触发决策的 IOC 或行为信号。
2026 年 4 月下旬,8 天内有 3 个 PyPI 机器学习软件包遭到入侵。实际环境中,20 多个名称带有 MCP 的 GitHub 仓库被发现正在传播 SmartLoader 恶意软件。我们进行测量时,官方 MCP Registry 中没有这些问题,但仿冒包攻击面仍然敞开。
Dredd 是一道防线,能在下一个恶意工具被调用之前,拦截下一次入侵。
最新动态 — 依赖图检查(Shai-Hulud 类攻击)
Dredd 不再只检查指定的服务,而是会遍历传递依赖图。
Shai-Hulud 蠕虫给整个生态系统上了沉重的一课:恶意代码很少藏在你安装的软件包里,而是在下游三层的传递依赖中,攻击者窃取了该依赖的发布令牌。只检查你指定的服务,恰好会漏掉一直在攻击 npm 和 PyPI 的这类威胁。
因此,每次调用前检查现在都会解析目标服务的完整 npm/pypi 依赖图,并将所有传递依赖包与我们持续更新的 IOC 语料库进行比对,其中包括 npm 和 PyPI 的 OSV 恶意软件包源。如果依赖树中任何位置藏有已知恶意软件包,Dredd 都会在工具运行前阻止调用。
判定经过签名(HMAC-SHA256),并新增了 dep_graph 字段,用于说明是否确实检查了该目标的传递依赖供应链风险:
{
"verdict": "BLOCK",
"severity": "critical",
"dep_graph": { "evaluated": true, "packages_checked": 247, "malicious_transitive": 1 },
"signature": "sha256=..."
}
如果服务未提供可解析的清单,dep_graph.evaluated 将为 false,Dredd 会降级为提示级别——它会告知你自己无法查看依赖树,而不是假装依赖树是干净的。
Dredd 检查的内容
每次调用前检查都会评估以下信号:
- 受入侵的依赖,包括传递依赖(Shai-Hulud 类攻击)。 解析目标服务的软件包清单,解析其完整的 npm/pypi 依赖图,并将所有软件包(直接依赖和传递依赖)与我们持续更新的 IOC 语料库进行比对(Socket、Aikido、GitGuardian、ReversingLabs、Phylum、StepSecurity、Wiz,以及 npm 和 PyPI 的 OSV 恶意软件包源)。如果服务或其引入的任何传递依赖固定使用
lightning==2.6.2或其他任何已知遭入侵的版本,就会阻止调用。判定中的dep_graph字段会报告是否检查了传递依赖树。 - 工具表面变化。 比较服务今天公开的工具列表与用户最初批准时的快照。自上次审查后出现的新工具会触发提示。威胁模型是会话中途发生的 rugpull。
- 远程 URL 变化。 将服务的运行时端点与它在注册表中发布的 URL 进行比较。服务悄悄改为连接到与你注册时不同的主机,是一种劫持信号。
- 权限升级。 服务请求了上周尚未拥有的写入或执行权限。
判定会在 200 毫秒内返回,并经过签名(由 Cloudflare 边缘缓存,TTL 为 5 分钟)。默认情况下,钩子会开放失败——如果我们的端点发生故障,Dredd 不会让你的工具无法使用。
安装 — Claude Desktop
添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"dredd": {
"url": "https://analytics.dugganusa.com/api/v1/dredd/mcp"
}
}
}
重启 Claude Desktop。你会看到 Dredd 可用,其中包含一个工具:check_mcp_server。
安装 — Cursor
添加到 ~/.cursor/mcp.json:
{
"mcpServers": {
"dredd": {
"url": "https://analytics.dugganusa.com/api/v1/dredd/mcp"
}
}
}
在终端中测试
curl -X POST https://analytics.dugganusa.com/api/v1/dredd/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
你应该会看到一个工具:check_mcp_server。
工具
check_mcp_server
| 参数 | 类型 | 必填 | 描述 |
|---|---|---|---|
server | string | 是 | MCP 服务名称(例如 io.github.foo/bar)或子字符串 |
version | string | 否 | 可选的服务 semver 版本 |
tool | string | 否 | 可选的正在调用的特定工具名称 |
返回 JSON 判定结果:
{
"success": true,
"server": "io.github.foo/bar",
"version": "1.2.3",
"tool": "list_files",
"verdict": "ALLOW",
"severity": "clean",
"findings_count": 0,
"findings": [],
"dep_graph": { "evaluated": true, "packages_checked": 247, "malicious_transitive": 0 },
"checked_at": "2026-05-04T20:00:00Z",
"ttl_seconds": 300,
"signature": "sha256=..."
}
判定值:
| 判定结果 | 严重性级别 | 操作建议 |
|---|---|---|
BLOCK | critical 或 high | 拒绝调用。不要调用目标工具。 |
ADVISORY | medium 或 advisory | 向用户提示;由用户决定。 |
ALLOW | clean | 继续。 |
signature 字段是使用服务端密钥对规范化判定结果正文生成的 HMAC-SHA256。Hook 应验证此字段,以防止中间人伪造“全部正常”的响应(验证密钥可按需通过带外方式分发)。
公共瞭望台
实时汇总仪表板,显示注册表中所有活跃发现项——免费、无需身份验证、无需提供邮箱:
https://analytics.dugganusa.com/api/v1/dredd/watchtower.json
返回按严重性划分的计数、近期发现项和当前判定结果(CLEAN / WATCH / HIGH / CRITICAL)。
随着每日抓取器与关联分析流水线对已注册的 MCP 语料库运行,数据会持续更新。
Dredd 的工作方式
┌─────────────────────────────────────────────────┐
│ Your Agent (Claude Desktop / Cursor / custom) │
│ calls check_mcp_server(server, version, tool)│
└─────────────────┬───────────────────────────────┘
│ JSON-RPC over HTTPS
▼
┌────────────────────────────────────────────────┐
│ Dredd MCP — analytics.dugganusa.com/api/v1/dredd/mcp │
│ - look up findings for (server, version, tool)│
│ - aggregate severity, render verdict │
│ - HMAC-sign canonical verdict │
└────────────────┬───────────────────────────────┘
│
▼
┌────────────────────────────────────────────────┐
│ mcp_findings index — populated by │
│ daily fetcher + correlator joining the │
│ resolved transitive dep graph × IOC corpus │
│ (Socket, Aikido, GitGuardian, ReversingLabs, │
│ + OSV malicious-package feeds: npm & PyPI) │
└────────────────────────────────────────────────┘
目前的关联分析频率为每 12 小时一次(08:30 UTC 和 20:30 UTC)。当已注册的 MCP 语料库中出现真实入侵事件时,会提高分析频率。
信任状况
- 响应经过 HMAC 签名。 Hook 实现应验证每条判定结果中的
signature字段。 - 默认故障时放行。 如果我们的端点宕机,Dredd 不会让你的工具无法使用——它会返回“advisory: backend unavailable”,由用户决定。对于关键工作流,可记录覆盖方式(
DREDD_BYPASS=<reason>)。 - 只读。 Dredd 绝不会修改你的环境。它只提供判定结果。
- 与现有工具并行工作。 Dredd 会在工具调用前增加一次判定;客户端自身的权限提示和你自己的审核仍然有效。
- 不会泄露工具参数。 Hook 应仅发送
(server, version, tool),绝不发送工具参数的内容。参数内容会保留在你的机器上。 - 语料库经过验证,而不只是规模庞大。 每条判定结果背后的 IOC 语料库都可通过四个实时、无需身份验证的端点独立核验:新颖性(
/api/v1/feed-uniqueness,与 ThreatFox 的重叠情况)、时效性(/api/v1/kev-lead,实时记录每个遭利用的 CVE 何时进入我们的语料库,并与 CISA KEV 日期并列展示)、准确性(/api/v1/spamhaus-validation)和活跃度(/api/v1/feed-efficacy,由用户选择加入的消费者报告,记录我们的指标何时在真实流量中触发——这证明信息源在实际运行中处于活跃状态,而不只是规模庞大)。 - 认知置信度上限为 95%。 根据 DugganUSA 的认知谦逊规则,我们将声明的置信度上限设为 95%。覆盖缺口:目前注册表中约 60-70% 的 MCP 服务没有公开源代码仓库,因此 Dredd 无法检查其依赖树。针对这些服务设有 advisory 级别。
家族
Dredd 是 DugganUSA 防护工具家族的第 13 位成员,也是首个原生支持 MCP 的成员:
dugganusa-scanner-core— 核心 IOC 扫描引擎dugganusa-vscode— VS Code 扩展dugganusa-splunk— Splunk Technology Add-ondugganusa-slack— Slack 机器人dugganusa-raycast— Raycast 扩展dugganusa-sentinel— Microsoft Sentinel TAXII 连接器dugganusa-obsidian— Obsidian 插件dugganusa-nvim— Neovim 插件dugganusa-elastic— Elastic / OpenSearch 集成dugganusa-edge-shield— Cloudflare Workerdugganusa-cli— CLI 扫描器dugganusa-chrome— Chrome 扩展dugganusa-action— GitHub Action
配套 MCP 服务:Jeevesus,可通过自然语言搜索 DugganUSA 语料库(实时计数)。
许可证
MIT — 参见 LICENSE。
支持
- Watchtower 仪表板:analytics.dugganusa.com/api/v1/dredd/watchtower.json
- 问题:github.com/pduggusa/dredd-mcp/issues
- DugganUSA 博客:www.dugganusa.com
构建于明尼阿波利斯。防护级别。只读。凭据自会说明一切。
DugganUSA 防护工具家族
同一 DugganUSA Feed,在你使用的各种平台上呈现。开源,采用 MIT 许可证,每个仓库都有凭据。
| 插件 | 平台 |
|---|---|
| dugganusa-scanner-core | 核心 IOC 扫描引擎 |
| dugganusa-vscode | VS Code 扩展 |
| dugganusa-splunk | Splunk Technology Add-on |
| dugganusa-slack | Slack 机器人 |
| dugganusa-raycast | Raycast 扩展 |
| dugganusa-sentinel | Microsoft Sentinel TAXII 连接器 |
| dugganusa-obsidian | Obsidian 插件 |
| dugganusa-nvim | Neovim 插件 |
| dugganusa-elastic | Elastic / OpenSearch 集成 |
| dugganusa-edge-shield | Cloudflare Worker |
| dugganusa-cli | CLI 扫描器 |
| dugganusa-chrome | Chrome 扩展 |
| dugganusa-action | GitHub Action |
| dredd-mcp (本仓库) | Dredd:飞行前 MCP 安全检查 |
由 DugganUSA Feed 提供支持。数据实时更新:/api/v1/search/stats。定价:analytics.dugganusa.com/stix/pricing。联系:[email protected]。
可供你核验的威胁情报。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。