-
Notifications
You must be signed in to change notification settings - Fork 0
REST API
Base: https://ai.mcpharbor.dev/api/v0. Shaped like the official MCP Registry's API, so code written for one reads the other.
GET /api/v0/servers
| Parameter | Meaning |
|---|---|
q (or search) |
Matches names, titles, descriptions, tags and tool names |
transport |
stdio, streamable-http or sse
|
tag |
One tag. The website no longer browses by tag, but the API still filters by it. |
limit |
Page size, default 30, at most 100 |
offset |
Where to start |
GET /api/v0/servers/<name>
<name> is the full reverse-DNS name, slash included — io.github.upstash/context7. Returns the listing's server.json and its review status.
POST /api/v0/servers
Content-Type: application/json
{ ...a server.json... }
Without a token the listing is created pending and waits for review. With Authorization: Bearer <REGISTRY_PUBLISH_TOKEN> it is published immediately. Each client may submit 10 per hour. See Publishing a Server.
POST /api/v0/review
Authorization: Bearer <REGISTRY_PUBLISH_TOKEN>
{ "name": "io.github.acme/weather", "decision": "approve" }
decision is approve or reject. Locally, mix mcp.approve <name> does the same.
Unknown paths under /api answer 404 with a JSON body. They never redirect: an API client that follows a redirect into an HTML page gets a confusing parse error instead of a clear miss. Browser paths, by contrast, 301 to the home page.
MCP Harbor · MCP server changelog · Apache 2.0
Using it
How it works
Running it