dock0
Guide for deploying and monetizing MCP servers on Dock0. Use when the user wants to deploy an MCP server, monetize an existing MCP server, set up per-call pricing, manage API keys, configure Claude Desktop or Cursor to use a Dock0 endpoint, manage wallet balance, view earnings, or use the dock0 CLI. Also use when the user mentions Dock0, dock0, or MCP server deployment/monetization.
Dock0 - Deploy & Monetize MCP Servers
Dock0 turns any MCP server into a paid, managed endpoint with built-in API keys, rate limiting, wallet billing, and author payouts.
Dashboard: https://app.dock0.dev MCP proxy: https://mcp.dock0.dev
Quick Start: Two Paths
Path 1 - Connect an existing server (fastest, no build)
Already running an MCP server? Paste the URL and get a paid proxy endpoint in seconds.
dock0 login
dock0 link --name my-tool --url https://your-server.com/mcp --price 0.01
This creates a proxy endpoint at https://<username>.mcp.dock0.dev/<slug>/mcp that wraps your server with auth, rate limiting, and per-call billing. No container build needed - the deployment is live immediately.
Or use the dashboard: https://app.dock0.dev/dashboard/new?mode=connect
Path 2 - Deploy from GitHub (full hosting)
Host your MCP server on Dock0's infrastructure (Fly.io). Supports TypeScript and Python runtimes.
dock0 login
dock0 github connect # Install the GitHub App on your repo
dock0 github repos # List connected repos
dock0 mcp add --repo owner/repo --project .
Or use the dashboard: https://app.dock0.dev/dashboard/new?mode=deploy
Hosted runtime shape:
dock0 mcp addexpects a stdio MCP runtime. Dock0's bridge handles HTTP and launches your process with command/args.- Build hosted MCPs as processes that read MCP messages from stdin and write responses to stdout. Do not expose your own Express/Fastify HTTP endpoint for the hosted path.
- If you already have an HTTP MCP server, keep it HTTP and use
dock0 link --url ...instead of converting it for hosted deployment.
Runtime detection:
- TypeScript:
package.jsonmust have@modelcontextprotocol/sdkas dependency - Python:
requirements.txtorpyproject.tomlmust containmcp
Setting a Price
Every deployment can charge per MCP call. Set via CLI or dashboard.
# During creation (connect mode)
dock0 link --name my-tool --url https://server.com/mcp --price 0.005
# After creation (any mode)
# Use the dashboard Settings tab: /dashboard/<slug>/settings
# Or PATCH the API:
curl -X PATCH https://app.dock0.dev/api/v1/deployments/<slug> \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"pricingEnabled": true, "pricePerCall": 0.005}'
Price is in USD per MCP call. Set to 0 or disable pricing for free endpoints.
API Keys
Every deployment is protected by API keys. Create keys for your users:
dock0 keys create <slug> --name "Production key"
# Output: mcp_live_abc123... (shown once - copy it)
dock0 keys list <slug>
dock0 keys disable <slug> <keyId>
dock0 keys enable <slug> <keyId>
For public deployments (visible in the directory), consumers create their own keys:
dock0 keys create-public <username>/<slug> --name "My key"
Configuring MCP Clients
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"<tool-name>": {
"url": "https://<username>.mcp.dock0.dev/<slug>/mcp",
"headers": {
"Authorization": "Bearer mcp_live_<your-key>"
}
}
}
}
Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"<tool-name>": {
"url": "https://<username>.mcp.dock0.dev/<slug>/mcp",
"headers": {
"Authorization": "Bearer mcp_live_<your-key>"
}
}
}
}
Claude Code
Add to .mcp.json in your project root or ~/.claude.json globally:
{
"mcpServers": {
"<tool-name>": {
"type": "url",
"url": "https://<username>.mcp.dock0.dev/<slug>/mcp",
"headers": {
"Authorization": "Bearer mcp_live_<your-key>"
}
}
}
}
Wallet & Billing (Consumer Side)
Consumers pre-fund a wallet. Each paid MCP call deducts from the wallet balance. No per-call Stripe fees.
dock0 wallet balance
dock0 wallet topup --amount 10 # Opens Stripe Checkout to add $10
dock0 wallet transactions # View spending history
If wallet balance is insufficient, the proxy returns HTTP 402.
Earnings & Payouts (Creator Side)
Creators earn 95% of each paid call (5% platform fee). Payouts via Stripe Connect.
dock0 earnings # View gross/net earnings
dock0 connect status # Check Stripe Connect status
dock0 connect onboard # Set up Stripe Connect for payouts
dock0 connect dashboard # Open Stripe Express dashboard
Environment Variables
For hosted deployments, manage runtime env vars:
dock0 env list <slug>
dock0 env set <slug> API_KEY sk-secret-value
dock0 env remove <slug> API_KEY
Setting an env var triggers automatic redeployment.
Deployment Lifecycle
dock0 status # List all deployments
dock0 redeploy <slug> # Rebuild and redeploy
dock0 start <slug> # Start a stopped deployment
dock0 stop <slug> # Stop a running deployment
dock0 delete <slug> --yes # Delete permanently
dock0 logs <slug> # View runtime logs
dock0 logs <slug> --build # View build logs
CLI Authentication
dock0 login # Browser-based device-code auth
dock0 logout # Revoke session
dock0 whoami # Show current user
Config stored at ~/.dock0/config.json.
Subscription Plans
dock0 subscribe --plan pro # Upgrade to Pro ($29/mo)
dock0 subscribe --plan team # Upgrade to Team ($99/mo)
dock0 portal # Manage subscription in Stripe
Common Workflows
Monetize an existing MCP server in 60 seconds
dock0 login
dock0 link --name weather-api --url https://my-server.com/mcp --price 0.01
dock0 keys create weather-api --name "Demo key"
# Share the endpoint + key with your users
Deploy from source and set up pricing
dock0 login
dock0 github connect
dock0 mcp add --repo myorg/my-mcp-server --project .
# Wait for build to complete
dock0 keys create my-mcp-server --name "Production"
# Enable pricing via dashboard Settings tab
Make a deployment public (appear in directory)
Use the dashboard Settings tab for the deployment and toggle "Public" on. Or:
curl -X PATCH https://app.dock0.dev/api/v1/deployments/<slug> \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"isPublic": true}'
Public deployments appear at https://app.dock0.dev/directory and allow consumers to create their own API keys.