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, but the exact value depends on the surface and the request path. You may see "name": "claude-ai", "name": "Anthropic" (sometimes with a service suffix), or "name": "claude-code":
name or version string — both vary across surfaces, request paths, and releases. Use clientInfo for telemetry and coarse feature detection only, and remember it’s unauthenticated: any client can claim any name, so it must never feed an authorization decision.
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 your infrastructure logs show 403 Forbidden responses your application didn’t generate, your CDN or WAF is likely blocking Anthropic’s traffic. See firewall or WAF blocks Anthropic’s traffic for the fix.
For a structured walkthrough of “Couldn’t reach the MCP server” and “Authorization failed” errors, including DNS resolution checks, OAuth discovery diagnostics, and how to find the ofid_ reference ID to include in a support request, see troubleshooting connectors.