ExploitDB MCP Server について
ExploitDB MCP Serverは、セキュリティ調査向けにAIアシスタントからExploitDBのデータへアクセスするサーバーです。CVE、プラットフォーム、種類、作者、タグによる検索に加え、詳細取得やデータ分析にも対応します。
主な機能
- 01複数条件でのエクスプロイト検索
- 02CVEによるエクスプロイト検索
- 03詳細情報とコードの取得
- 04新着および関連項目の確認
- 05レコード比較と統計の表示
- 06JSONまたはCSVでの結果出力
活用シーン
- 01CVEに関連するExploitDB項目の検索
- 02プラットフォームや種類による記録の絞り込み
- 03新着項目や傾向の確認
- 04分析用に絞り込んだ結果を出力
MCP 対応
検索、取得、比較、出力を行う18種類のツールをMCPクライアントに提供します。統計、タイムライン、関連エクスプロイトの照会にも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
ExploitDB MCP サーバー
Cyreslab.ai によって開発された、ExploitDB の機能へのアクセスを提供する Model Context Protocol サーバーです。このサーバーにより、Claude などの AI アシスタントがセキュリティエクスプロイトや脆弱性に関する情報を照会できるようになり、サイバーセキュリティ調査および脅威インテリジェンス機能が強化されます。
GitHub リポジトリ: https://github.com/Cyreslab-AI/exploitdb-mcp-server お問い合わせ: [email protected]
機能
- エクスプロイト検索: キーワード、CVE ID、プラットフォームなどでエクスプロイトを検索
- エクスプロイトの詳細: コードを含む、特定のエクスプロイトに関する包括的な情報を取得
- CVE 検索: 特定の CVE ID に関連するすべてのエクスプロイトを検索
- 最近のエクスプロイト: 新しく追加されたエクスプロイトを追跡
- 統計: プラットフォーム、種類、年別のエクスプロイト分布に関するインサイトを取得
- 自動更新: スケジュールされた更新によりデータベースを最新の状態に維持
インストール
前提条件
- Node.js (v16 以上)
- npm (v7 以上)
インストール手順
-
リポジトリをクローンします:
git clone https://github.com/Cyreslab-AI/exploitdb-mcp-server.git cd exploitdb-mcp-server -
依存関係をインストールします:
npm install -
プロジェクトをビルドします:
npm run build -
サーバーを設定します:
.env.exampleを基に、ルートディレクトリに.envファイルを作成します- 必要に応じて設定を調整します (データディレクトリ、更新頻度など)
-
データベースを初期化します:
npm run update-dbNote: ExploitDB の CSV ファイルから約 47,000 件のエクスプロイトを処理するため、初回のデータベース更新には数分かかる場合があります。このスクリプトは、必須フィールドにフォールバック値を使用することで、欠落または不正なデータを適切に処理します。
-
サーバーを実行します:
node build/index.js
MCP 設定
このサーバーを Claude やその他の MCP 互換アシスタントで使用するには、MCP 設定に追加します:
{
"mcpServers": {
"mcp-exploitdb-server": {
"command": "node",
"args": ["/path/to/exploitdb-mcp-server/build/index.js"]
}
}
}
利用可能なツール
ExploitDB MCP サーバーは、エクスプロイトデータの照会と分析のための 18 個の包括的なツールを提供します:
コア検索ツール
- search_exploits - 複数のフィルターを使用した一般的な検索
- get_exploit - 特定のエクスプロイトに関する詳細情報を取得
- find_by_cve - CVE ID でエクスプロイトを検索
- get_recent_exploits - 最近追加されたエクスプロイトを取得
- get_statistics - データベース統計を取得
高度な検索ツール
- search_by_platform - フィルターを使用して特定のプラットフォームのエクスプロイトを検索
- search_by_type - エクスプロイトの種類 (webapps、remote、local、dos、hardware、shellcode) で検索
- search_by_author - 特定の作者によるすべてのエクスプロイトを検索
- search_by_date_range - 日付範囲内のエクスプロイトを検索
- search_by_tags - ExploitDB の実際のタグ (例: "SQL Injection (SQLi)"、"Cross-Site Scripting (XSS)") で検索
分析・インテリジェンスツール
- get_platform_statistics - 特定のプラットフォームの詳細な統計を取得
- get_trending_exploits - 最近追加されたエクスプロイトを検索 (期間を設定可能)
- compare_exploits - 複数のエクスプロイトを並べて比較
- get_exploit_timeline - エクスプロイトの時系列タイムラインを取得
ユーティリティツール
- batch_get_exploits - 複数のエクスプロイトを効率的に取得 (最大 50 件)
- get_related_exploits - プラットフォーム、作者、CVE、またはタグで関連するエクスプロイトを検索
- validate_exploit_id - エクスプロイト ID が存在するかどうかを確認
- export_search_results - 検索結果を JSON または CSV 形式でエクスポート
使用例
エクスプロイトの検索
search_exploits ツールを使用して、データベース内のエクスプロイトを検索します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_exploits</tool_name>
<arguments>
{
"query": "wordpress plugin",
"platform": "php",
"limit": 5
}
</arguments>
</use_mcp_tool>
追加の検索パラメータ:
type: エクスプロイトの種類でフィルター (例: webapps、remote、local、dos、hardware、shellcode)cve: CVE ID でフィルターauthor: 作者名でフィルターstart_date/end_date: 日付範囲でフィルター (YYYY-MM-DD)verified: 検証済みステータスでフィルター (true/false)offset: ページネーション用
エクスプロイトの詳細を取得
get_exploit ツールを使用して、特定のエクスプロイトに関する詳細情報を取得します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_exploit</tool_name>
<arguments>
{
"id": 12345,
"include_code": true
}
</arguments>
</use_mcp_tool>
CVE からエクスプロイトを検索
find_by_cve ツールを使用して、特定の CVE に関連するすべてのエクスプロイトを検索します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>find_by_cve</tool_name>
<arguments>
{
"cve": "CVE-2021-44228",
"limit": 10
}
</arguments>
</use_mcp_tool>
最近のエクスプロイトを取得
get_recent_exploits ツールを使用して、最近追加されたエクスプロイトを取得します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_recent_exploits</tool_name>
<arguments>
{
"limit": 10
}
</arguments>
</use_mcp_tool>
統計情報を取得
get_statistics ツールを使用して、データベース内のエクスプロイトに関するインサイトを取得します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_statistics</tool_name>
<arguments>
{}
</arguments>
</use_mcp_tool>
プラットフォームで検索
高度なフィルターを使用して、特定のプラットフォームのエクスプロイトを検索します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_by_platform</tool_name>
<arguments>
{
"platform": "php",
"type": "webapps",
"verified": true,
"limit": 10
}
</arguments>
</use_mcp_tool>
作者で検索
特定の作者によるすべてのエクスプロイトを検索します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_by_author</tool_name>
<arguments>
{
"author": "Offensive Security",
"limit": 10
}
</arguments>
</use_mcp_tool>
日付範囲で検索
特定の日付範囲内のエクスプロイトを検索します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_by_date_range</tool_name>
<arguments>
{
"start_date": "2024-01-01",
"end_date": "2024-12-31",
"platform": "windows",
"limit": 20
}
</arguments>
</use_mcp_tool>
タグで検索
ExploitDB の実際のタグでエクスプロイトを検索します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>search_by_tags</tool_name>
<arguments>
{
"tags": ["SQL Injection (SQLi)", "Remote"],
"match_all": false,
"limit": 10
}
</arguments>
</use_mcp_tool>
トレンドのエクスプロイトを取得
最近追加されたエクスプロイトを検索します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_trending_exploits</tool_name>
<arguments>
{
"days": 30,
"limit": 10
}
</arguments>
</use_mcp_tool>
エクスプロイトを比較
複数のエクスプロイトを並べて比較します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>compare_exploits</tool_name>
<arguments>
{
"ids": [12345, 12346, 12347]
}
</arguments>
</use_mcp_tool>
関連するエクスプロイトを取得
特定のエクスプロイトに関連するエクスプロイトを検索します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>get_related_exploits</tool_name>
<arguments>
{
"id": 12345,
"relation_type": "platform",
"limit": 10
}
</arguments>
</use_mcp_tool>
エクスプロイトを一括取得
複数のエクスプロイトを効率的に取得します:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>batch_get_exploits</tool_name>
<arguments>
{
"ids": [12345, 12346, 12347, 12348],
"include_code": false
}
</arguments>
</use_mcp_tool>
検索結果をエクスポート
検索結果を CSV または JSON 形式でエクスポートします:
<use_mcp_tool>
<server_name>mcp-exploitdb-server</server_name>
<tool_name>export_search_results</tool_name>
<arguments>
{
"query": "wordpress",
"format": "csv",
"platform": "php",
"limit": 100
}
</arguments>
</use_mcp_tool>
設定オプション
サーバーは環境変数または .env ファイルを使用して設定できます:
| 変数 | 説明 | デフォルト |
|---|---|---|
CLONE_REPOSITORY | ExploitDB リポジトリをクローンするかどうか | false |
REPOSITORY_URL | ExploitDB リポジトリの URL | https://gitlab.com/exploit-database/exploitdb.git |
CSV_URL | ExploitDB CSV ファイルの URL | https://gitlab.com/exploit-database/exploitdb/-/raw/main/files_exploits.csv |
DATA_DIR | データを保存するディレクトリ | ./data |
DB_PATH | SQLite データベースへのパス | ./data/exploitdb.sqlite |
UPDATE_INTERVAL | 更新頻度 (時間単位、0 で無効化) | 24 |
MAX_RESULTS | クエリごとに返す結果の最大数 | 10 |
データソース
このサーバーは、Offensive Security が管理する Exploit Database のデータを使用します。データは CSV ファイルから直接ダウンロードするか、ExploitDB GitLab リポジトリ からクローンします。
データモデル
取り込まれる CSV(files_exploits.csv)には 17 個の列があります:
id, file, description, date_published, author, type, platform, port, date_added, date_updated, verified, codes, tags, aliases, screenshot_url, application_url, source_url.
17 個の列はすべて取り込まれ、保存されます:
codes— CVE/OSVDB 参照の実際のセミコロン区切りリスト(例:CVE-2017-13262;CVE-2017-13261;OSVDB-12345)。すべての CVE 識別子はこの列から解析され、正規化されたexploit_cvesテーブルに格納されるため、複数の CVE に対応するエクスプロイトは、そのすべてから正しく発見できます。codesが空の場合(古い行にはこれが欠けていることがあります)、サーバーは説明テキストから CVE パターンを正規表現で抽出するフォールバックを行います。tags— そのエクスプロイトの実際の ExploitDB タグ(例:SQL Injection (SQLi)、Metasploit Framework (MSF))で、そのまま保存されます。これらは説明文のキーワードマッチングから推測されたものではありません。aliases— エクスプロイトの別名/代替識別子(例:dirtycow、ImageTragick)で、配列として公開されます。screenshot_url、application_url、source_url— 元の ExploitDB エントリからの参照リンクで、screenshotUrl、applicationUrl、sourceUrlとして公開されます。
その他のデータ品質の取り扱い:
- 日付の取り扱い: CSV の
date_publishedを使用し、それが欠けている場合はdate_added、date_updated、またはデフォルトの日付にフォールバックします - 欠落フィールド: データが不完全な場合、必須フィールド(author、type、platform)に妥当なデフォルト値を提供します
- 重複 ID: 上流の CSV では少数の行が同じ
idを共有しています。後にある行が優先されます(idによる upsert)
各エクスプロイトの JSON 表現には、cve(後方互換性のために保持される主要/最初の CVE)と cves(そのエクスプロイトに関連するすべての CVE の完全な配列)の両方が含まれます。
type に関する注記: 取り込まれる files_exploits.csv には webapps、remote、local、dos、hardware の行のみが含まれています — ExploitDB の shellcode カテゴリは別の CSV(files_shellcodes.csv)にあり、このサーバーは現在それを取り込んでいません。shellcode は前方互換性のためにフィルター値として受け付けられますが、現在のところどの行にも一致しません。
データベースには通常、以下が含まれます:
- 1988 年から現在に至る 46,000 件以上 のエクスプロイト
- 33,000 件以上 の検証済みエクスプロイト
- 60 以上 のプラットフォーム(PHP、Windows、Linux など)にわたるカバレッジ
- 27,000 件以上 の Web アプリケーションのエクスプロイト
- 作者、日付、プラットフォーム、CVE、タグ、別名、参照 URL を含む包括的なメタデータ
ライセンス
このプロジェクトは MIT ライセンスの下でライセンスされています - 詳細は LICENSE ファイルを参照してください。
謝辞
- Offensive Security — Exploit Database を維持してくださっていることに感謝します
- Model Context Protocol — AI アシスタントが外部ツールにアクセスできるようにしてくださっていることに感謝します
コントリビューション
コントリビューションを歓迎します!お気軽に Pull Request を送ってください。
機能の提案やバグを見つけましたか?私たちの GitHub リポジトリ で issue を作成するか、[email protected] まで直接ご連絡ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。