Research guide · MCP discovery
How to make an MCP server discoverable
A working MCP endpoint can still be invisible to buyers. Discovery is a separate contract: publish machine-readable metadata, prove the namespace you own, register the server under one stable identity, keep versions current, and then distribute that canonical identity through directories where MCP users actually look.
Published 11 September 2026 · updated and sources checked 12 September 2026
1 identity
Keep one stable MCP server name across versions
2 auth paths
Custom domains can use DNS or HTTP verification
0 repeats
Do not resubmit a pending or already-correct listing
Discovery checklist
Seven steps from working server to discoverable server
1
Describe the outcome
Use a short description that says what the server actually lets an agent do. Discovery systems cannot select a useful tool from vague branding copy.
2
Publish a valid server.json
Keep the namespace, version, package identifiers, remote URLs and transport types aligned with the thing clients can actually install or call.
3
Prove namespace ownership
Use GitHub identity for the appropriate GitHub namespace, or the Registry's DNS/HTTP domain-authentication path for a custom-domain namespace.
4
Publish to the official Registry
Treat the official MCP Registry as the canonical public discovery record, then use compatible downstream catalogs as additional distribution rather than separate identities.
5
Verify the record by API
Search the Registry for the exact server name after publication. Do not treat a successful publisher message alone as proof that clients can discover the intended record.
6
Extend distribution once
Check relevant third-party MCP directories for an existing listing first. Submit through the directory's documented route only when absent, and record the pending/live state.
7
Probe the live server separately
Registry presence is discovery evidence, not runtime evidence. Test initialize, tools/list and the intended authorization or payment handoff independently.
The authoritative layer
The official MCP Registry is a discovery record, not a health check
The Model Context Protocol project describes its Registry as an open catalog and API for publicly available MCP servers. Publication revolves around a versioned server.json document and an ownership check for the chosen namespace. Servers can point at installable packages, remote transports, or both.
After publishing, verify the exact server name through the Registry API. That answers a narrow but important question: can a client discover the metadata you intended to publish? It does not answer whether the remote endpoint is reachable now, whether tools/list succeeds, or whether a paid tool will deliver the promised result.
Custom-domain authentication
You can publish an MCP server without GitHub OAuth
The current official mcp-publisher supports domain-based authentication for custom-domain namespaces. DNS authentication uses mcp-publisher login dns; HTTP authentication uses mcp-publisher login http. Both prove control of the namespace without making a GitHub identity the ownership anchor.
For DNS authentication, current Registry documentation says the v=MCPv1 TXT proof belongs on the apex of the domain — for example, example.com — not under selector-style names such as _mcp-auth.example.com or _mcp-registry.example.com. If a key is rotated, remove the stale proof record instead of leaving multiple old keys for the verifier to try.
For HTTP authentication, publish the public proof at https://example.com/.well-known/mcp-registry-auth. The Registry CLI currently supports Ed25519 and ECDSA P-384 signing, and the official documentation also describes Google KMS and Azure Key Vault signing paths. Keep the private key out of source control, logs and public documentation.
DNS proof
example.com. IN TXT "v=MCPv1; k=ed25519; p=PUBLIC_KEY"
mcp-publisher login dns --domain example.com --private-key "$MCP_PRIVATE_KEY"HTTP proof
GET https://example.com/.well-known/mcp-registry-auth
v=MCPv1; k=ed25519; p=PUBLIC_KEYDirectory distribution
Where to submit an MCP server after the canonical Registry record exists
Third-party MCP directories solve a different discovery problem from the official Registry. They add human search, categories, popularity views, compatibility notes and editorial context. That can put a server in front of buyers who would never query Registry APIs directly, but the downstream listing should still point back to the same server identity and live transport.
MCP.so is one current example. At the 12 September 2026 check, its long-running GitHub issue titled Submit Your MCP Servers here remained open and explicitly asked publishers to leave MCP server links for visibility on MCP.so. Treat a submission as pending distribution until the directory actually publishes it; a comment alone is not a visitor, installation or conversion.
Before submitting
Search the directory and its submission queue for the exact server name, domain and remote endpoint.
In the listing
Disclose affiliation, use the canonical MCP endpoint, describe concrete outcomes and avoid unsupported adoption claims.
After submitting
Record pending/live state and wait for maintainer action. Do not create duplicate entries merely to chase visibility.
Version drift
A server can stay online while its discovery record goes stale
A 2026 longitudinal study of the official MCP Registry reconstructed 120 observations over 88.6 days and found that descriptor changes were unevenly distributed. The practical implication for publishers is simple: do not assume a once-published record will keep describing a changing server. Bind registry publication to material descriptor or release changes, then verify the new record after publication.
What belongs in discovery metadata
- • one stable namespaced server identity;
- • a concrete outcome-oriented description;
- • the current semantic version;
- • package identifiers or the canonical remote URL;
- • the actual transport a client should use;
- • repository or ownership information where supported.
What should be verified at runtime
- • initialize/handshake succeeds;
- • tools/list returns the intended current tools;
- • input schemas match the public description;
- • authentication or payment challenges are expected;
- • tool execution returns the documented result;
- • browser CORS exists only if direct browser clients are intentionally supported.
Registry map
Use one canonical record, then extend distribution
| Surface | Useful for | Do not confuse it with |
|---|---|---|
| Official MCP Registry | Canonical public MCP server discovery metadata and versioned publication. | A live reliability, reputation or payment-delivery guarantee. |
| Google Cloud Agent Registry | Centralized discovery and management of MCP servers and tools inside Google Cloud environments. | A replacement for the public MCP Registry's publisher identity. |
| Third-party MCP directories | Additional reach, search UX, compatibility checks, curation and downstream discovery. | Proof that the listing is current, independently used or economically valuable. |
Minimal verification loop
Publish, read back, distribute once, probe, then wait for change
on release or material descriptor change:
validate server.json
authenticate the namespace through the supported path
publish new version through the authorized publisher
query registry by exact server name
require intended version/status in the read-back
probe live initialize + tools/list
update downstream listings only where materially stale
on a new directory opportunity:
search for existing server/domain/endpoint first
submit once through the documented route
record pending/live state
otherwise:
do not republish or resubmit merely to create activitySee a live machine surface
Inspect zFinia's MCP and machine-readable contracts
zFinia publishes a remote MCP endpoint alongside OpenAPI, an agent descriptor and x402 discovery metadata. Treat them as inspectable implementation surfaces, not as evidence of independent demand.
Sources
- Model Context Protocol — Registry publishing quickstart
- Model Context Protocol Registry — authentication guide
- Model Context Protocol Registry — publisher CLI reference
- Model Context Protocol Registry — GitHub Actions publishing guide
- MCP.so — public MCP server submission thread
- Google Cloud — register MCP servers in Agent Registry
- Bharti (2026) — Registry Descriptions Go Stale Unevenly