How to submit an MCP server to Docker MCP Catalog

By Jonah EasePublished Last checked

Docker's catalog is a Git repository. Your submission is a folder under servers/, opened as a pull request, and a member of the Docker team has to review every one[1]. What makes it a different job from a plain list entry is that the CI builds your server and tries to list its tools, so the pull request fails if your server cannot start without secrets[3].

Local or remote decides the folder

KindNeedsFiles in servers/your-name/
Local, containerizedA Dockerfile in your public repositoryserver.yaml
Remote, hostedA public endpoint on streamable-http or sse, and a documentation URLserver.yaml, tools.json (an empty array), readme.md in lower case

Read from CONTRIBUTING.md on [1]

A remote entry, the file CONTRIBUTING.md shows for a server without OAuth
name: cloudflare-docs
type: remote
meta:
  category: documentation
  tags:
    - documentation
    - cloudflare
    - remote
about:
  title: Cloudflare Docs
  description: Access the latest documentation on Cloudflare products
  icon: https://www.cloudflare.com/favicon.ico
remote:
  transport_type: sse
  url: https://docs.mcp.cloudflare.com/sse

Docker builds the image, or you do

By default Docker builds your image from the Dockerfile and publishes it in its mcp namespace on Docker Hub, with signatures, provenance and SBOMs. If you pass your own image, it is used as it is; it keeps container isolation but not those extras[1][2]. Check the licence before you start: MIT or Apache 2 are fine, GPL is not.

The pull request, in order

  1. Fork the repository and clone it. You need Go 1.24 or newer, Docker Desktop and Task.
  2. Generate the entry with task wizard or task create, run task build, then import the result into Docker Desktop's MCP Toolkit to try it.
  3. Open the pull request with a title and description that say what it adds, and make CI pass.
  4. If your server needs credentials, send test ones through the form CONTRIBUTING.md links.
The local route, as CONTRIBUTING.md writes it
task create -- --category database https://github.com/myorg/my-orgdb-mcp -e API_TOKEN=test
task build -- --tools my-orgdb-mcp
task catalog -- my-orgdb-mcp
docker mcp catalog import $PWD/catalogs/my-orgdb-mcp/catalog.yaml

After approval the entry is processed and appears in the catalog within 24 hours[1].

Why the build step stalls

The build starts your server and asks it for its tools. A server that needs a key or a third-party connection to answer will time out, and CONTRIBUTING.md calls this one of the most common reasons a pull request is blocked[1]. A reviewer posted this on a real submission[4]:

From docker/mcp-registry issue 179
2025/08/26 15:36:16 initializing mcp/meilisearch: context deadline exceeded
exit status 1
task: Failed to run task "build": exit status 1

The fix the maintainers added is a tools.json next to server.yaml that lists the tools by hand, so the build reads the file and does not run the server[1][4]. A second thread shows the other wait: an author asked after three weeks for a review, and the answer was to address the comments already on the pull request[5]. A third: a remote entry whose documentation file was named README.md was not picked up by the catalog generator until a pull request renamed it to readme.md[6].

By hand

  • Everything above is the by-hand route. The repository also has a prompt file, add_mcp_server.md, that you can pipe into Claude Code to write the entry[1].
  • To change or remove an entry later, you open an issue, not a pull request[2].
  • No Dockerfile? A hosted server takes the remote folder and goes through the same pull request.

Current status,

On , 1,454 pull requests and 77 issues were open. GitHub's search lists one merged pull request between 1 Sept and 1 Oct 2026, and it was a pin update, not a new server[7][8].

How long merges took

3 outside pull requests merged in the 90 days to : too few for a median. The merged pull requests are on GitHub.

Docker MCP CatalogRolling 30-day median time to merge
Docker MCP Catalog: rolling 30-day median time to mergedocker/mcp-registry, 2 Oct 2025 to 2 Oct 2026. The latest point, the 30 days to 31 July 2026, is a median of 7.2 days over 3 merges. Windows with fewer than 3 merges are left out. Days on a log scale.1 h1 day1 wk30 daysJan 2026Apr 2026July 2026Oct 20267.2 days
Docker MCP Catalog: rolling 30-day median time to merge, by the day the window ends. Windows with fewer than 3 merges are left out.
Window endingRolling medianMerges in window
10 Oct 20251.3 days39
17 Oct 20251.6 days25
24 Oct 20251.4 days11
31 Oct 2025under 1 h22
7 Nov 2025under 1 h34
14 Nov 20252 h37
21 Nov 20252 h37
28 Nov 20255 h30
5 Dec 202516 days12
12 Dec 202511 days6
19 Dec 20251.7 days6
26 Dec 20251 day5
2 Jan 20261.3 days4
9 Jan 202614 h6
16 Jan 202621 h3
23 Jan 202611 days4
30 Jan 20264.6 days6
6 Feb 20268.0 days3
13 Feb 20268.0 days3
20 Feb 202613 days6
27 Feb 202623 days4
6 Mar 202623 days4
13 Mar 202623 days4
10 Apr 202626 days4
17 Apr 202614 days5
24 Apr 202614 days5
1 May 202627 days6
8 May 202614 days3
10 July 20267.0 days4
17 July 202613 days3
31 July 20267.2 days3

Measured . Pull requests merged on each list's GitHub repo, timed from opened to merged, read from GitHub's REST pulls list. Bot accounts ([bot]), the repo's owners, members and collaborators, and pull requests from a branch inside the list's own repo are left out. A past figure, not a promise. All 10 directories side by side: how long MCP directories take to merge.

Sources

  1. docker/mcp-registry: CONTRIBUTING.md · checked
  2. docker/mcp-registry: README · checked
  3. docker/mcp-registry: CI workflow (Code and Server Validation) · checked
  4. docker/mcp-registry issue 179: a submission blocked on the tools build · checked
  5. docker/mcp-registry issue 178: a submission waiting for review · checked
  6. docker/mcp-registry pull request 4743: rename README.md to readme.md · checked
  7. docker/mcp-registry: open pull requests · checked
  8. docker/mcp-registry: pull requests merged 1 Sept to 1 Oct 2026 · checked

ManyCP is not affiliated with, endorsed by or sponsored by any directory, Docker, OpenAI, Anthropic or GitHub named here. Names are used to say which service a fact is about.

Or skip all of that

Or let ManyCP do it in one click

ManyCP forks docker/mcp-registry, adds your entry in the exact format, and opens the pull request from your GitHub account. It tracks the PR until it is merged.

Guides

More directories