How to Actually Get Your MCP Server Listed in the Claude Registry
If you've built an MCP (Model Context Protocol) server and tried to get it discoverable by Claude users, you've probably hit the same wall I did. The official docs tell you what MCP is, give you the protocol spec, maybe walk you through a basic server implementation — and then just... stop. There's almost no guidance on the publishing side. How do you structure your manifest? What metadata fields does the registry actually validate? Why does your server show up as "unverified" even after you've submitted everything correctly?
I spent two weeks debugging a submission that kept failing silently. No error messages, no rejection notice, just a server that never appeared in search results. The problem turned out to be a malformed capabilities block in my manifest — something that would have taken five minutes to fix if I'd known to look there.
What Most Developers Try First
The typical approach is piecing together information from GitHub issues, the Anthropic Discord, and whatever Medium posts exist from people who went through this six months ago when the process was different. You end up with a Frankenstein manifest that technically passes schema validation but fails on undocumented business rules. Some developers try reverse-engineering working registry entries by inspecting other MCP servers, which gets you partway there but misses the submission workflow entirely — things like how versioning works, what triggers a re-review, and how to handle capability deprecation without breaking existing integrations.
A Structured Path Through the Publishing Process
The core problem is that MCP registry publishing has three distinct phases that require different knowledge: manifest authoring, submission mechanics, and post-publish maintenance. Most resources conflate these or only cover one. A proper guide separates them and addresses the edge cases in each — for example, the difference between tools and resources capability declarations affects how Claude's UI surfaces your server to users, not just how it connects.
Manifest structure is where most submissions fail. The registry enforces constraints that aren't in the JSON schema — like requiring that your description field be under 280 characters for proper display in the discovery UI, or that inputSchema properties use specific JSON Schema draft versions. A working manifest template with inline comments explaining why each field exists (not just what it is) cuts debugging time significantly:
{
"name": "your-mcp-server",
"version": "1.0.0",
"capabilities": {
"tools": true,
"resources": false,
"prompts": false
},
"description": "Under 280 chars. Be specific about what tools you expose.",
"transport": ["stdio", "sse"],
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#"
}
}
The maintenance side matters too. Registry entries aren't static — when you push a new version, the review process restarts, and if your transport array changes, existing users' Claude Desktop configs may silently break. Understanding the version lifecycle, how to use the staging registry for testing before hitting production, and how capability flags map to what users actually see in Claude's interface makes the difference between a server people trust and one they remove after it behaves unexpectedly.
Quick Start
- Validate your transport layer first — confirm your server responds correctly to the MCP handshake before touching the registry; submit problems are often actually server problems
-
Use the staging registry endpoint (
registry-staging.anthropic.com) to test your manifest without affecting your production listing -
Pin your
$schemaversion ininputSchematodraft-07explicitly; the registry rejectsdraft-2020-12declarations even though they're valid JSON Schema -
Keep
capabilitiesflags accurate — settingprompts: truewhen you don't implement the prompts endpoint will cause Claude Desktop to error on connection -
Set up a
CHANGELOG.mdbefore first submission — the registry reviewer workflow checks for it as a signal of maintenance intent - Test with multiple Claude Desktop versions before publishing; capability negotiation behavior changed in Claude Desktop 0.7.x
Full toolkit at ShellSage AI
Top comments (0)