vulners-mcp について
Vulners MCP は、セキュリティ研究者や開発者が MCP クライアントから脆弱性データを検索し、ソフトウェアパッケージを監査するためのサーバーです。stdio と HTTP に対応し、ローカルまたはホスト型の構成に合わせて API キーを設定できます。
主な機能
- 01脆弱性速報の Lucene 検索
- 02CVE と速報の詳細取得
- 03ソフトウェアと Linux パッケージの監査
- 04CPE の検索とオートコンプリート
- 05stdio と HTTP のトランスポート
- 06Docker、PyPI、ローカルでの導入
活用シーン
- 01CVE の詳細を調べる
- 02脆弱性速報を調査する
- 03ソフトウェアパッケージのバージョンを監査する
- 04ホスト型のセキュリティサーバーを MCP クライアントに接続する
MCP 対応
MCP クライアントに、検索、CVE の照会、パッケージ監査、CPE 検索など7つの脆弱性調査ツールを提供します。stdio と HTTP に対応し、ホスト型の Streamable HTTP エンドポイントも利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.vulners.com/mcpclaude mcp add --transport http vulnerscom-vulners https://mcp.vulners.com/mcp{"mcpServers":{"vulnerscom-vulners":{"type":"http","url":"https://mcp.vulners.com/mcp"}}}Cursor で開く{"servers":{"vulnerscom-vulners":{"type":"http","url":"https://mcp.vulners.com/mcp"}}}VS Code で開く{"mcpServers":{"vulnerscom-vulners":{"type":"http","url":"https://mcp.vulners.com/mcp"}}}{"mcpServers":{"vulnerscom-vulners":{"serverUrl":"https://mcp.vulners.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
7| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| id | any | はい | 取得する単一の CVE ID、Vulners ID、アドバイザリ ID、または ID のリストです。CVE 識別子(CVE-2024-21762)、ベンダー固有 ID(RHSA-2024:1234)、Vulners 内部 ID に対応します。リストが指定された場合、`references` 引数の値にかかわらず references は常に False です。 |
| fields | any | いいえ | デフォルトのコンパクトなフィールド投影を上書きして、レスポンスを拡張します。['*'] を渡すと、Vulners がそのアドバイザリに持つすべてのフィールドを要求します(人気のある CVE では非常に大きくなることがあります)。追加に便利な個別フィールド:'description'(完全な文章による説明。デフォルトでは省略)、'cvss'/'cvss2'(旧形式のスコア。デフォルトにはすでに 'cvss3' が含まれます)、'affectedSoftware'/'cnaAffected'(影響を受けるシステム)、'enchantments'(完全な AI/悪用データ。デフォルトでは省略される大規模な相互参照およびソーシャルメンションのインデックスを含む)。省略した場合は、軽量なデフォルト(id、title、type、href、published、modified、bulletinFamily、cvss3、epss、cvelist、enchantments.exploitation、enchantments.score、enchantments.vulnersScore、enchantments.tags、enchantments.short_description)が使用されます。 |
| references | boolean | いいえ | 単一 ID の検索で完全な参照グラフ(リンクされたアドバイザリ、パッチ、関連アドバイザリ)を含めます。デフォルトは False です。コンパクトなデフォルト投影には主要情報(CVSS3、EPSS、悪用シグナル、CVE リスト)がすでに含まれています。参照グラフが必要で、レスポンスの大幅な増加を許容できる場合にのみ True に設定してください。参照の多い CVE では、ペイロードが数 KiB から 100+ MiB に膨らむことがあります。`id` がリストの場合は無視され、常に False になります。 |
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
Vulners MCP サーバー
Vulners MCP は、Claude Desktop などの AI アシスタントを通じて、Vulners の脆弱性データベースにシームレスにアクセスできる Model Context Protocol(MCP)サーバーです。セキュリティ研究者や開発者は、自然言語での会話を通じて、包括的な脆弱性データの照会、CVE の検索、セキュリティ速報の分析、ソフトウェアパッケージの監査を直接行えます。
特長
- AI アシスタントとの連携:Claude Desktop やその他の MCP 対応クライアントでネイティブに動作します
- 2 種類のトランスポートに対応:stdio(Claude Desktop 用)と HTTP の両方を自動的に検出してサポートします
- 充実したツール:脆弱性調査に使える 7 つの MCP ツールを備えています。内容は次のとおりです:
- 400 万件以上の脆弱性速報を対象とした、Lucene による全文検索
- CVE および速報情報の取得
- ソフトウェア/パッケージの脆弱性監査
- CPE の検索とオートコンプリート
- Linux パッケージの脆弱性監査
- 柔軟なデプロイ:ビルド済み Docker イメージ(
ghcr.io/vulnerscom/vulners-mcp)、PyPI パッケージ、またはローカルビルドを利用できます - 環境変数による設定:環境変数を使って簡単にセットアップできます
目次
- 要件
- Vulners API キーの取得
- 認証
- Claude Desktop ですぐに使う
- インストールとデプロイ
- 設定/環境変数
- 使い方とエンドポイント
- テスト
- 利用可能なツール
- 開発とコントリビューション
- ライセンス
要件
- Python 3.13 以降(PyPI またはローカルビルドの場合)
- Vulners API へのアクセス(有効な API キーとネットワーク接続)
- (Docker を使用する場合)Docker エンジン
Vulners API キーの取得
Vulners のウェブサイトで登録してください。 右上隅の名前をクリックして、個人メニューを開きます。 「API KEYS」タブに移動します。 スコープが「api」の API キーを生成し、ライブラリで使用してください。
認証
API キーの指定方法は、使用するトランスポートによって異なります。
| トランスポート | 実行者 | キーの指定方法 |
|---|---|---|
| stdio | ローカルで実行するユーザー(Claude Desktop、ローカルビルド) | VULNERS_API_KEY 環境変数をローカルサーバープロセスに一度設定します。これはご自身のキーであり、ご自身のローカルサーバーインスタンスのみで使用されます。 |
HTTP(mcp.vulners.com または独自にホストしたデプロイ) | 複数の呼び出し元にサービスを提供する可能性がある共有/公開サーバー | ご自身の X-Api-Key HTTP ヘッダーを各リクエストで送信する(すべての制限が適用され、そのまま転送されます)か、何も送信しません。後者については、以下の匿名利用枠をご覧ください。 |
匿名ティア(HTTP のみ)
initialize と tools/list はキーなしで常に動作するため、エージェントはキーを取得する前にサーバーが提供する機能を確認できます。X-Api-Key ヘッダーなしで送信された tools/call の動作は、このデプロイに匿名ティアが設定されているかどうかによって異なります。
| 呼び出し元 | tools/call の動作 |
|---|---|
X-Api-Key なし、匿名ティアが設定済み | 許可されます。 このデプロイの匿名ティア用キーを使って転送されます。size 形式の引数は小さな上限値に制限され、匿名呼び出しはアプリケーションレベルの控えめなレート制限を共有します。その上流キーが独自のクォータ/レート制限に達した場合は、自分のキーを送信するよう案内する構造化エラーが返されます。 |
X-Api-Key なし、匿名ティアが未設定 | 構造化された案内エラーですぐに失敗します(以下を参照)。上流には何も送信されません。 |
X-Api-Key あり、Vulners が拒否(401/403) | エラーはサニタイズされます。サーバーがお客様に代わって匿名ティア用キーに黙って切り替えることは決してありません。 |
X-Api-Key あり、有効 | キーはそのまま転送され、上限が適用されず、アプリケーションレベルのレート制限もありません。 |
案内エラーの例(キーなし、匿名ティア未設定):
{
"isError": true,
"content": [{
"type": "text",
"text": "This server does not hold a privileged API key, and no anonymous tier is configured on this deployment. Send your personal Vulners API key in the X-Api-Key HTTP header. Get a key: sign in at https://vulners.com/userinfo (human, in a browser). Details: https://mcp.vulners.com/auth.md (When configured, this server's anonymous tier is itself size- and rate-limited -- your own key always gets full limits.)"
}]
}
自分の X-Api-Key を送信すれば、このレイヤーでは常に制限のない完全なアクセスが得られます。匿名ティアは、キーを取得する前にエージェントがサーバーを試したり、軽い呼び出しをたまに行ったりできるようにするためのものです。
すでに VULNERS_API_KEY を設定しているデプロイでは、匿名ティアを有効にするために環境変数を変更する必要はありません。 HTTP モードでは、VULNERS_MCP_ANON_API_KEY が未設定の場合、VULNERS_API_KEY が使われます。そのため、同じキーが(レート制限とサイズ制限のある)匿名ティアにも使用されるようになります。匿名ティアに別の専用キーを使用し、自分の運用者キーと兼用しないようにするには、VULNERS_MCP_ANON_API_KEY を明示的に設定してください。両方が設定されている場合は、常に VULNERS_API_KEY のフォールバックより優先されます。
Claude Desktop のクイックスタート
Vulners MCP を使用する最も簡単な方法は、Claude Desktop を利用することです。
1. Docker イメージを取得する
docker pull ghcr.io/vulnerscom/vulners-mcp:latest
イメージは linux/amd64 と linux/arm64 向けに公開されており、latest および各リリースバージョン(例:1.15.0)のタグが付いています。自分でビルドする場合は、ソースからのビルドを参照してください。
2. Claude Desktop を設定する
Claude Desktop の設定ファイルに追加します。
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json
Linux:~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"vulners": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"VULNERS_API_KEY=YOUR_API_KEY_HERE",
"ghcr.io/vulnerscom/vulners-mcp:latest"
]
}
}
}
YOUR_API_KEY_HERE を実際の Vulners API キーに置き換えてください。
3. Claude Desktop を再起動する
設定を保存したら、Claude Desktop を再起動します。Vulners MCP サーバーが 🔌 アイコンから利用できるようになります。
4. 使用を開始する
Claude に次のような質問ができます。
- 「Google Chrome の最近の脆弱性を見つけて」
- 「CVE-2025-53770 の詳細を表示して」
- 「Citrix 製品で最近悪用された脆弱性は何ですか」
- 「このソフトウェアを監査して:cpe:2.3:a:google:chrome:138.0.7204.184:::::::*」
- 「ubuntu 22.04 のパッケージ 'openssl 3.0.2 amd64' と 'curl 7.81.0-1ubuntu1.14 amd64' を監査して」
インストールとデプロイ
PyPI
# stdio (Claude Desktop and other local MCP clients)
VULNERS_API_KEY="your_api_key" uvx vulners-mcp
# or install it
pip install vulners-mcp
VULNERS_API_KEY="your_api_key" vulners-mcp
Claude Desktop では、VULNERS_API_KEY を "env" に指定し、"command": "uvx", "args": ["vulners-mcp"] を使用してください。
実行スクリプトを使った Docker
HTTP モードを簡単にデプロイするには、付属の実行スクリプトを使用します。
./run-docker.sh
このスクリプトは、ローカルでビルドした vulners-mcp:latest イメージを実行します(ソースからのビルドを参照)。サーバーは http://0.0.0.0:8000/mcp で HTTP モードとして起動します。起動時に API キーは不要です。認証を参照してください。各呼び出し元は、リクエストごとに X-Api-Key ヘッダーで自分のキーを送信します。
Docker(手動)
MCP サーバーを HTTP モードで実行します(起動に API キーは必要ありません)。
docker run -d \
--name vulners-mcp-http \
-e MCP_TRANSPORT_MODE="http" \
-e VULNERS_BASE_URL="https://vulners.com" \
-p 8000:8000 \
ghcr.io/vulnerscom/vulners-mcp:latest
呼び出し元は、リクエストごとに独自のキーを送信します。例:
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "X-Api-Key: your_api_key" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_supported_os","arguments":{}}}'
Claude Desktop(stdio モード)では、代わりに -i フラグを使用し、キーを環境変数として設定します(認証を参照してください。stdio にはキーを渡すためのリクエストごとのヘッダーがありません)。
docker run -i --rm \
-e VULNERS_API_KEY="your_api_key" \
ghcr.io/vulnerscom/vulners-mcp:latest
ローカルでのビルドと実行
git clone https://github.com/vulnersCom/vulners-mcp.git
cd vulners-mcp
poetry install
# Default transport is stdio, which is why a key belongs in the environment
# here -- see Authentication above. Not needed/used if you instead run with
# MCP_TRANSPORT_MODE=http.
export VULNERS_API_KEY="your_api_key"
poetry run python -m vulners_mcp
設定/環境変数
| 変数 | 型 | デフォルト | 説明 |
|---|---|---|---|
VULNERS_API_KEY | 文字列 | 未設定 | stdio トランスポート: ローカルの運用担当者自身の Vulners API キーです(認証を参照してください)。HTTP トランスポート: VULNERS_MCP_ANON_API_KEY が未設定の場合、匿名ティアにもこのキーが使用されます。すでにこの変数を設定しているデプロイでは、匿名ティアを有効にするために環境変数を変更する必要はありません。 |
VULNERS_MCP_ANON_API_KEY | 文字列 | 未設定 | HTTP トランスポートのみ。 匿名ティアに使用する Vulners API キーです。X-Api-Key を送信しない呼び出し元は拒否されず、このキーで転送されます(匿名ティアを参照してください)。設定されている場合は、VULNERS_API_KEY によるフォールバックより優先されます。どちらも設定されていない場合、匿名ティアはありません。キーなしの tools/call には、案内エラーが返されます。 |
ANON_MAX_SIZE | 整数 | 10 | HTTP モード、匿名ティアのみ。匿名ティアの呼び出しでは、トップレベルの整数型 size ツール引数がこの値に制限されます。キーを使用した呼び出しは制限されません。 |
VULNERS_BASE_URL | 文字列 | https://vulners.com | Vulners API のベース URL(/api サフィックスなし) |
MCP_TRANSPORT_MODE | 文字列 | stdio | トランスポートモードを指定します:http または streamable-http |
MCP_STATELESS_HTTP | ブール値 | true | HTTP モードのみ。各リクエストで独自のトランスポートを使用し、サーバー側での mcp-session-id の継続性はありません。そのため、スティッキールーティングなしで、ロードバランサーの背後にあるサーバーを水平方向にスケールできます。 |
MCP_RATE_LIMIT_RPS | 数値 | 30 | HTTP モード、匿名ティアのみ。共有の匿名ティアキーのクォータを保護するための、全体(呼び出し元ごとではない)の余裕を持たせたリクエスト毎秒の上限です。最後の手段として乱用を防ぐためのものです。キーを使用した呼び出しはここでは制限されません。実際の IP ごとのスロットリングは、ホスト型デプロイの手前にあるエッジ(Cloudflare など)で行います。 |
FASTMCP_HOST | 文字列 | 0.0.0.0 | MCP サーバーがバインドするホスト/インターフェース(HTTP モードのみ) |
FASTMCP_PORT | 整数 | 8000 | MCP サーバーのポート(HTTP モードのみ) |
FASTMCP_STREAMABLE_HTTP_PATH | 文字列 | /mcp | ストリーム可能な MCP エンドポイントのパス(HTTP モードのみ) |
メトリクス(デフォルトでは無効)。Docker イメージには両方のバックエンドが含まれています。PyPI からインストールする場合は、追加機能を指定してください:pip install "vulners-mcp[metrics]"(または [prometheus]/[statsd])。
| Variable | Type | Default | Description |
|---|---|---|---|
MCP_METRICS_ENABLED | boolean | false | グローバルスイッチです。メトリクスは、これが true で、かつ MCP_METRICS_MODE が none 以外の場合にのみ収集されます。 |
MCP_METRICS_MODE | string | none | prometheus、statsd、both、または none です。 |
MCP_METRICS_PREFIX | string | mcp | すべてのメトリクス名の接頭辞です(mcp_tool_calls_total など)。 |
MCP_METRICS_PROM_HOST | string | 127.0.0.1 | Prometheus /metrics エンドポイントのバインドアドレスです。コンテナ内では 0.0.0.0 を設定します。 |
MCP_METRICS_PROM_PORT | integer | 9100 | Prometheus /metrics エンドポイントのポートです。 |
MCP_METRICS_STATSD_HOST | string | 127.0.0.1 | StatsD ホストです。 |
MCP_METRICS_STATSD_PORT | integer | 8125 | StatsD の UDP ポートです。 |
MCP_METRICS_STATSD_SAMPLE_RATE | number | 1.0 | StatsD のサンプリングレートです。0.0~1.0 の値を指定します。 |
トランスポートモード:
- サーバーは、起動方法に基づいてトランスポートモードを自動的に検出します
- HTTP モードを明示的に強制するには、
MCP_TRANSPORT_MODE=httpを使用します(スタンドアロンの HTTP サーバーの場合) - Claude Desktop は、
docker run -iで起動すると自動的に stdio モードを使用します
使い方とエンドポイント
Claude Desktop を使用する場合
自然な言葉で質問するだけです。
- 「Apache の脆弱性を検索」
- 「CVE-2024-1234 の情報を取得」
- 「ソフトウェア cpe:/a:vendor:product:version を監査」
HTTP モード
HTTP モードで実行する場合、クライアントは次の場所に接続します。
http://<FASTMCP_HOST>:<FASTMCP_PORT>/mcp
デフォルト:http://0.0.0.0:8000/mcp
制限のない完全な利用上限を適用するには、すべてのリクエストで X-Api-Key ヘッダーとして Vulners API キーを送信してください(認証を参照)。initialize と tools/list はキーなしでも常に動作します。キーなしの tools/call は、このデプロイで匿名利用枠が設定されている場合はその枠(制限あり)で実行され、設定されていない場合は上流に転送されず、ガイダンスを含む構造化エラーが直ちに返されます。
サーバーはステートレスです(デフォルトで MCP_STATELESS_HTTP=true)。各リクエストは独立して処理され、呼び出し間でサーバー側のセッションを維持する必要がないため、スティッキールーティングを行わずにロードバランサーの背後へデプロイできます。
テスト
poetry install --with dev
poetry run ruff check .
poetry run pytest
テストスイートでは Vulners API をモックするため、API キーもネットワークアクセスも必要ありません。
利用可能なツール
このサーバーは、脆弱性調査用の MCP ツールを 7 つ提供します。
検索と検出
-
search_lucene - 🔍 未知の脆弱性を検出するための検索ツール 🔍 Lucene 構文を使用して、Vulners ナレッジベースを全文検索します。特定の ID やバージョン情報がない場合にのみ使用してください。既知の CVE/bulletin ID には絶対に使用せず、代わりに bulletin_by_id を使用してください。特定のソフトウェアバージョン(例:'Chrome 138.0.7204.184')には絶対に使用せず、代わりに audit_software を使用してください。🚨 重要:ベンダー/製品を検索する場合は、必ず cnaAffected.vendor と cnaAffected.product フィールドを使用してください。affectedSoftware フィールドは存在しません。
-
bulletin_by_id - 🚨 既知の ID に使用する主要ツール 🚨 CVE または Vulners ID で bulletin を取得します。デフォルトでは、id、title、CVSS3、EPSS、CVE リスト、簡潔な悪用/AI シグナルを含むコンパクトなトリアージカード形式の概要を返します。完全なレコードは返しません。表示範囲を広げるには fields=[...] を渡します(例:'description'、'cvss'、'cvss2'、'affectedSoftware' を追加)。関連 bulletin のグラフを取得するには references=True を指定します。すべての情報を要求すると、非常に大きな結果になる場合があります。単一の ID または ID のリストに対応しています。リストを指定した場合、references は自動的に False に設定されます。既知の ID に search_lucene を使用しないでください。
-
query_autocomplete - 検索入力(ベンダー、製品、CVE など)のオートコンプリート用ヘルパーです。Vulners データベースから検索候補を取得します。
-
search_cpe - ベンダーと製品を指定して CPE 文字列を検索します(最新スキーマ)。Vulners データベースで Common Platform Enumeration 識別子を検索します。
脆弱性監査
-
audit_software - 🔍 バージョン指定ソフトウェア監査 🔍 既知の脆弱性について、特定のソフトウェアバージョンを監査します。正確なソフトウェアバージョン情報(例:Chrome 138.0.7204.184)がある場合に使用してください。バージョン指定のソフトウェア監査には、絶対に search_lucene を使用しないでください。
-
audit_linux_packages - 指定されたディストリビューションとバージョンの Linux パッケージ(RPM/DEB)を監査します。Vulners データベースを照合し、Linux パッケージの脆弱性を分析します。
情報とシステムサポート
- get_supported_os - Linux パッケージ監査でサポートされる OS 識別子とバージョンを一覧表示します。脆弱性分析に利用できるオペレーティングシステムを取得します。
ツール選択ガイドライン
🚨 重要なツール選択ルール 🚨
各ツールを使用する場面
-
bulletin_by_id:具体的な ID がある場合に使用します
- ✅ 「CVE-2025-7775 を分析して」→ bulletin_by_id
- ✅ 「CTX694938 を調べて」→ bulletin_by_id
- ✅ 「CVE-2021-44228 について教えて」→ bulletin_by_id
- ✅ 特定の CVE、RHSA、MS、CTX、NCSC、THN などの ID
-
search_lucene:具体的な ID がない場合の検索にのみ使用します
- ✅ 「Apache の脆弱性を探して」→ search_lucene
- ✅ 「最近の CVE を表示して」→ search_lucene
- ✅ 「Chrome にはどのような脆弱性がある?」→ search_lucene
- ❌ 既知の ID には絶対に使用しないでください。代わりに bulletin_by_id を使用します
-
audit_software:バージョン指定のソフトウェア監査に使用します
- ✅ 「Chrome 138.0.7204.184 を監査して」→ audit_software
- ✅ 「Firefox 120.0 の脆弱性を確認して」→ audit_software
- ✅ ベンダー、製品、バージョンの情報がある場合に使用します
- ❌ ベンダーと製品の情報しかない場合は使用しないでください(代わりに search_lucene を使用します)
効率化ルール:既知の ID には bulletin_by_id を 1 回呼び出せば十分です。明示的に範囲を広げるよう求められない限り、search_lucene で追加検索しないでください。
監査ツールの後続ワークフロー
監査ツール(audit_software、audit_linux_packages)を使用する場合
- ✅ 監査ツールを実行して、脆弱なソフトウェアを特定し、CVE ID を取得します
- ✅ 応答の vulnerabilities 配列から CVE ID を抽出します
- ✅ CVE ID のリストを指定して
bulletin_by_idを使用し、詳細な分析を行います - ✅ これにより、パッチ、参照情報、悪用データなど、包括的な脆弱性情報を取得できます
- ✅
bulletin_by_idによる一括処理は、個別に複数回呼び出すより効率的です
ツールの詳細なドキュメントやパラメーターについては、Claude のツールインスペクションを使用するか、サーバーのツール一覧を確認してください。
開発とコントリビューション
- GitHub で課題や機能リクエストを投稿してください
- 改善を含むプルリクエストを送信してください
- Vulners API との互換性を確保してください
- stdio(Claude Desktop)と HTTP の両モードをテストしてください
ソースからのビルド
git clone https://github.com/vulnersCom/vulners-mcp.git
cd vulners-mcp
docker build -t vulners-mcp:latest .
リリース
main へのプッシュごとに Docker イメージがビルドされ、GHCR に公開されます(latest と <version> のタグ)。pyproject.toml の version が新しい場合、同じワークフローでパッケージが PyPI に、server.json が MCP Registry に公開されます。変更のたびに pyproject.toml のバージョンと server.json 内の両方のバージョンを更新してください(tests/test_server_json.py で一致が確認されます)。
ライセンス
MIT
MCP Name:io.github.vulnersCom/vulners-mcp
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。