关于 Osv Ui Mcp
osv-ui 扫描依赖清单并通过 OSV.dev 查询漏洞,在本地浏览器仪表板中展示结果。它面向需要审查项目依赖风险的开发者,只有明确确认后才会应用修复。
主要功能
- 01扫描七种生态系统的清单
- 02展示漏洞和风险评分
- 03提供升级建议与修复命令
- 04导出报告和 SBOM
- 05与基线扫描结果比较
- 06确认后再应用修复
适用场景
- 01审查单体仓库中的依赖漏洞
- 02生成 CI 报告并比较拉取请求扫描
- 03在可视化仪表板中检查结果
MCP 相关
osv-ui 也可作为 MCP 服务供 AI Agent 使用。它能扫描项目、打开仪表板供人工审查,并在明确确认后应用修复。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
4收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| path | string | 否 | 项目目录的绝对路径或相对路径。默认为当前工作目录。 |
| severity_filter | enum | 否 | 仅返回严重性达到或高于此级别的漏洞。默认值:全部。all | critical | high | moderate | low |
| offline | boolean | 否 | 如果为 true,则跳过 OSV.dev 查询,仅解析清单文件。默认值:false。 |
详细介绍

osv-ui
一款精美、零配置的可视化 CVE 仪表板,适用于 npm、Python、Go、Rust、Java、PHP 和 Ruby 项目。
一条命令。无需注册。无需 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 密钥。 |
| 🏢 多服务 | 一条命令扫描整个 monorepo——前端、后端、工作进程、ML 服务 |
| 💊 修复指南 | Dependabot 风格的升级表:当前版本 → 安全版本 + 一键复制命令 |
| 🔌 内置 REST API | 使用 GET /api/data 或 CLI 导出选项,为你自己的安全仪表板提供数据 |
| 🎯 风险评分 | 为每项服务提供 0–100 的评分,让你知道该优先关注哪里 |
| 🔍 CVE 详情 | 点击任意一行——查看 CVSS 评分、描述、NVD 链接和 GitHub Advisory 链接 |
| 🌙 深色模式 | 无论白天还是夜晚,都能舒适地进行安全审计 |
快速开始
扫描当前目录:
npx osv-ui
扫描 monorepo(一次扫描多个服务):
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 Agent 集成(MCP)
osv-ui 现在是一个 Model Context Protocol (MCP) 服务。这使得 Claude Desktop、Cursor 和 Claude Code 等 AI Agent 可以:
- 扫描你的项目,自动查找 CVE。
- 打开可视化仪表板,供你查看发现的问题(人在回路)。
- 在你明确确认后应用修复。
快速设置(npx):
{
"mcpServers": {
"osv-ui": {
"command": "npx",
"args": ["-y", "osv-ui-mcp"]
}
}
}
详细设置说明请参阅 MCP Package 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 国家漏洞数据库
- 🐙 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 | ✅ | ❌ | ✅ | ✅ |
| 在一个视图中查看多个服务 | ✅ | ❌ | ✅ 付费 | ✅ |
| 无需注册 | ✅ | ✅ | ❌ | ❌ |
| 适用于 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 项目:先运行
npm install,以确保存在package-lock.json - 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 属性继承、锁文件边缘情况、工作区布局
- 实时仪表盘刷新 — 将监视模式的更新推送到已打开的浏览器标签页,无需重新加载
参与贡献
本项目由社区共同打造。欢迎各种技能水平的贡献者。
适合新手的 issue:
- 为解析器编写单元测试
- 改进 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
请阅读 CONTRIBUTING.md,了解代码风格和 PR 流程。
许可证
MIT — 使用、分叉、嵌入或基于它构建均可。欢迎注明出处,但并非必需。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。