Most directories ask for the same few things before the form opens: a licence, a Dockerfile, a description that fits. This is the list, in the order you meet them, with where each is explained. At the end is a free checker that shows which directories already list your repo. You can use all of it without ManyCP.
The checklist
- A public repo and a licence. Glama's source route needs a public GitHub repo with the real server code, not only docs[9]. Docker says MIT or Apache 2 are great for its catalog, and GPL is not[1]. Pick the licence before you submit anywhere.
- A README and a short description. Write one sentence of 100 characters or fewer that says what the server does. The official registry caps
description at 100 characters[2], and the table below has the other limits. - A registry entry. A
server.json that validates, and a new version number for each change: the registry says a version string must be unique for each publication, and a published version cannot be changed[3]. How to publish to the official MCP Registry. - A Dockerfile, if you run from source. On Glama, a server that runs from source needs one, and you add it on Glama itself[9]. Glama needs a Dockerfile.
- A public HTTPS endpoint, if the server is remote. Smithery publishes a server by its public URL, over Streamable HTTP[4]. If it needs sign-in, an unauthenticated request should get a 401 with a
WWW-Authenticate header, not a 403[5]. A server card at /.well-known/mcp/server-card.json is Smithery's way round a scan that fails[4]. Why Smithery's scan fails. - Tool annotations. Anthropic asks for a
title and a readOnlyHint or destructiveHint on every tool[6]. OpenAI asks for readOnlyHint, openWorldHint and destructiveHint[7]. They are part of the tool definition in the protocol[8]. Submit to ChatGPT and Claude. - A .mcp.json at the repo root, for cursor.directory. Its form scans a repo for that file and stops with "No plugin components found" when there is none[10]. cursor.directory.
- The same name and description everywhere. Write them once, shortest limit first, and paste the same text into every form. A listing that differs from directory to directory is also a listing you have to update in several places.
The length limits, side by side
These are the name and description boxes where the live form states a length. The shortest description limit here is 100 characters; a sentence that fits there fits every box in the table.
A box with no limit stated on its form is not in the table.
Check where you are listed
Paste a GitHub repo into the free checker. It looks for the repo in 10 directories, with no signup, and shows which ones already list it. Here is one filled in, for a public server: github/github-mcp-server. The result is live when you open it, so it can change.
The 10 directories it can verify are:
The other 16 have no public list the checker can read, so it cannot say whether you are in them. A form you submitted is still a form you submitted. Keep your own note of where you sent it.
After you launch
Listings drift. After a release, one directory can show the new version while another still shows the old one, and a rename reaches only the places you remember to change. Nothing tells you. The routine is short: each time you release, bump the version, publish it to the registry, run the checker, and look for directories that still show something older. Keep the name and description in one file so you paste the same text each time. The checker reads 10 of 26 directories; the rest you track yourself.
When you don't need ManyCP
- You have one server and a few directories. This list and the checker are the whole job, and both are free.
- You release rarely. A note in your release steps ("re-check the listings") does the same work.
- You want only the registry. Three commands publish it, and the guide above has them.
ManyCP helps when there are several servers, or when you release often and the listings have to follow. It costs $19 once per server, or from $9 a month[12]. Where a directory needs your sign-in, your identity or your card, only you can send it. For the whole field, see all 26 directories compared.