Skip to main content

Smithery

Smithery is a hosted gateway and registry for MCP servers. Once Clone's MCP HTTP endpoint is live at https://<your-domain>/mcp, you can publish the URL to Smithery and end users install it from any MCP-aware client (Claude Code, Cursor, Claude Desktop, etc.) without touching their local config.

Publish

npx -y @smithery/cli mcp publish "https://<your-domain>/mcp" -n <namespace>/clone

Smithery then scans the endpoint, generates a server page, and exposes the install flow. Each end user provides their own CLONE_API_TOKEN in Smithery's config UI, and that token is forwarded as Authorization: Bearer … on every upstream request — so one Clone MCP instance serves many users without holding a shared key.

Per-user token forwarding

The Clone MCP server in HTTP mode (MCP_TRANSPORT=http) is multi-tenant by design. apps/mcp/src/http.ts reads the bearer off each request's Authorization header (or the configured CLONE_API_TOKEN env as a fallback for single-tenant deployments) and forwards it upstream. nginx's /mcp location explicitly forwards both Authorization and mcp-session-id:

proxy_set_header Authorization $http_authorization;
proxy_set_header mcp-session-id $http_mcp_session_id;

Static MCP card

apps/web/public/.well-known/mcp/server-card.json is a static MCP server card that Smithery can scan without authentication, so the listing renders even when the upstream API is briefly down. Update it whenever you change the server's name, description, or tool list.

Verifying the publish

curl -sS https://<your-domain>/mcp/health # → 200 OK from the MCP server
curl -sS https://smithery.ai/api/mcp/<namespace>/clone # check Smithery has indexed it

If Smithery's listing shows tools but install fails for end users, the most common cause is that proxy_buffering is on for /mcp — Streamable HTTP requires it disabled for the long-poll connection.