efficjump/my-nexus
GitHub: efficjump/my-nexus
一个自托管的 Nexus Repository 启动模板,整合包清单、SBOM、下载历史与漏洞数据,通过 MCP 服务器让 AI 助手完成资产盘点、漏洞影响分析和库审批。
Stars: 0 | Forks: 0
# my-nexus
`my-nexus` 是一个开源启动模板,用于将 Nexus Repository 作为内部包中心运行,并通过 AI 工具查询包的使用情况。
它包括:
- 通过 `nexusctl` 实现的 Nexus Repository 基础设施即代码配置。
- 一个集成的 Web 服务器,用于提供 dashboard、审批、API、scheduler 和 MCP HTTP 服务。
- 一个面向本地 AI 客户端的只读 stdio MCP 服务器。
- 用于 Nexus `request.log` 和 CycloneDX/SPDX SBOM 文件的收集器。
- 用于 Nexus、PostgreSQL 和集成服务器的 Docker Compose 示例。
## 为什么会有这个项目
Nexus 可以告诉你什么被存储和下载了。但它本身无法证明当前哪个生产系统正在运行存在漏洞的依赖项。本项目通过结合以下内容,补齐了缺失的资产盘点层:
- Nexus REST API 组件元数据。
- Nexus `request.log` 下载历史。
- 来自 CI/CD 的 SBOM。
- 来自 Kubernetes、VM 或发布 pipeline 的运行时部署清单。
- OSV/NVD 漏洞数据。
然后,MCP 服务器会公开安全、只读的工具,以便 AI 助手能够回答以下问题:
## 快速开始
安装依赖项:
```
pnpm install
```
构建:
```
pnpm build
```
验证示例配置:
```
pnpm dev:validate
```
创建初始资产清单文件:
```
node dist/nexusctl/main.js --config config/my-nexus.example.yaml init-data
```
运行集成 Web 服务器:
```
node dist/server/main.js --config config/my-nexus.example.yaml
```
打开 `http://127.0.0.1:8787`。
使用 stdio 从 MCP 客户端运行 MCP 服务器:
```
node dist/nexus-mcp/main.js --config config/my-nexus.example.yaml
```
## 主要命令
```
nexusctl validate --config config/my-nexus.example.yaml
nexusctl plan --config config/my-nexus.example.yaml
nexusctl apply --config config/my-nexus.example.yaml --dry-run
nexusctl sync-components --config config/my-nexus.example.yaml
my-nexus-log-collector --config config/my-nexus.example.yaml --file /path/to/request.log
my-nexus-sbom-ingestor --config config/my-nexus.example.yaml --file sbom.json --system billing-api --as-deployment
```
## MCP 工具
- `lookup_cve`:通过配置的漏洞源解析 CVE 或安全公告。
- `find_affected_components`:将 CVE 与索引的组件、SBOM、部署和下载记录进行匹配。
- `find_download_history`:搜索源自 Nexus request-log 的下载事件。
- `find_running_systems`:根据 purl 或 CVE 查找已部署的系统。
- `resolve_owner`:根据所有者引用或系统解析所有者元数据。
- `generate_impact_report`:生成 Markdown 格式的事件影响报告。
- `inventory_summary`:总结已索引的资产清单。
- `request_library_approval`:创建库审批请求。
- `decide_library_approval`:批准、拒绝或取消请求。
- `list_library_approvals`:列出请求及其当前状态。
- `get_library_history`:展示包的审批、下载、SBOM、部署和组件历史记录。
- `summarize_library_risk`:查询包已知的 OSV 漏洞。
## 配置
复制 `.env.example` 和 `config/my-nexus.example.yaml`,然后根据您的环境修改相应的值。密钥通过环境变量名引用,而不是直接存储在 YAML 中。
仓库名称、上游 URL、blob store 名称、端口和所有者默认设置均由配置驱动。
## 数据模型
该启动模板在 `dataDir` 下使用仅可追加的 JSONL 文件。这对于本地和小型团队部署是有意为之,因为它易于审计和检查。对于更大规模的部署,请保留 MCP 工具契约,并将 `FileInventoryStore` 替换为 PostgreSQL 或 OpenSearch。
主要记录类型:
- `component`
- `download`
- `sbom`
- `deployment`
- `owner`
- `library-approval-request`
- `library-approval-decision`
- `library-history-event`
包标识尽可能使用 Package URL (`purl`)。
## 安全态势
- MCP 工具默认是只读的。
- 可变操作(例如创建工单或隔离)应作为单独的工具添加,并需具有明确的授权。
- AI 助手应总结和关联证据,而不是捏造漏洞匹配。
- 所有包匹配均基于标准化的资产清单和 OSV/NVD 数据。
- 请将 MCP 访问限制在受信任的网络内,或置于经过身份验证的网关之后。
## 文档
- [架构](docs/architecture.md)
- [运维](docs/operations.md)
- [原生安装](docs/native-install.md)
- [Windows 安装](docs/windows-install.md)
- [MCP 客户端示例](examples/mcp-client.json)
标签:AI助手, DevSecOps, GPT, MITM代理, 上游代理, 制品仓库, 占用监测, 测试用例, 漏洞管理, 版权保护, 自动化攻击, 自动化集成, 资产管理, 软件物料清单(SBOM)