- URL
- Local
Bring your own hosting — Smithery Gateway proxies to your upstream server.
- Go to smithery.ai/new
- Enter your server’s public HTTPS URL
- Complete the publishing flow
Requirements
- Streamable HTTP transport
- OAuth support (if auth required)
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
Static Server Card (manual metadata)
Static Server Card (manual metadata)
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 Fields:
/.well-known/mcp/server-card.json:serverInfo(required): Server name and versionauthentication(optional): Auth requirements and supported schemestools,resources,prompts(optional): Capability definitions per MCP spec
@modelcontextprotocol/sdk/types.js. See SEP-1649 for the spec proposal.CLI (Advanced)
CLI (Advanced)
You can also publish a URL-based server via CLI with a custom config schema:To specify a config schema, pass it as a JSON string:See Session Configuration for JSON Schema format with
x-from extension.Troubleshooting
403 Forbidden during scan
If your deployment fails with “Initialization failed with status 403”, it means your server rejected Smithery’s scan request. Common causes:- WAF or bot protection (e.g. Cloudflare Bot Fight Mode) blocking automated requests
- Server returning 403 for unauthenticated requests instead of 401 — per the MCP auth spec, servers should return 401 to trigger OAuth discovery
- IP-based access restrictions or allowlists that don’t include Smithery’s IP range
SmitheryBot/1.0 (+https://smithery.ai). These requests originate from Cloudflare Workers, which some WAF configurations block by default.
Option 1: Ensure your server returns 401 (not 403) for OAuth
If your server requires OAuth, make sure it returns 401 Unauthorized (not 403 Forbidden) for unauthenticated requests. Smithery uses the 401 response to detect OAuth support per RFC 9728.Option 2: Whitelist Smithery requests
Cloudflare (Free plan / Bot Fight Mode)
Cloudflare (Free plan / Bot Fight Mode)
Bot Fight Mode on the free plan cannot be bypassed with WAF custom rules. Your options:
- IP Access Rules: Go to Security > WAF > Tools > IP Access Rules and add an Allow rule for Smithery’s IP range
- Disable Bot Fight Mode: Go to Security > Bots > Bot Fight Mode and toggle it off (this disables bot protection for all traffic)
- Upgrade to Pro: Pro plan ($20/mo) unlocks Super Bot Fight Mode with WAF skip rules (see below)
Cloudflare (Pro+ / Super Bot Fight Mode)
Cloudflare (Pro+ / Super Bot Fight Mode)
Create a WAF skip rule to bypass bot protection for Smithery:
- Go to Security > WAF > Custom Rules
- Create a rule with expression:
(http.user_agent contains "SmitheryBot") - Action: Skip > select Super Bot Fight Mode
Other CDN / WAF providers
Other CDN / WAF providers
Add an allow rule for requests matching User-Agent
SmitheryBot/1.0. The exact steps vary by provider — consult your CDN/WAF documentation for configuring User-Agent-based allow rules.Option 3: Publish a static server card
Bypass scanning entirely by serving a/.well-known/mcp/server-card.json endpoint on your server. See Static Server Card above.