OSV MCP Server について
OSV MCP Server は、OSV(Open Source Vulnerabilities)データベースへアクセスする MCP サーバーです。パッケージやコミットに関する脆弱性情報を必要とする LLM ベースのアプリケーション向けです。Go で実装されており、SSE と streamable-http のトランスポートに対応しています。
主な機能
- 01パッケージのバージョンまたはコミットによる脆弱性検索
- 02複数のパッケージやコミットの一括検索
- 03OSV の脆弱性 ID による詳細情報の取得
- 04環境変数によるポートとトランスポートの設定
活用シーン
- 01依存パッケージのバージョンに既知の脆弱性があるかの確認
- 02一度のリクエストで複数の依存関係のセキュリティ状況を確認
- 03脆弱性 ID を指定した詳細情報の参照
MCP 対応
本プロジェクトは MCP サーバーであり、単体検索、一括検索、ID による詳細取得の脆弱性関連ツールを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
OSV MCP サーバー
OSV(オープンソース脆弱性)データベースへのアクセスを提供する MCP(Model Context Protocol)サーバーです。
概要
このプロジェクトでは、LLM を活用したアプリケーションから OSV データベースに問い合わせて脆弱性情報を取得できる、SSE ベースの MCP サーバーを実装しています。サーバーは次のツールを提供します。
- 特定のパッケージバージョンまたはコミットに関する脆弱性の問い合わせ
- 複数のパッケージまたはコミットに関する脆弱性の一括問い合わせ
- 脆弱性 ID を指定した詳細情報の取得
インストール
前提条件
ソースからのビルド
# 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 ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。