# How to submit an MCP server to Docker MCP Catalog

By [Jonah Ease](https://manycp.com/about) Published 1 Oct 2026 Last checked 1 Oct 2026

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

| Kind | Needs | Files in servers/your-name/ |
| --- | --- | --- |
| Local, containerized | A Dockerfile in your public repository | `server.yaml` |
| Remote, hosted | A public endpoint on `streamable-http` or `sse`, and a documentation URL | `server.yaml`, `tools.json` (an empty array), `readme.md` in lower case |

Read from CONTRIBUTING.md on 1 Oct 2026 [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, 1 Oct 2026

On 2 Oct 2026, [1,454 pull requests](https://github.com/docker/mcp-registry/pulls?q=is%3Apr+is%3Aopen) and 77 issues were open. GitHub's search lists [one merged pull request](https://github.com/docker/mcp-registry/pulls?q=is%3Apr+is%3Amerged+merged%3A2026-09-01..2026-10-01) 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 2 Oct 2026: too few for a median. [The merged pull requests](https://github.com/docker/mcp-registry/pulls?q=is%3Apr+is%3Amerged) are on GitHub.

Docker MCP Catalog Rolling 30-day median time to merge

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 ending | Rolling median | Merges in window |
| --- | --- | --- |
| 10 Oct 2025 | 1.3 days | 39 |
| 17 Oct 2025 | 1.6 days | 25 |
| 24 Oct 2025 | 1.4 days | 11 |
| 31 Oct 2025 | under 1 h | 22 |
| 7 Nov 2025 | under 1 h | 34 |
| 14 Nov 2025 | 2 h | 37 |
| 21 Nov 2025 | 2 h | 37 |
| 28 Nov 2025 | 5 h | 30 |
| 5 Dec 2025 | 16 days | 12 |
| 12 Dec 2025 | 11 days | 6 |
| 19 Dec 2025 | 1.7 days | 6 |
| 26 Dec 2025 | 1 day | 5 |
| 2 Jan 2026 | 1.3 days | 4 |
| 9 Jan 2026 | 14 h | 6 |
| 16 Jan 2026 | 21 h | 3 |
| 23 Jan 2026 | 11 days | 4 |
| 30 Jan 2026 | 4.6 days | 6 |
| 6 Feb 2026 | 8.0 days | 3 |
| 13 Feb 2026 | 8.0 days | 3 |
| 20 Feb 2026 | 13 days | 6 |
| 27 Feb 2026 | 23 days | 4 |
| 6 Mar 2026 | 23 days | 4 |
| 13 Mar 2026 | 23 days | 4 |
| 10 Apr 2026 | 26 days | 4 |
| 17 Apr 2026 | 14 days | 5 |
| 24 Apr 2026 | 14 days | 5 |
| 1 May 2026 | 27 days | 6 |
| 8 May 2026 | 14 days | 3 |
| 10 July 2026 | 7.0 days | 4 |
| 17 July 2026 | 13 days | 3 |
| 31 July 2026 | 7.2 days | 3 |

Measured 2 Oct 2026. 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](https://manycp.com/guides/mcp-server-merge-times).

## Sources

1. [docker/mcp-registry: CONTRIBUTING.md](https://github.com/docker/mcp-registry/blob/main/CONTRIBUTING.md) · checked 1 Oct 2026
2. [docker/mcp-registry: README](https://github.com/docker/mcp-registry/blob/main/README.md) · checked 1 Oct 2026
3. [docker/mcp-registry: CI workflow (Code and Server Validation)](https://github.com/docker/mcp-registry/blob/main/.github/workflows/ci.yaml) · checked 1 Oct 2026
4. [docker/mcp-registry issue 179: a submission blocked on the tools build](https://github.com/docker/mcp-registry/issues/179) · checked 1 Oct 2026
5. [docker/mcp-registry issue 178: a submission waiting for review](https://github.com/docker/mcp-registry/issues/178) · checked 1 Oct 2026
6. [docker/mcp-registry pull request 4743: rename README.md to readme.md](https://github.com/docker/mcp-registry/pull/4743) · checked 1 Oct 2026
7. [docker/mcp-registry: open pull requests](https://github.com/docker/mcp-registry/pulls?q=is%3Apr+is%3Aopen) · checked 1 Oct 2026
8. [docker/mcp-registry: pull requests merged 1 Sept to 1 Oct 2026](https://github.com/docker/mcp-registry/pulls?q=is%3Apr+is%3Amerged+merged%3A2026-09-01..2026-10-01) · checked 1 Oct 2026

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.

---

Source: [ManyCP](https://manycp.com/directories/docker-mcp-catalog)
