Skip to main content
Publish your MCP server to Smithery Gateway for distribution, analytics, and OAuth UI.
Bring your own hosting — Smithery Gateway proxies to your upstream server.
  1. Go to smithery.ai/new
  2. Enter your server’s public HTTPS URL
  3. Complete the publishing flow

Requirements

  • Streamable HTTP transport
  • OAuth support (if auth required)
No client registration needed. Smithery handles client registration automatically via Client ID Metadata Documents.

Server Scanning

Smithery scans your server to extract metadata (tools, prompts, resources) for your server page.
  • Public servers: Scan completes automatically
  • Auth-required servers: You’ll be prompted to authenticate so we can complete the scan
If automatic scanning can’t complete (auth wall, required configuration, or other issues), you can provide server metadata manually via a static server card at /.well-known/mcp/server-card.json:
{
  "serverInfo": {
    "name": "Your Server Name",
    "version": "1.0.0"
  },
  "authentication": {
    "required": true,
    "schemes": ["oauth2"]
  },
  "tools": [
    {
      "name": "search",
      "description": "Search for information",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": { "type": "string" }
        },
        "required": ["query"]
      }
    }
  ],
  "resources": [],
  "prompts": []
}
Fields:
  • serverInfo (required): Server name and version
  • authentication (optional): Auth requirements and supported schemes
  • tools, resources, prompts (optional): Capability definitions per MCP spec
The schema follows types from @modelcontextprotocol/sdk/types.js. See SEP-1649 for the spec proposal.
You can also publish a URL-based server via CLI with a custom config schema:
npx @smithery/cli deploy --name @your-org/your-server --url https://your-server.com/mcp
To specify a config schema, pass it as a JSON string:
npx @smithery/cli deploy --name @your-org/your-server --url https://your-server.com/mcp --config-schema '{"type":"object","properties":{"apiKey":{"type":"string"}}}'
See Session Configuration for JSON Schema format with x-from extension.