Test your server against the real Claude client before submitting. There is no separate staging environment—you test in production using a custom connector.Documentation Index
Fetch the complete documentation index at: https://claude.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Test as a custom connector
Any Claude account (Free, Pro, Max, Team, or Enterprise) can add a custom connector. Go to Settings > Connectors > Add custom connector and enter your server’s URL. Custom connectors use the exact same runtime as directory connectors, so what works here will work after publication.Test a local server
To test a server running on your machine, expose it as a public URL with a tunnel such as Cloudflare Tunnel orngrok, then add the tunnel URL as a custom connector. This is the recommended pattern for iterating on MCP Apps as well.
Validate with MCP Inspector
Use the MCP Inspector to verify protocol compliance, exercise your auth flow, and inspect tool schemas before connecting to Claude.Detect Claude as the client
Claude identifies itself in the MCPinitialize handshake via clientInfo. The hosted surfaces (Claude.ai web, Desktop, mobile, Cowork) send "name": "claude-ai"; Claude Code sends "name": "claude-code":
name and version values may change over time, so don’t gate behavior on an exact string match. Note that clientInfo is unauthenticated—any client can claim any name. Use it for telemetry or feature detection, not for authorization decisions.
Prepare test credentials for review
Directory submission requires test credentials. Provide a fully populated account—not an empty shell—so reviewers can exercise real functionality (list real records, search real data, exercise write tools on real resources). Include step-by-step setup instructions for someone unfamiliar with your service.Debugging
Partner-visible error logs are in development. In the meantime, use server-side logging on your end and the MCP Inspector to diagnose connection failures. Common causes ofinitialize timeouts include slow OAuth metadata endpoints (keep these under five seconds), overly strict Origin-header validation rejecting Anthropic’s requests, and firewalls dropping Anthropic’s egress traffic.
If Claude surfaces authentication or tool-invocation errors and your infrastructure logs show 403 Forbidden responses that your application didn’t generate, your CDN or web application firewall (WAF) is likely blocking Anthropic’s traffic before it reaches your server. Allowlist Anthropic’s egress range (160.79.104.0/21) in your WAF or CDN configuration—see the IP address reference.