harbor-mcp
MCP server for the Harbor hub that exposes evaluation jobs, trials, uploads, and published packages as tools for AI agents.
README
harbor-mcp
An MCP server for the Harbor hub. It exposes your evaluation jobs, trials, uploads, and published packages as tools an agent (Claude Code, etc.) can call directly, so you can ask "did my upload work?" or "what was the mean reward on job X?" without leaving the chat.
It wraps Harbor's own async client classes (HubClient, UploadDB, RegistryDB, Uploader, Downloader, Publisher), so there is no separate API layer to maintain. Harbor reads HARBOR_API_KEY and handles token exchange itself.
Setup
uv sync
cp .env.example .env # then set HARBOR_API_KEY
Mint a key with harbor auth login (it stores one in ~/.harbor/credentials.json) and put it in .env:
HARBOR_API_KEY=sk-harbor-...
The repo ships a .mcp.json that Claude Code auto-discovers when started from this directory. It sources .env before launching, so your key never lives in the config. Verify the connection by asking the agent to call whoami.
Tools
Read tools work with any valid HARBOR_API_KEY. Write tools are gated (see below).
| Tool | What it does |
|---|---|
whoami |
Confirm credentials; returns the user id and key source (never the key) |
list_jobs |
List your hub jobs with trial counts, cost, and reward |
get_job_overview |
Roll up one job: counts, retries, tokens, cost, reward, models |
get_job_trials |
List a job's trials (task, status, reward, error, duration) |
get_trial_detail |
One trial's full record |
check_job_upload |
Verify an upload: row exists, archive present, per-status counts, missing archives |
check_task_published |
Whether a task version exists in the registry (missing → published: false) |
resolve_dataset |
Resolve a dataset version and list its member tasks |
upload_job |
Upload a local job directory (idempotent, resumable) |
publish_task / publish_dataset |
Publish a local task/dataset to the registry |
download_job |
Download and extract a job's archive locally |
set_job_visibility |
Flip a job public/private |
share_job |
Grant read access to orgs/users |
delete_job |
Delete a job's rows (permanent; requires confirm) |
Write gating
Every write tool refuses unless HARBOR_MCP_ENABLE_WRITES=true in the server environment. delete_job additionally requires confirm=true per call, which the agent should pass only after you explicitly approve deleting a specific job. This keeps read-only use the safe default.
Testing
| Tier | Command | Needs | Uses an LLM? |
|---|---|---|---|
| unit | make test |
nothing (harbor clients mocked) | no |
| integration | make test-integration |
HARBOR_API_KEY |
no (tools driven directly over MCP stdio) |
| e2e | make test-e2e |
HARBOR_API_KEY + HARBOR_TEST_ENV |
no (oracle agent runs solve.sh) |
| evals | make evals |
HARBOR_API_KEY + ANTHROPIC_API_KEY + EVAL_* |
yes (agent rollouts) |
HARBOR_TEST_ENV selects where harbor runs the fixture job: docker (default) or modal. Modal needs its own credentials (modal token new) and the modal extra (uv sync --dev --extra modal), which pulls in harbor's modal support; the base install omits it. The integration and e2e tiers are deterministic (no agent decisions), so they gate PRs without spending on model calls; the evals/ agent rollouts run separately once tool use is proven at the lower tiers.
The harbor dependency is pinned exactly because this server imports Harbor internals, which are not a stable public API. Bump it deliberately.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.