Dredd MCP について
Dredd MCPは、エージェントや運用者向けに、MCPサーバーのツール呼び出し前に行うセキュリティチェックを提供します。依存関係のリスク、ツールやURLの変更、権限昇格を調べ、根拠付きの署名済み判定を返し、確認できない場合は注意を促します。
主な機能
- 01直接・推移的なパッケージリスクの検査
- 02ツール一覧と承認済みスナップショットの比較
- 03リモートURLの変更検出
- 04権限昇格の検知
- 05HMAC署名付き判定の返却
- 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 で返されます。ID を証明できる場合に限り、Registry URL(https://registry.modelcontextprotocol.io/v0/servers/<name>)と、その所有者が公開した Registry サーバーがちょうど 1 つに特定できる GitHub リポジトリ("owner/repo" または https://github.com/owner/repo)も解決されます。パッケージ名(npm/PyPI)、イメージ、Smithery id は記録されますが、入力どおりに判定されます(通常は REVIEW)。名前だけでは実行されるコードを証明できません。拒否対象:コマンド、シェルメタ文字、非 ASCII 文字、ローカルパス、エンドポイント URL。部分一致やあいまい一致は行いません。単一のサーバーに解決できないものはすべて REVIEW を返し、推測はしません。 |
| version | string | いいえ | MCP サーバーのバージョン(semver、省略可)。空の場合は `server` 内のバージョン([email protected])が使用されます。 |
詳細
Dredd MCP — MCP エコシステムのための事前セキュリティチェック
ドキュメント: https://docs.dugganusa.com/agents/dredd/
あなたはあなたらしく。私は私らしく。コンテキストを共有しましょう。
今や、データも、トランスポートも、リビングのテレビも、あらゆるものがコンテキストです。共有するのはコンテキストであり、コアは決して共有しません。Dredd は実行前に、エージェントに取り込まれようとしているもの、つまりサーバー、その依存関係ツリー全体、そしてそれに対して公開された CVE を判定します。すべての判定に署名を付け、確認できなかった場合は正直に unknown と返します。
「Jeevesus は救い、Dredd は裁きます。」
Dredd MCP は、Model Context Protocol エコシステム向けの呼び出し前セキュリティチェックです。エージェントが別の MCP サーバー上のツールを呼び出す前に、Dredd は BLOCK、ADVISORY、ALLOW のいずれかを判定します。すべての判定には HMAC 署名が付けられ、判断の根拠となった IOC または振る舞いのシグナルが示されます。
2026 年 4 月下旬の 8 日間に、PyPI の ML パッケージ 3 件が侵害されました。MCP の名前を冠した GitHub リポジトリ 20 件以上が、実環境で SmartLoader マルウェアを配布していることが確認されました。測定時点で公式 MCP Registry にそれらはありませんでしたが、タイポスクワットの攻撃対象は広く開かれています。
Dredd は、次の侵害が起きたときに、悪意のあるツールが呼び出される前に検知するレイヤーです。
新機能 — 依存関係グラフのチェック(Shai-Hulud クラス)
Dredd は、指定されたサーバーだけでチェックを終えません。推移的な依存関係グラフ全体をたどります。
Shai-Hulud ワームは、エコシステムに厳しい教訓を残しました。悪意のあるコードは、インストールしたパッケージそのものに含まれていることはめったになく、公開トークンを盗まれた推移的依存関係の、3 階層下に潜んでいることが多いのです。指定したサーバーだけを検査するチェックでは、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フィールドは、推移的なツリーが評価されたかどうかを示します。 - ツールの公開範囲の変化。 サーバーが現在公開しているツールの一覧と、ユーザーが最初に承認したスナップショットを比較します。前回の確認以降に追加された新しいツールがあると、アドバイザリーが発生します。脅威モデルは、セッション中のラグプルです。
- リモート URL の変化。 サーバーの実行時エンドポイントを、レジストリに公開された URL と比較します。登録したホストとは異なるホストにサーバーがひそかに接続している場合、それはハイジャックの兆候です。
- 権限の昇格。 先週はなかった書き込み権限または exec 権限をサーバーが要求していないかを確認します。
判定は 200 ms 未満で署名付きで返されます(Cloudflare エッジでキャッシュ、TTL は 5 分)。フックはデフォルトでフェイルオープンです。エンドポイントが停止しても、Dredd によってツールが使えなくなることはありません。
インストール — Claude Desktop
claude_desktop_config.json に追加します:
{
"mcpServers": {
"dredd": {
"url": "https://analytics.dugganusa.com/api/v1/dredd/mcp"
}
}
}
Claude Desktop を再起動します。1 つのツール 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"}'
1 つのツール check_mcp_server が表示されます。
ツール
check_mcp_server
| 引数 | 型 | 必須 | 説明 |
|---|---|---|---|
server | string | はい | MCP サーバー名(例:io.github.foo/bar)または部分文字列 |
version | string | いいえ | MCP サーバーの任意の 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 です。フックは、MITM による偽造の「問題なし」応答を防ぐため、この値を検証してください(検証キーはリクエストに応じて別経路で配布されます)。
公開ウォッチタワー
レジストリ内で現在有効なすべての検出結果を集約したリアルタイムダッシュボードです。無料で、認証もメールアドレスの登録も不要です:
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 署名付き応答。 フックの実装では、すべての判定結果について
signatureフィールドを検証してください。 - デフォルトではフェイルオープン。 エンドポイントが停止しても、Dredd によってツールが使えなくなることはありません。「advisory: backend unavailable」を返し、判断をユーザーに委ねます。重要なワークフローでは、オーバーライド(
DREDD_BYPASS=<reason>)を文書化してください。 - 読み取り専用。 Dredd は環境を変更しません。判定結果を返すだけです。
- 既存のツール環境に追加されます。 Dredd はツール呼び出しの前に判定結果を 1 つ追加します。クライアント独自の権限確認プロンプトとユーザー自身によるレビューは、そのまま維持されます。
- ツール引数の漏えいなし。 フックから送信するのは
(server, version, tool)のみとし、ツール引数の内容は決して送信しないでください。引数の内容はユーザーのマシン上に留まります。 - 規模だけでなく、検証済みのコーパス。 各判定結果の基盤となる IOC コーパスは、認証不要の 4 つのライブエンドポイントで個別に検証できます。新規性(
/api/v1/feed-uniqueness、ThreatFox との重複状況)、適時性(/api/v1/kev-lead、悪用された各 CVE がコーパスに登録された日付を CISA KEV の日付と並べて記録するライブ台帳)、正確性(/api/v1/spamhaus-validation)、稼働状況(/api/v1/feed-efficacy、実際のトラフィックでインジケーターが検知した時点について、利用者が任意で報告した情報。フィードが単に大規模なだけでなく、実運用で稼働していることを示す証拠です)。 - 認識論的な上限は 95%。 DugganUSA の認識論的謙虚さのルールに基づき、主張の上限を 95%に設定しています。カバレッジの不足:現在、レジストリ内の MCP サーバーの約 60~70%は公開ソースリポジトリを公開していないため、Dredd はその依存関係ツリーを調査できません。これらのサーバー向けにアドバイザリレベルを設けています。
ファミリー
Dreddは、DugganUSA defender familyの13番目のメンバーであり、MCPネイティブとして初のメンバーです。
dugganusa-scanner-core— コアIOCスキャンエンジンdugganusa-vscode— VS Code拡張機能dugganusa-splunk— Splunk Technologyアドオン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 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 Defender Family
同じDugganUSA Feedを、どこでも使える形で提供します。オープンソース、MITライセンス、すべてのリポジトリに証跡が付属します。
| Plugin | Surface |
|---|---|
| dugganusa-scanner-core | コアIOCスキャンエンジン |
| dugganusa-vscode | VS Code拡張機能 |
| dugganusa-splunk | Splunk Technologyアドオン |
| 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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。