mcpField
O
OSV MCP Server

OSV MCP Server

ローカル
github.com/StacklokLabsセキュリティ412 週間前に更新

OSV MCP Server について

OSV MCP Server は、OSV(Open Source Vulnerabilities)データベースへアクセスする MCP サーバーです。パッケージやコミットに関する脆弱性情報を必要とする LLM ベースのアプリケーション向けです。Go で実装されており、SSE と streamable-http のトランスポートに対応しています。

主な機能

  1. 01パッケージのバージョンまたはコミットによる脆弱性検索
  2. 02複数のパッケージやコミットの一括検索
  3. 03OSV の脆弱性 ID による詳細情報の取得
  4. 04環境変数によるポートとトランスポートの設定

活用シーン

  1. 01依存パッケージのバージョンに既知の脆弱性があるかの確認
  2. 02一度のリクエストで複数の依存関係のセキュリティ状況を確認
  3. 03脆弱性 ID を指定した詳細情報の参照

MCP 対応

本プロジェクトは MCP サーバーであり、単体検索、一括検索、ID による詳細取得の脆弱性関連ツールを MCP クライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

OSV MCP サーバー

Trust Score

OSV(オープンソース脆弱性)データベースへのアクセスを提供する MCP(Model Context Protocol)サーバーです。

概要

このプロジェクトでは、LLM を活用したアプリケーションから OSV データベースに問い合わせて脆弱性情報を取得できる、SSE ベースの MCP サーバーを実装しています。サーバーは次のツールを提供します。

  1. 特定のパッケージバージョンまたはコミットに関する脆弱性の問い合わせ
  2. 複数のパッケージまたはコミットに関する脆弱性の一括問い合わせ
  3. 脆弱性 ID を指定した詳細情報の取得

インストール

前提条件
  • Go 1.21 以降
  • Task(任意。タスクの実行に使用)
  • ko(任意。コンテナイメージのビルドに使用)
ソースからのビルド
# Clone the repository
git clone https://github.com/StacklokLabs/osv-mcp.git
cd osv-mcp

# Build the server
task build

使用方法

ToolHive での実行(推奨)

OSV MCP サーバーを実行する最も簡単な方法は、安全なコンテナ化デプロイを提供する ToolHiveを使用することです。

# Install ToolHive (if not already installed)
# See: https://docs.stacklok.com/toolhive/guides-cli/install

# Register a supported client so ToolHive can auto-configure your environment
thv client setup

# Run the OSV MCP server (packaged as 'osv' in ToolHive)
thv run osv

# List running servers
thv list

# Get detailed information about the server
thv registry info osv

サーバーは MCP 対応クライアントから利用でき、OSV データベースに問い合わせて脆弱性情報を取得できます。

ソースからの実行
サーバーの設定

サーバーは環境変数を使用して設定できます。

  • MCP_PORT:サーバーを実行するポート番号(デフォルト:8080)

    • 0 から 65535 までの有効な整数である必要があります
    • 無効な値が指定された場合、または未設定の場合、サーバーはポート 8080 を使用します
  • MCP_TRANSPORT:サーバーのトランスポートモード(デフォルト:sse)

    • サポートされる値:sse、streamable-http
    • 無効な値が指定された場合、または未設定の場合、サーバーは SSE トランスポートモードを使用します

例:

# Run on port 3000
MCP_PORT=3000 ./build/osv-mcp-server

# Run on default port 8080
./build/osv-mcp-server
MCP ツール

サーバーは次の MCP ツールを提供します。

query_vulnerability

特定のパッケージバージョンまたはコミットに影響する脆弱性を問い合わせます。

入力スキーマ:

{
  "type": "object",
  "properties": {
    "commit": {
      "type": "string",
      "description": "The commit hash to query for. If specified, version should not be set."
    },
    "version": {
      "type": "string",
      "description": "The version string to query for. If specified, commit should not be set."
    },
    "package_name": {
      "type": "string",
      "description": "The name of the package."
    },
    "ecosystem": {
      "type": "string",
      "description": "The ecosystem for this package (e.g., PyPI, npm, Go)."
    },
    "purl": {
      "type": "string",
      "description": "The package URL for this package. If purl is used, package_name and ecosystem should not be set."
    }
  }
}
query_vulnerabilities_batch

複数のパッケージまたはコミットに影響する脆弱性を一度に問い合わせます。

入力スキーマ:

{
  "type": "object",
  "properties": {
    "queries": {
      "type": "array",
      "description": "Array of query objects",
      "items": {
        "type": "object",
        "properties": {
          "commit": {
            "type": "string",
            "description": "The commit hash to query for. If specified, version should not be set."
          },
          "version": {
            "type": "string",
            "description": "The version string to query for. If specified, commit should not be set."
          },
          "package_name": {
            "type": "string",
            "description": "The name of the package."
          },
          "ecosystem": {
            "type": "string",
            "description": "The ecosystem for this package (e.g., PyPI, npm, Go)."
          },
          "purl": {
            "type": "string",
            "description": "The package URL for this package. If purl is used, package_name and ecosystem should not be set."
          }
        }
      }
    }
  },
  "required": ["queries"]
}
get_vulnerability

脆弱性 ID を指定して、その詳細を取得します。

入力スキーマ:

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "The OSV vulnerability ID"
    }
  },
  "required": ["id"]
}

例

パッケージの脆弱性を問い合わせる
{
  "package_name": "lodash",
  "ecosystem": "npm",
  "version": "4.17.15"
}
コミットの脆弱性を問い合わせる
{
  "commit": "6879efc2c1596d11a6a6ad296f80063b558d5e0f"
}
脆弱性を一括で問い合わせる
{
  "queries": [
    {
      "package_name": "lodash",
      "ecosystem": "npm",
      "version": "4.17.15"
    },
    {
      "package_name": "jinja2",
      "ecosystem": "PyPI",
      "version": "2.4.1"
    }
  ]
}
脆弱性の詳細を取得する
{
  "id": "GHSA-vqj2-4v8m-8vrq"
}

開発

テストの実行
task test
リント
task lint
コードのフォーマット
task fmt

コントリビューション

この MCP サーバーへのコントリビューションを歓迎します。コントリビューションをご希望の場合は、開始方法の詳細についてコントリビューションガイドをご確認ください。

バグを見つけた場合や機能のリクエストがある場合は、リポジトリでイシューを作成するか、コミュニティの Discord サーバーの #mcp-servers チャンネルにご参加ください。

ライセンス

このプロジェクトは Apache v2 License の下でライセンスされています。詳細については LICENSE ファイルをご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。