Writing an MCP server is the easy part. Shipping one as a Claude connector means passing four gates that have nothing to do with your business logic: Anthropic's network can reach you, Claude can get an OAuth client identity, a human reviewer approves your tool design, and your server does not waste the user's context window.
Here is the checklist I wish I had had, in the order the failures actually happen.
Gate 1 — Can Anthropic's infrastructure reach you?
Claude connects from Anthropic's servers, not from your laptop. So the tests you run at your desk prove almost nothing. Run these from a network that is not yours:
# Every returned address must be globally routable.






