mcp-nvd

by marcoeg
Verified

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Enables searching for vulnerabilities related to Red Hat products in the NVD database using keyword search functionality

NVD データベース MCP サーバー

API を介して NIST 国家脆弱性データベース (NVD) を照会するためのモデル コンテキスト プロトコルサーバーの実装。https ://nvd.nist.gov/

前提条件として、NVD API キーが必要です。(こちらからリクエストしてください)。

状態

stdioおよびsseトランスポートの両方を使用して、Claude デスクトップ アプリおよびその他の MCP 準拠のホストおよびクライアントで動作します。

特徴

  • 詳細な脆弱性データを使用して、ID で特定の CVE をクエリします。
  • カスタマイズ可能な結果オプションを使用して、キーワードで NVD データベースを検索します。
  • リアルタイム通信のための Server-Sent Events (SSE) トランスポートをサポートします。
  • Claude Desktop などの MCP 準拠クライアントと互換性があります。

ツール

サーバーは、NVD データベースを照会するために次のツールを実装します。

  • get_cve :
    • 説明: ID で CVE レコードを取得します。
    • パラメータ:
      • cve_id (str): CVE ID (例: CVE-2019-1010218 )。
      • concise (bool、デフォルトはFalse ): Trueの場合は、より短い形式を返します。
    • 返されるもの: スコア、弱点、参照を含む詳細な CVE 情報。
  • search_cve :
    • 説明: キーワードで NVD データベースを検索します。
    • パラメータ:
      • keyword (str): 検索用語 (例: Red Hat )。
      • exact_match (bool、デフォルトはFalse ): Trueの場合は、正確なフレーズ一致が必要です。
      • concise (bool、デフォルトはFalse ): Trueの場合は、短い CVE レコードを返します。
      • results (int, default 10 ): CVE レコードの最大数 (1-2000)。
    • 返される値: 一致する CVE とその合計数のリスト。

構成

  1. 次の場所にある Claude Desktop 構成ファイルを作成または編集します。
    • macOSの場合: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows の場合: %APPDATA%/Claude/claude_desktop_config.json
  2. 以下を追加します。
{ "mcpServers": { "mcp-nvd": { "command": "/path/to/uvx", "args": ["mcp-nvd"], "env": { "NVD_API_KEY": "your-api-key" } } } }
  1. /path/to/uvxuvx実行ファイルへの絶対パスに置き換えます。ターミナルでwhich uvxコマンドのパスを確認してください。これにより、サーバーの起動時に正しいバージョンのuvxが使用されるようになります。
  2. 変更を適用するには、Claude Desktop を再起動します。

発達

設定

  1. 前提条件:
  2. リポジトリのクローンを作成します:
git clone https://github.com/marcoeg/mcp-nvd cd mcp-nvd
  1. 環境変数を設定する:
    • プロジェクト ルートに.envファイルを作成します。
      NVD_API_KEY=your-api-key
    • your-api-key NVD API キーに置き換えます。
  2. 依存関係をインストール:
uv sync uv pip install -e .

MCPインスペクターで実行する

cd /path/to/the/repo source .env npx @modelcontextprotocol/inspector uv \ --directory /path/to/repo/mcp-nvd run mcp-nvd

次に、MCP インスペクターによって示された URL (通常はhttp://localhost:8077?proxyPort=8078をブラウザで開きます。

インスペクターでstdiosseトランスポート タイプを自由に切り替えます。

SSEクライアントでのテスト

サーバーを実行します。

cd /path/to/the/repo source .env uv run mcp-nvd --transport sse --port 9090
  • デフォルトではポート9090で SSE トランスポートを使用して実行されます。

クライアントを実行します。

get_cveをテストします:

uv run client.py http://localhost:9090/sse CVE-2019-1010218

テストsearch_cve (デフォルト 10 件の結果):

uv run client.py http://localhost:9090/sse "search:Red Hat"

テストsearch_cve (完全一致、5 件の結果):

uv run client.py http://localhost:9090/sse "search:Microsoft Windows:exact:5"

Dockerのセットアップ

建てる

docker build -t mcp-nvd:latest .

走る

.envの場合:

docker run -d -p 9090:9090 -v /path/to/.env:/app/.env mcp-nvd:latest

env var の場合:

docker run -d -p 9090:9090 -e NVD_API_KEY="your-key" mcp-nvd:latest

カスタム ポート:

docker run -d -p 8080:8080 -v /path/to/.env:/app/.env mcp-nvd:latest uv run mcp-nvd --transport sse --port 8080 --host 0.0.0.0

確認する

docker logs <container_id> # Expect: INFO: Uvicorn running on http://0.0.0.0:9090

テスト:

uv run client.py http://localhost:9090/sse CVE-2019-1010218

注記

  • .envNVD_API_KEY=your-keyがあることを確認するか、 -eを使用してください。
  • デフォルトポート: 9090

以下は、コード ブロック内の Markdown コメントとしてフォーマットされた概要です。これは、 docker-compose.yamlREADME.mdなどのファイルに含めるのに適しています。

テストに Docker Compose を使用する

このdocker-compose.yamltests/ディレクトリにあり、ビルド済みのDockerイメージを用いてMCP-NVDサーバーをテストするためのサービスを定義します。これは、 clickhouseのようなスタンドアロンサービスと同様に、テストユースケース向けに設計されており、イメージは毎回再構築されるのではなく、事前にビルドされることを前提としています。

仮定

  • ビルド済みイメージ:このサービスは、ローカルまたはレジストリで利用可能なmcp-nvd:testタグ付きのビルド済みイメージを使用します。このイメージは親ディレクトリにあるDockerfileに基づいており、 uvを使用して MCP-NVD サーバーをセットアップし、ポート 9090 で SSE モードで実行します。

イメージの構築方法

mcp-nvd:testイメージを作成するには:

  1. プロジェクト ルートに移動します。
    cd ./mcp-nvd
  2. Dockerfile を使用してイメージをビルドします。
    docker build -t mcp-nvd:test .
    • これにより、 pyproject.tomlmcp_nvd/モジュールからのすべての依存関係を含むイメージがビルドされ、サーバーを実行するためのデフォルトのコマンドが設定されます。

サービスの実行

tests/ディレクトリから:

cd tests docker-compose up
  • アクセス: サーバーはhttp://localhost:9090で実行されます。
  • 停止: docker-compose down
  • 環境: NVD_API_KEY../.envにあることを確認するか、 docker-compose --env-file ../.env upを使用します。

Docker Compose シナリオでtest_tools.pyを実行する

Docker 環境内でユニット テスト ( test_tools.py ) を実行するには:

  1. サービスを開始します。docker docker-compose upを実行して、 mcp-nvdサービスが実行されていることを確認します。
  2. コンテナ内で実行:
    • コンテナ名 (例: mcp-nvd-mcp-nvd-1 ) を次のように識別します。
      docker ps
    • コンテナ内でテストを実行します。
      docker exec -it mcp-nvd-mcp-nvd-1 python /app/tests/test_tools.py
    • test_tools.pyがイメージの/app/tests/にコピーされていることを前提としています。コピーされていない場合は、Dockerfileに以下を追加してください。
      COPY tests/ ./tests/
      次に、ルートからdocker build -t mcp-nvd:test .を使用してイメージを再構築します。
  3. 代替案: コンテナ化されたサービスに対してローカルでテストを実行します。
    cd tests python test_tools.py
    • これは、サービスの実行中にhttp://localhost:9090に対してテストを行います。

主な詳細

  • ポート: 9090 は SSE アクセス用に公開されています。
  • ログ: log-dataボリュームに保存されます (オプション)。
  • イメージ: docker-composeを実行する前に、一度ビルドしてmcp-nvd:testとしてタグ付けする必要があります。

SSE ベースの MCP クライアントとサーバーの動作パターンを提供してくれた@sidharthrajaramに感謝します: https://github.com/sidharthrajaram/mcp-sse

-
security - not tested
A
license - permissive license
-
quality - not tested

API を介して NIST 国家脆弱性データベース (NVD) を照会するためのモデル コンテキスト プロトコル サーバーの実装。

  1. Status
    1. Features
      1. Tools
    2. Configuration
      1. Development
        1. Setup
        2. Run with the MCP Inspector
        3. Testing with the SSE Client
      2. Docker Setup
        1. Build
        2. Run
        3. Verify
        4. Notes
        5. Using Docker Compose for Testing
      ID: 7dfi396x58