← Back to search

io.github.mshegolev/harbor-registry-mcp

mshegolev Scanned 14d ago

Harbor Registry MCP — projects, repos, artifacts, storage reports, cleanup (with dry-run).

B
75.7 / 100

Versions

0.1.0latest
first seen Jun 5, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 8

harbor_list_projects
annotations: none low

List Harbor projects, sorted by repository count (descending *within the page*). Use this first to discover which Harbor projects exist before drilling in with ``harbor_list_repos`` / ``harbor_list_artifacts``. Pagination: if ``has_more`` is ``True``, call again with ``page + 1``. Note that sorting is per-page — agents that need a global ranking should aggregate across pages. Returns: dict with keys ``projects_count`` / ``page`` / ``page_size`` / ``has_more`` / ``next_page`` / ``projects`` (list).

page string page_size string
harbor_list_repos
annotations: none low

List repositories in a Harbor project. Each repository is reported with artifact count and total pull count (useful for spotting unused repos before cleanup). Pagination: if ``has_more`` is ``True``, call again with ``page + 1``.

page string page_size string project_name string
harbor_list_artifacts
annotations: none low

List artifacts (tags) in a repository, newest first. Each artifact carries digest, size, push/pull timestamps, scan status and vulnerability counts (if scanned). Pagination: if ``has_more`` is ``True``, call again with ``page + 1``. For repositories with hundreds of artifacts prefer ``harbor_storage_report`` or ``harbor_cleanup_candidates`` which paginate internally.

page string page_size string project_name string repository_name string
harbor_storage_report
annotations: none low

Full storage breakdown for a Harbor project. Iterates every repository × every artifact and returns a sorted-by-size report — the canonical view for "what's eating up our quota?". Performs O(repos × artifacts) API calls; emits progress events through MCP Context.

ctx Context project_name string
harbor_cleanup_candidates
annotations: none low

Suggest which artifacts could be deleted to reclaim space. **READ-ONLY** — never deletes anything; just produces a list with reasons. Use ``harbor_delete_artifact`` / ``harbor_delete_untagged`` / ``harbor_delete_old_artifacts`` to act on the results. Reasons emitted: - ``untagged`` — artifact has no tags (orphaned layer) - ``never_pulled`` — artifact has never been pulled (and is past the ``keep_latest_per_repo`` cutoff) - ``old_version`` — artifact is older than the ``keep_latest_per_repo`` newest tagged artifacts

ctx Context project_name string include_untagged string include_zero_pulls string keep_latest_per_repo string
harbor_delete_artifact
annotations: none low

Delete a single artifact by tag or digest. **DESTRUCTIVE & IRREVERSIBLE** — Harbor immediately removes the manifest from its catalogue; the underlying blobs are reclaimed by the next GC sweep. There is no soft-delete or undo. Returns the freed space and tag list for confirmation.

reference string project_name string repository_name string
harbor_delete_untagged
annotations: none low

Delete all untagged artifacts in a project (or single repository). **DESTRUCTIVE.** ``dry_run=True`` is the default — nothing is deleted unless the agent explicitly passes ``dry_run=False``. In dry-run no delete request is issued at all; the response lists the candidates with ``deleted=None`` and the space they would free. Untagged artifacts are typically orphaned layers left behind after pushing a new tag of the same image — generally safe to delete. The full project sweep is opaque, so the response includes ``repos_scanned`` for visibility.

ctx Context dry_run string project_name string repository_name string
harbor_delete_old_artifacts
annotations: none low

Keep the N newest artifacts in a repository, delete the rest. **DESTRUCTIVE.** ``dry_run=True`` is the default — the agent must explicitly set ``dry_run=False`` to actually delete. Each entry in ``to_delete`` carries a ``deleted`` field (``True``/``False`` after real run, ``None`` in dry-run).

dry_run string keep_count string project_name string repository_name string

Permissions 3

network medium
Server uses network capabilities via: requests, urllib
filesystem low
Server uses filesystem capabilities via: os, pathlib
env_vars low
Server uses env_vars capabilities via: os.environ

Scan Findings 59

info
Required env vars (4) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
low
Tool 'harbor_list_projects' has no annotations annotation_checker · 100%
low
Tool 'harbor_list_repos' has no annotations annotation_checker · 100%
low
Tool 'harbor_list_artifacts' has no annotations annotation_checker · 100%
low
Tool 'harbor_storage_report' has no annotations annotation_checker · 100%
low
Tool 'harbor_cleanup_candidates' has no annotations annotation_checker · 100%
low
Tool 'harbor_delete_artifact' has no annotations annotation_checker · 100%
low
Tool 'harbor_delete_untagged' has no annotations annotation_checker · 100%
low
Tool 'harbor_delete_old_artifacts' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: mcp@1.2,<2 (GHSA-3qhf-m339-9g5v) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.2,<2 (GHSA-9h52-p55h-vw2f) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.2,<2 (GHSA-j975-95f5-7wqh) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.2,<2 (GHSA-jpw9-pfvf-9f58) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.2,<2 (GHSA-vj7q-gjh5-988w) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.2,<2 (PYSEC-2026-1616) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.2,<2 (PYSEC-2026-1617) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.2,<2 (PYSEC-2026-1618) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.2,<2 (PYSEC-2026-3482) dependency_analyzer · 95%
medium
Vulnerable dependency: mcp@1.2,<2 (PYSEC-2026-3483) dependency_analyzer · 95%
medium
Vulnerable dependency: requests@2.31 (GHSA-9hjg-9r4m-mvj7) dependency_analyzer · 95%
medium
Vulnerable dependency: requests@2.31 (GHSA-9wx4-h78v-vm56) dependency_analyzer · 95%
medium
Vulnerable dependency: requests@2.31 (GHSA-gc5v-m9x4-r6x2) dependency_analyzer · 95%
medium
Vulnerable dependency: requests@2.31 (PYSEC-2026-1872) dependency_analyzer · 95%
medium
Vulnerable dependency: requests@2.31 (PYSEC-2026-1873) dependency_analyzer · 95%
medium
Vulnerable dependency: requests@2.31 (PYSEC-2026-2275) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (GHSA-2xpw-w6gg-jr37) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (GHSA-34jh-p97f-mpxf) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (GHSA-38jv-5279-wg99) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (GHSA-g4mx-q9vg-27p4) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (GHSA-gm62-xv2j-4w53) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (GHSA-pq67-6m6q-mj2v) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (GHSA-qccp-gfcp-xxvc) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (GHSA-v845-jxx5-vc9f) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (PYSEC-2023-192) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (PYSEC-2023-212) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (PYSEC-2026-141) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (PYSEC-2026-1994) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (PYSEC-2026-1995) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (PYSEC-2026-1996) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (PYSEC-2026-1998) dependency_analyzer · 95%
medium
Vulnerable dependency: urllib3@2.0 (PYSEC-2026-1999) dependency_analyzer · 95%
medium
Vulnerable dependency: pydantic@2.0 (GHSA-mr82-8j83-vxmv) dependency_analyzer · 95%
medium
Vulnerable dependency: pydantic@2.0 (PYSEC-2026-1812) dependency_analyzer · 95%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: harbor_list_projects manifest_parser · 90%
info
Tool: harbor_list_repos manifest_parser · 90%
info
Tool: harbor_list_artifacts manifest_parser · 90%
info
Tool: harbor_storage_report manifest_parser · 90%
info
Tool: harbor_cleanup_candidates manifest_parser · 90%
info
Tool: harbor_delete_artifact manifest_parser · 90%
info
Tool: harbor_delete_untagged manifest_parser · 90%
info
Tool: harbor_delete_old_artifacts manifest_parser · 90%
medium
Permission: network access detected permission_analyzer · 90%
low
Permission: filesystem access detected permission_analyzer · 70%
low
Permission: env_vars access detected permission_analyzer · 90%
info
No dependency files found for SBOM generation sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%