关于 harbor-registry-mcp
harbor-registry-mcp 是面向 Harbor 2.x 的 MCP 服务,供 DevOps 人员通过 Agent 检查项目、镜像及存储,并规划和执行清理。它提供存储报告与清理候选项,批量删除默认先执行 dry-run。
主要功能
- 01查看项目、仓库和制品
- 02生成项目存储报告
- 03筛选清理候选制品
- 04删除单个或批量制品
- 05批量清理默认 dry-run
适用场景
- 01检查项目的镜像存储占用
- 02查找未标记或过期制品
- 03预览保留最新版本的清理操作
MCP 相关
该服务通过 stdio 向 MCP 客户端提供 Harbor 项目、仓库、制品查询及清理工具。删除工具标记为破坏性操作,批量删除默认 dry-run。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx harbor-registry-mcpHARBOR_URLHarbor URL (e.g. https://harbor.example.com)HARBOR_USERNAMEHarbor username (robot account recommended for automation)HARBOR_PASSWORD密钥Harbor password or robot account tokenHARBOR_SSL_VERIFYVerify SSL certificates (true/false). Set to 'false' for self-signed certs.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
harbor-registry-mcp
适用于 Harbor Registry 的 MCP 服务。让 LLM Agent(Claude Code、Cursor、OpenCode 等)列出项目、仓库和制品,生成存储报告、查找清理候选项,并删除未标记或较旧的制品——所有操作都带有安全保障(批量删除默认采用试运行模式)。
Python、FastMCP、stdio 传输。
适用于任何 Harbor 2.x 实例,无论是 SaaS 还是可自托管/本地部署。
为什么还要做另一个 Harbor MCP?
社区中已有一些 Harbor MCP(nomagicln/mcp-harbor、bupd/harbor-mcp-server),但它们只提供基本的列表/获取接口。本项目新增了存储报告、清理候选项、删除未标记制品,以及支持试运行的旧制品删除——这些正是 DevOps 工程师回收磁盘空间所需的操作。
设计亮点
- 工具注解——只读工具设有
readOnlyHint: True;有破坏性的工具(harbor_delete_*)带有destructiveHint: True,以便 MCP 客户端请求确认。 - 默认采用试运行模式——两种批量清理操作(
harbor_delete_untagged、harbor_delete_old_artifacts)都如此;Agent 必须传入dry_run=False才会执行。 - 结构化输出——每个工具都会返回类型化载荷(TypedDict)和 Markdown 摘要。
- 结构化错误——将 401/403/404/429/5xx 映射为可执行的提示。
- Pydantic 输入验证——验证每个参数。
- 漏洞快照——启用
with_scan_overview后,harbor_list_artifacts会显示扫描状态和数量。
功能(8 个工具)
发现与检查
harbor_list_projects— 列出项目,包含仓库数量和可见性harbor_list_repos— 列出项目中的仓库harbor_list_artifacts— 列出仓库中的制品,包含标签/大小/扫描状态harbor_storage_report— 完整的项目存储明细(所有仓库 × 所有制品)
清理规划
harbor_cleanup_candidates— 建议要删除的内容(未标记、从未拉取、旧版本)
清理执行(有破坏性)
harbor_delete_artifact— 按标签或摘要删除单个制品harbor_delete_untagged— 删除项目/仓库中的所有未标记制品(默认采用试运行模式)harbor_delete_old_artifacts— 每个仓库保留最新的 N 个制品,删除其余制品(默认采用试运行模式)
安装
需要 Python 3.10+。
# via uvx (recommended)
uvx --from harbor-registry-mcp harbor-registry-mcp
# or via pipx
pipx install harbor-registry-mcp
配置
claude mcp add harbor -s project \
--env HARBOR_URL=https://harbor.example.com \
--env HARBOR_USERNAME='robot$your-robot' \
--env HARBOR_PASSWORD=your-robot-token \
--env HARBOR_SSL_VERIFY=true \
-- uvx --from harbor-registry-mcp harbor-registry-mcp
或在 .mcp.json 中:
{
"mcpServers": {
"harbor": {
"type": "stdio",
"command": "uvx",
"args": ["--from", "harbor-registry-mcp", "harbor-registry-mcp"],
"env": {
"HARBOR_URL": "https://harbor.example.com",
"HARBOR_USERNAME": "robot$your-robot",
"HARBOR_PASSWORD": "${HARBOR_PASSWORD}",
"HARBOR_SSL_VERIFY": "true"
}
}
}
}
检查:
claude mcp list
# harbor: uvx --from harbor-registry-mcp harbor-registry-mcp - ✓ Connected
环境变量
| 变量 | 必需 | 描述 |
|---|---|---|
HARBOR_URL | 是 | Harbor URL(末尾不要加斜杠) |
HARBOR_USERNAME | 是 | Harbor 用户名——建议使用机器人账户 |
HARBOR_PASSWORD | 是 | 密码或机器人令牌 |
HARBOR_SSL_VERIFY | 否 | true/false。默认值:true。 |
使用示例
- “生成项目
einvy-pub的存储报告” - “查找
qa-assistant中的清理候选项——保留最新的 3 个” - “删除
qa-assistant中所有未标记的制品” - “试运行删除
qa-assistant/pgvector-rag中的旧制品,保留最新的 1 个” - “
einvy-pub/my-image中有什么?”
安全
- 读取工具使用
readOnlyHint: True——无需确认。 - 删除工具使用
destructiveHint: True——客户端应请求确认。 harbor_delete_untagged和harbor_delete_old_artifacts均默认使用dry_run=True;Agent 必须显式设置dry_run=False才会实际删除。harbor_cleanup_candidates是只读的——它只会建议候选项,不会删除任何内容。
开发
git clone https://github.com/mshegolev/harbor-registry-mcp.git
cd harbor-registry-mcp
pip install -e '.[dev]'
pytest
许可证
MIT © Mikhail Shchegolev
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。