Home · Guides

Popular servers: Spreadsheet · Server for Invoices — Generate Invoices from Claude · Expense Tracker — Log Expenses from Claude · Recurring Invoices · Word Document Server — Create .docx from Claude · Server for Bill of Sale — Draft and Sign from Claude · Zip · Job Card

Registry search sorts on your namespace, not your name

The official MCP registry's search= parameter matches the server name only, and returns matches in strict ASCII order on the whole namespace/local-name string. Your namespace is the first thing compared, so it decides your position before any word you chose for the server is looked at.

Here is the measurement. The same server, published under two namespaces on 2026-09-08:

Search tokencom.bestremotetools/...io.github.theluckystrike/...Servers matching
schedule31522
delivery21718

Same code, same description, same local name. Twelve places on one token and fifteen on the other, bought entirely by the two letters at the front of the namespace. Reproduce it:

curl -s 'https://registry.modelcontextprotocol.io/v0/servers?search=schedule&limit=100&version=latest' \
  | python3 -c 'import json,sys; [print(i,r["server"]["name"]) for i,r in enumerate(json.load(sys.stdin)["servers"],1)]'

How to prove the sort rather than assume it

An ordering claim is testable in one line: read the names back and compare them to their own sorted copy. On 2026-09-08 that returned True for every result set checked, including a 6,000-row full pagination of the whole registry.

names == sorted(names)   # True on schedule, delivery, and 6,000 paginated rows

Strict ASCII means uppercase sorts before lowercase, and digits before letters. It also means the comparison never reaches your local name until the namespaces are equal.

The same thing, read out of the registry's source

The behaviour is not an accident of the data. From internal/database/postgres.go in modelcontextprotocol/registry, read 2026-09-09, the match and the order are two separate lines:

conditions = append(conditions, fmt.Sprintf("server_name ILIKE $%d ESCAPE '\\'", argIndex))
...
ORDER BY server_name, version

Three facts follow, and each was checked against the live API on 2026-09-09.

What that implies for a namespace

Reversed-domain namespaces cluster by their first label. In a 6,000-row pagination on 2026-09-08 the first label distribution was ai 3,853, app 1,204, co 349, cloud 128, then a long tail. Sixty paginated calls of 100 rows each reached co.pipeboard/tiktok-ads-mcp and the cursor was still set, so the registry never got past the letter c.

So io.github.<user>, which is what the GitHub login flow grants and what most first-time publishers use, sorts after every ai., app., com., dev. and io.a through io.f namespace that matches the same token. On a token with more than about twenty matches, that is page two.

Getting a namespace that is not io.github

The registry derives your namespace from a domain you prove you control. Two methods are documented, and both were run from this project:

The HTTP method needs no DNS credential at all, which matters if the account holding your domain cannot mint a DNS-edit token. Serving that one static file from anything already attached to the domain is enough. The granted token then carries a permission on <reversed domain>/*, and everything you publish under it inherits the sort position of that namespace.

The trap in the row count

/v0/servers returns one row per published version, not one per server. The token schedule returns 63 rows and 22 servers. Add &version=latest to get one row per server. Any count you quote without that parameter is a version count wearing a server count's clothes.

What this does not buy you

Rank in a name-substring search is findability inside one directory, not demand. This project holds 85 active registry rows and the registry is the only channel that has demonstrably sent it humans: 9 of 22 unique visitors in fourteen days, measured in data/traffic.json. That is a real channel and a small one. Ranking third instead of fifteenth multiplies a small number.

The constraint that stops you testing this on a hosted server

The comparison above worked because that one server ships a bundle and a stdio package and no hosted endpoint. Trying to repeat it on a hosted server fails: the registry binds each remotes[].url to exactly one server name and refuses a second name pointing at the same URL. So for a hosted fleet there is no A/B test, only a migration. The rule, its source and the way around it are a page of their own.

Everything above was measured against the live API on 2026-09-08 from this repository, which publishes its own catalogue of MCP servers and used both login methods while working it out. The two rank rows were re-measured on 2026-09-09 and returned the same numbers: 3 against 15 of 22 servers on schedule, 2 against 17 of 18 on delivery. The full working, including the ranks the same servers took under six candidate namespaces, is in docs/NAMESPACE_R1.md.

Questions

Does the registry search descriptions or keywords?

Not through search=. It matches the name. A server whose description is a perfect answer to a query and whose name does not contain the token does not come back at all, which is why the local name still matters even though the namespace outranks it.

Can I change my namespace later?

You can publish under a new one, but the old rows do not move. Publishing the whole catalogue twice puts your own entries in competition with each other in the same sorted list, so the safer move is one server under the new namespace, measured against the old row for the same server.

Why is version=latest not the default?

The endpoint is a version log, not a catalogue. It is the right shape for a client resolving a specific version and the wrong shape for counting anything. One publisher in the sample had 739 version rows for a single server.

Is ASCII order the same as alphabetical?

Close but not identical. Uppercase letters sort before all lowercase ones and digits sort before both, so a namespace starting with a digit or a capital would sort ahead of every lowercase one. Nothing stops that, and nobody appears to be doing it.

How many servers does a token typically match?

It varies by two orders of magnitude. On 2026-09-08 delivery matched 18 servers and schedule 22, while invoice filled a page of 100 with the cursor still set. Check before you name anything: the count is one API call.

Related

All MCP servers and prices · All guides · Buy the bundle $39

Related guides: MCP protocol versions: what each one changed · Where to find MCP servers that cost money, and how you actually pay · What is actually in the MCP registry: 6,000 rows counted