Osv Ui Mcp について
osv-uiは依存関係マニフェストをOSV.devで照合し、脆弱性をローカルのブラウザダッシュボードに表示します。依存関係のリスクを確認する開発者向けで、修正は明示的な確認後にのみ適用されます。
主な機能
- 017つのエコシステムのマニフェストをスキャン
- 02脆弱性とリスクスコアを表示
- 03アップグレード案と修正コマンドを提示
- 04レポートとSBOMをエクスポート
- 05スキャン結果をベースラインと比較
- 06確認後に修正を適用
活用シーン
- 01モノレポ全体の依存関係の脆弱性を確認
- 02CIレポートを作成しPRスキャンを比較
- 03ビジュアルダッシュボードで検出結果を確認
MCP 対応
osv-uiはAIエージェント向けのMCPサーバーとしても動作します。プロジェクトをスキャンし、確認用ダッシュボードを開き、明示的な承認後に修正を適用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | いいえ | プロジェクトディレクトリの絶対パスまたは相対パス。デフォルトは現在の作業ディレクトリです。 |
| severity_filter | enum | いいえ | この深刻度以上の脆弱性のみを返します。デフォルト:すべて。all | critical | high | moderate | low |
| offline | boolean | いいえ | true の場合、OSV.dev への問い合わせをスキップし、マニフェストのみを解析します。デフォルト:false。 |
詳細

osv-ui
npm、Python、Go、Rust、Java、PHP、Ruby のプロジェクト向け、美しく、設定不要のビジュアル CVE ダッシュボードです。
コマンドは 1 つ。登録不要。API キー不要。100% ローカルで動作し、コードがマシンの外に出ることはありません。
🇻🇳 Tiếng Việt · 🇺🇸 English · 🇨🇳 中文 · 🇯🇵 日本語
問題
$ npm audit
# ... 300 lines of this ...
# moderate Regular Expression Denial of Service in semver
# package semver
# patched in >=7.5.2
# ...
# 12 vulnerabilities (3 moderate, 6 high, 3 critical)
誰もそれを読みません。セキュリティは無視され、依存関係は脆弱なままです。
解決策
npx osv-ui
→ ダッシュボードが開きます。すべての CVE、すべての修正、すべてのサービスを確認できます。これで完了です。
試してみる理由
- 設定不要:複雑なセットアップも、登録も、API キーも必要ありません。
- プライバシーを最優先:分析はすべてお使いのマシン上で行われます。
- 高速かつビジュアル:リアルタイムのリスクスコア、脆弱性チャート、分かりやすいアップグレードガイドを数秒で確認できます。
- マルチプラットフォーム:Node.js(npm)、Python、Go、Rust、Java、PHP、Ruby をネイティブにサポートします。
機能
| 🌐 マルチエコシステム | package-lock.json、pnpm-lock.yaml、yarn.lock、Pipfile.lock、poetry.lock、requirements.txt、go.sum、Cargo.lock、pom.xml、composer.lock、Gemfile.lock をスキャンします |
| 📡 最新の CVE データ | OSV.dev を利用し、NVD、GitHub Advisory、PyPI Advisory から毎日更新されます。API キーは不要です。 |
| 🏢 マルチサービス | 1 つのコマンドでモノレポ全体をスキャンできます。フロントエンド、バックエンド、ワーカー、ML サービスに対応します |
| 💊 修正ガイド | Dependabot 形式のアップグレード表:現在のバージョン → 安全なバージョンと、ワンクリックでコピーできるコマンド |
| 🔌 組み込み REST API | GET /api/data または CLI のエクスポートフラグで、独自のセキュリティダッシュボードを構築できます |
| 🎯 リスクスコア | サービスごとに 0~100 のスコアを表示し、優先して対処すべき箇所が分かります |
| 🔍 CVE の詳細表示 | 行をクリックすると、CVSS スコア、説明、NVD リンク、GitHub Advisory リンクを確認できます |
| 🌙 ダークモード | 昼夜を問わず、目に優しくセキュリティ監査を行えます |
クイックスタート
現在のディレクトリをスキャン:
npx osv-ui
モノレポをスキャン(複数のサービスを一度に):
npx osv-ui ./frontend ./api ./worker ./ml-service
現在のディレクトリ以下にあるすべてのサービスを自動検出:
npx osv-ui -d
package.json のスクリプトに追加:
{
"scripts": {
"audit:ui": "npx osv-ui",
"audit:all": "npx osv-ui ./frontend ./api ./worker"
}
}
--discover, -d Auto-find service dirs that contain a supported manifest
--port=2003 Use a custom port (default: 2003)
--json[=file] Save report as JSON without opening browser (defaults to osv-report.json)
--html[=file] Save report as HTML without opening browser (defaults to osv-report.html)
--cyclonedx[=file] Save CycloneDX SBOM JSON (defaults to osv-sbom.cdx.json)
--spdx[=file] Save SPDX SBOM JSON (defaults to osv-sbom.spdx.json)
--baseline=file Compare with a previous --json report
--markdown[=file] Save a Markdown PR/comment report (defaults to osv-report.md)
--fail-on=level Exit non-zero for critical/high/moderate/low findings
--webhook-url=url POST matching findings to a webhook
--webhook-severity=level Webhook threshold (default: critical)
--watch Keep dashboard running and re-scan when manifests change
--no-open Don't auto-open the browser
--offline Skip OSV.dev lookup — parse manifests only
-h, --help Show help message
🤖 AI エージェントとの統合(MCP)
osv-ui は Model Context Protocol (MCP) サーバーになりました。これにより、Claude Desktop、Cursor、Claude Code などの AI エージェントは次のことができます。
- CVE を自動的に検出するため、プロジェクトをスキャンします。
- 検出結果を確認できるよう、ビジュアルダッシュボードを開きます(Human-in-the-loop)。
- 明示的な確認の後に、修正を適用します。
クイックセットアップ(npx):
{
"mcpServers": {
"osv-ui": {
"command": "npx",
"args": ["-y", "osv-ui-mcp"]
}
}
}
詳しいセットアップ手順は、MCP パッケージの README をご覧ください。
🔌 強力な組み込み API
osv-ui は単なるダッシュボードではなく、セキュリティデータエンジンです。
ダッシュボードの起動後、プロジェクト全体の未加工のセキュリティデータを取得できます。
# Get full JSON payload for all services
curl http://localhost:2003/api/data
# Use it in your custom scripts
curl -s http://localhost:2003/api/data | jq '.[0].vulns'
CI レポート、PR 差分、SBOM
ブラウザーを開かずに、機械可読なレポートを生成します。
npx osv-ui -d --json=osv-report.json --markdown=osv-report.md --cyclonedx=sbom.cdx.json --spdx=sbom.spdx.json --no-open
PR のスキャン結果をベースラインレポートと比較し、新たに発生した重大度「高」以上の検出結果があれば失敗させます。
npx osv-ui -d --json=current.json --baseline=main-osv-report.json --markdown=osv-pr.md --fail-on=high --no-open
最小限の GitHub Actions フロー:
name: osv-ui
on: [pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 24
- run: npx osv-ui -d --json=current.json --markdown=osv-pr.md --cyclonedx=sbom.cdx.json --fail-on=high --no-open
- uses: actions/upload-artifact@v4
if: always()
with:
name: osv-ui-report
path: |
current.json
osv-pr.md
sbom.cdx.json
新たに検出された重大な問題を Webhook に送信します。
npx osv-ui -d --baseline=main-osv-report.json --webhook-url="$SECURITY_WEBHOOK_URL" --webhook-severity=critical --json=current.json
対応しているマニフェストファイル
| エコシステム | ファイル |
|---|---|
| npm / JS | package-lock.json · pnpm-lock.yaml · yarn.lock |
| Python | requirements.txt · Pipfile.lock · poetry.lock · pyproject.toml · uv.lock |
| Go | go.sum |
| Rust | Cargo.lock |
| Java | pom.xml(Maven) |
| PHP | composer.json · composer.lock |
| Ruby | Gemfile · Gemfile.lock |
対応エコシステムは今後も追加予定です。ロードマップをご覧ください。
仕組み
Your project files
│
├─ package-lock.json ──┐
├─ Pipfile / poetry ──┤──► parser ──► package list
├─ go.sum / Cargo.lock ──┘
│
▼
OSV.dev batch API (free, no key)
│
▼
CVE matches + fix versions
│
▼
Express server → browser dashboard
http://localhost:2003
CVE データは**OSV.dev**から取得しています。Google が管理する無料のオープンデータベースで、以下の情報を集約しています。
- 🇺🇸 NVD — NIST National Vulnerability Database
- 🐙 GitHub Advisory Database(GHSA)
- 🐍 PyPI Advisory Database
- 📦 npm Advisory Database
- 🦀 RustSec · Go Vuln DB · OSS-Fuzz など
毎日更新されます。アカウント不要。レート制限なし。ベンダーロックインなし。
osv-scanner(Google)との併用に最適
osv-ui と osv-scanner は、同じ OSV.dev のデータソースを利用します。osv-ui は、osv-scanner にないビジュアル表示を追加します。
- ターミナル出力の代わりにブラウザダッシュボードを表示
- 複数サービスのサイドバー
- コマンドをコピーできる Dependabot スタイルのアップグレードガイド
他のツールとの比較
| osv-ui | npm audit | Snyk | Dependabot | |
|---|---|---|---|---|
| ビジュアルダッシュボード | ✅ | ❌ ターミナルのみ | ✅ | ✅ |
| npm 対応 | ✅ | ✅ | ✅ | ✅ |
| Python 対応 | ✅ | ❌ | ✅ | ✅ |
| 1 つの画面で複数サービスを表示 | ✅ | ❌ | ✅ 有料 | ✅ |
| 登録不要 | ✅ | ✅ | ❌ | ❌ |
| GitLab Freeで動作 | ✅ | ✅ | ❌ | ❌ |
| セルフホスト/ローカルで動作 | ✅ | ✅ | ❌ | ❌ |
| 修正コマンド | ✅ | 一部対応 | ✅ | ✅ |
| オープンソース | ✅ | ✅ | ❌ | ❌ |
GitLab CI — 重大な CVE がある場合にデプロイをブロック
GitLab Free では Dependabot を使えませんか?.gitlab-ci.yml に次を追加してください。
audit:
stage: test
image: node:24-alpine
script:
- npm audit --json > /tmp/audit.json || true
- |
node -e "
const r = require('/tmp/audit.json');
const crit = Object.values(r.vulnerabilities || {})
.filter(v => v.severity === 'critical').length;
if (crit > 0) {
console.error('BLOCKED: ' + crit + ' critical CVE(s). Run: npx osv-ui');
process.exit(1);
}
console.log('OK: no critical vulnerabilities');
"
artifacts:
paths: [/tmp/audit.json]
when: always
要件
- Node.js >= 22
- OSV.dev へのクエリにはインターネット接続が必要です。または
--offlineを使用してください - npm プロジェクト:
package-lock.jsonが存在するように、まずnpm installを実行してください - Python プロジェクト:上記の対応マニフェストファイルのいずれか
ロードマップ
あらゆる貢献を歓迎します。取り組みたい項目がある場合は、調整のため、まず issue を作成してください。
- Go 対応 —
go.sum/go.modを解析 - Rust 対応 —
Cargo.lockを解析 - Java / Maven —
pom.xmlを解析 - PHP / Composer —
composer.lockを解析 - Ruby / Bundler —
Gemfile.lockを解析 - レポートのエクスポート — HTML / JSON として保存
- ダークモード — 目に優しいダッシュボード UI
- GitHub Actions / CI 差分 — Markdown の PR コメントを生成し、新たな CVE があれば失敗させる
- SBOM のエクスポート — CycloneDX / SPDX 形式
- 監視モード — マニフェストファイルの変更時に再スキャン
- Slack / webhook — 新たな重大な CVE を通知
- パーサーの堅牢化 — Maven のプロパティ継承、ロックファイルのエッジケース、ワークスペースのレイアウト
- ダッシュボードのリアルタイム更新 — ページを再読み込みせずに、監視モードの更新を開いているブラウザータブへ送信
貢献
このプロジェクトはコミュニティによって作られています。スキルレベルを問わず歓迎します。
最初の貢献におすすめの課題:
- パーサーのユニットテストを作成する
- Python パーサーのエッジケースを改善する
- Maven/Gradle およびワークスペースのパーサーのエッジケースを改善する
# Clone and run locally
git clone https://github.com/toan203/osv-ui
cd osv-ui
npm install
# Run against your own project
node bin/cli.js /path/to/your/project
# Run against multiple services
node bin/cli.js ./frontend ./backend
コードスタイルと PR の手順については、CONTRIBUTING.md をお読みください。
ライセンス
MIT — 自由に使用、フォーク、組み込み、活用できます。クレジット表記は歓迎しますが、必須ではありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。