mcpField
O
Osv Ui Mcp

Osv Ui Mcp

本地服务
github.com/toan203安全58 周前更新

关于 Osv Ui Mcp

osv-ui 扫描依赖清单并通过 OSV.dev 查询漏洞,在本地浏览器仪表板中展示结果。它面向需要审查项目依赖风险的开发者,只有明确确认后才会应用修复。

主要功能

  1. 01扫描七种生态系统的清单
  2. 02展示漏洞和风险评分
  3. 03提供升级建议与修复命令
  4. 04导出报告和 SBOM
  5. 05与基线扫描结果比较
  6. 06确认后再应用修复

适用场景

  1. 01审查单体仓库中的依赖漏洞
  2. 02生成 CI 报告并比较拉取请求扫描
  3. 03在可视化仪表板中检查结果

MCP 相关

osv-ui 也可作为 MCP 服务供 AI Agent 使用。它能扫描项目、打开仪表板供人工审查,并在明确确认后应用修复。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"osv-ui": {
"command": "npx",
"args": [
"-y",
"osv-ui-mcp"
]
}
}
}
启动命令npx -y osv-ui-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmosv-ui-mcp

工具

4

收录的工具列表 · 更新于 3 周前

参数类型必填说明
pathstring否项目目录的绝对路径或相对路径。默认为当前工作目录。
severity_filterenum否仅返回严重性达到或高于此级别的漏洞。默认值:全部。all | critical | high | moderate | low
offlineboolean否如果为 true,则跳过 OSV.dev 查询,仅解析清单文件。默认值:false。

详细介绍

osv-ui 仪表板

osv-ui

一款精美、零配置的可视化 CVE 仪表板,适用于 npm、Python、Go、Rust、Java、PHP 和 Ruby 项目。
一条命令。无需注册。无需 API 密钥。100% 在本地运行——你的代码绝不会离开你的机器。

npm version npm version (mcp) npm downloads License: MIT PRs Welcome Node.js

🇻🇳 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 可以:

  1. 扫描你的项目,自动查找 CVE。
  2. 打开可视化仪表板,供你查看发现的问题(人在回路)。
  3. 在你明确确认后应用修复。

快速设置(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 / JSpackage-lock.json · pnpm-lock.yaml · yarn.lock
Pythonrequirements.txt · Pipfile.lock · poetry.lock · pyproject.toml · uv.lock
Gogo.sum
RustCargo.lock
Javapom.xml(Maven)
PHPcomposer.json · composer.lock
RubyGemfile · 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 维护的免费开放数据库,汇总了:

每日更新。无需账号。没有速率限制。没有供应商锁定。


与 osv-scanner(Google)搭配使用效果出色

osv-ui 和 osv-scanner 使用相同的 OSV.dev 数据源。osv-ui 增加了 osv-scanner 所缺少的可视化层:

  • 使用浏览器仪表盘,而非终端输出
  • 多服务侧边栏
  • 类似 Dependabot 的升级指南,并附带可复制的命令

与其他方案的比较

osv-uinpm auditSnykDependabot
可视化仪表盘✅❌ 仅终端✅✅
支持 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 — 使用、分叉、嵌入或基于它构建均可。欢迎注明出处,但并非必需。


osv-ui 是否在你的项目中发现了真实的 CVE?
点个 ⭐,帮助其他开发者找到这个工具。

赞助此项目

在 Twitter 上分享 · 在 Reddit 上发布

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。