关于 Sonatype Nexus
用于检查、审计和记录 Sonatype Nexus Repository 3.x 实例的 MCP 服务,默认只读,未启用时不会列出管理写入工具。它还可生成架构说明与 Markdown 文档,并检查声明状态和实际状态的差异。
主要功能
- 01检查仓库及相关配置清单
- 02生成架构说明和 Markdown 文档
- 03审计仓库内容并检查风险
- 04比较实时状态与声明状态
- 05发现实例 REST API 操作
- 06默认只读并支持敏感信息脱敏
适用场景
- 01盘点 Nexus 仓库与存储配置
- 02生成架构和仓库目录文档
- 03审计仓库内容或检查架构风险
- 04核对仓库配置是否发生漂移
MCP 相关
通过 stdio 或 Streamable HTTP 接受 MCP 客户端请求,并通过 REST API 访问 Nexus Repository 3.x。服务提供工具、资源和提示词;写入工具默认不启用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
docker run -i --rm -e NEXUS_URL -e NEXUS_USERNAME -e NEXUS_PASSWORD -e NEXUS_VERIFY_TLS -e NEXUS_MCP_MODE -e NEXUS_MCP_ENABLE_WRITE_TOOLS -e NEXUS_MCP_ENABLE_RAW_API ghcr.io/oomchiller/nexus-mcp-server:0.2.1NEXUS_URLNexus base URL, for example https://nexus.example.comNEXUS_USERNAMENexus user; a read-only account is recommendedNEXUS_PASSWORD密钥Password for NEXUS_USERNAMENEXUS_VERIFY_TLSVerify the Nexus TLS certificateNEXUS_MCP_MODEreadonly, audit or adminNEXUS_MCP_ENABLE_WRITE_TOOLSWith admin mode, list and allow repository deletion and task runsNEXUS_MCP_ENABLE_RAW_APIList the nexus_api_call tool for REST paths under /service/rest/本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
ghcr.io/oomchiller/nexus-mcp-server:0.2.1stdio工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Sonatype Nexus MCP 服务
一个 Model Context Protocol 服务,可让 AI 助手检查、审计和记录 Sonatype Nexus Repository Manager 3.x 实例。默认情况下为只读模式;只有启用管理工具后,这些工具才会显示。
flowchart LR
AI[MCP client] <-->|stdio / Streamable HTTP| Server[nexus-mcp-server]
Server <-->|REST API| Nexus[Nexus Repository 3.x]
功能
- 清点仓库、Blob 存储、任务、清理策略、路由规则、内容选择器、用户、角色和权限,范围取决于配置的账号可查看的内容。
- 关系图(仓库 → Blob 存储、群组 → 成员、仓库 → 清理策略、角色 → 权限)为架构说明、风险检查和生成的 Markdown 文档提供支持。
- 对单个仓库进行有界的完整内容审计,并提供完成情况证据。
- 根据声明的状态检查仓库是否存在偏差。
- 通过 OpenAPI 发现实例的 REST 操作。
- 每个工具均声明
readOnlyHint、destructiveHint、idempotentHint和openWorldHint;输出和日志会对配置的密码及看似机密的键进行脱敏。 - 无需配置即可启动,因此客户端和注册表可以列出其工具;调用时会报告缺少的配置。
已在生产环境中以只读模式用于 Nexus Pro 3.96.1-01;在 OSS 3.70 上进行了部分验证。请参阅 docs/COMPATIBILITY.md。
快速开始
此服务已列入 MCP Registry,名称为 io.github.oomchiller/nexus-mcp-server;支持注册表的客户端可以直接从中安装。手动设置:
容器
docker run --rm -i \
-e NEXUS_URL=https://nexus.example.com \
-e NEXUS_USERNAME=readonly-user \
-e NEXUS_PASSWORD \
ghcr.io/oomchiller/nexus-mcp-server:0.2.1
镜像提供 linux/amd64 和 linux/arm64 版本,以非特权用户身份通过 stdio 运行,且仅通过环境变量进行配置。发布摘要列于发布页面。
本地进程
{
"mcpServers": {
"nexus": {
"command": "uvx",
"args": ["--from", "git+https://github.com/oomchiller/[email protected]", "nexus-mcp-server"],
"env": {
"NEXUS_URL": "https://nexus.example.com",
"NEXUS_USERNAME": "readonly-user",
"NEXUS_PASSWORD": "change-me"
}
}
}
}
更多客户端示例(Claude Desktop、Codex CLI、Gemini CLI)见 examples/。
配置
设置来自环境变量或工作目录中的 .env 文件。
| 变量 | 默认值 | 含义 |
|---|---|---|
NEXUS_URL | 未设置 | Nexus 基础 URL。未设置时,服务仍会启动,但调用会报告 Nexus 尚未配置。 |
NEXUS_USERNAME / NEXUS_PASSWORD | 未设置 | 基本身份验证。请使用只读 Nexus 账户。 |
NEXUS_VERIFY_TLS | true | 验证 Nexus TLS 证书。 |
NEXUS_CA_BUNDLE | 未设置 | PEM 格式的 CA 证书文件,用于替代公共根证书;需要设置 NEXUS_VERIFY_TLS=true。 |
NEXUS_TIMEOUT_SECONDS | 30 | HTTP 超时。 |
NEXUS_ALLOWED_HOSTS | NEXUS_URL 的主机 | 客户端可以联系的主机,以逗号分隔。 |
NEXUS_LOG_LEVEL | INFO | 日志级别(标准错误)。 |
NEXUS_MCP_MODE | readonly | readonly、audit(与 readonly 使用相同的限制)或 admin。 |
NEXUS_MCP_ENABLE_WRITE_TOOLS | false | 与 admin 配合使用时,列出并允许写入工具。 |
NEXUS_MCP_ENABLE_RAW_API | false | 列出 nexus_api_call。 |
NEXUS_MCP_RAW_API_GET_ONLY | false | 将 nexus_api_call 限制为 GET。 |
NEXUS_MCP_MAX_RAW_RESPONSE_BYTES | 1048576 | 可接受的最大 Nexus 响应大小。 |
NEXUS_MCP_GRAPH_TTL_SECONDS | 60 | 图工具复用一次知识图谱构建结果的时长;0 表示每次调用都重新构建。 |
NEXUS_MCP_ENABLE_PROMPTS | true | 注册提示词。 |
NEXUS_MCP_ENABLE_RESOURCES | true | 注册资源。 |
尚未实现令牌身份验证。
服务不会读取 SSL_CERT_FILE 或系统信任存储。对于使用私有 CA 的 Nexus,请设置 NEXUS_CA_BUNDLE,而不要禁用验证。如果证书包不可读,或在禁用验证时设置了证书包,服务会在启动时停止。
对于并行运行多个实例且仅为工具名称添加前缀的网关(Docker MCP Gateway),应设置 NEXUS_MCP_ENABLE_PROMPTS=false 和 NEXUS_MCP_ENABLE_RESOURCES=false。
命令行
--transport {stdio,sse,streamable-http} default stdio
--host HOST / --port PORT HTTP bind, default 127.0.0.1:8000, no authentication
--nexus-url URL overrides NEXUS_URL
--nexus-username USERNAME overrides NEXUS_USERNAME
--verify-ssl / --no-verify-ssl overrides NEXUS_VERIFY_TLS
--ca-bundle PATH overrides NEXUS_CA_BUNDLE
请将 NEXUS_PASSWORD 保存在环境变量中,不要放在命令行上。
工具
| 分组 | 工具 |
|---|---|
| 说明 | nexus_understand_architecture、nexus_explain_repository、nexus_explain_storage_strategy |
| 清单和文档 | nexus_generate_inventory_json、nexus_generate_architecture_md、nexus_generate_repository_catalog_md、nexus_audit_repository_content |
| 审计 | nexus_detect_architecture_smells、nexus_generate_audit_report |
| 漂移 | nexus_compare_live_state_with_declared_state |
| OpenAPI | nexus_openapi_list_operations、nexus_generate_capability_map |
仅在启用时列出:
| 工具 | 要求 |
|---|---|
nexus_api_call | NEXUS_MCP_ENABLE_RAW_API=true;路径会规范化,并限制在 /service/rest/ 下。 |
nexus_delete_repository、nexus_run_task | NEXUS_MCP_MODE=admin 且 NEXUS_MCP_ENABLE_WRITE_TOOLS=true。 |
资源:nexus://instance/summary、nexus://repositories、
nexus://blobstores、nexus://tasks、nexus://cleanup-policies、
nexus://security/summary、nexus://architecture、nexus://knowledge_graph。
提示词:nexus_audit_prompt、nexus_iac_drift_prompt。
需要了解的限制:漂移比较仅检查仓库名称、格式和类型;风险检查仅覆盖少量图规则;发现结果的完整性取决于账户可访问的 REST API。因版本、版本类型或权限原因而缺少的可选端点会列为限制,而非故障。
安全
- 默认只读。除非启用,否则不会列出写入工具和原始 API;每次调用时仍会根据模式检查所有写入操作。
- 客户端只会联系
NEXUS_ALLOWED_HOSTS中的主机,且只访问相对于NEXUS_URL的路径。 - 脱敏是纵深防御措施,不能替代遵循最小权限原则的 Nexus 账户。请参阅 SECURITY.md。
开发
uv sync --locked
uv run pytest
uv run ruff check . && uv run ruff format --check .
uv run mypy src tests
请参阅 CONTRIBUTING.md、ARCHITECTURE.md、 DECISIONS.md 和 ROADMAP.md。
License
MIT; see LICENSE.
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。