Skip to content

Deploy to Cloudflare

The reference instance lives at seo-navigator-mcp.autumn-recipe-cac7.workers.dev. This page is for people who want to run their own copy.

  • Cloudflare account (free plan is fine for testing — D1 included)
  • Node.js 18+ on PATH
  • git on PATH
  • Wrangler CLI: npm install -g wrangler (or npx wrangler per-command)
Terminal window
git clone https://github.com/supportsn/seo-navigator-mcp
cd seo-navigator-mcp
npm install
npx wrangler login

wrangler login opens a browser, prompts you to authorize, then drops a token into your local config. After that everything happens via the CLI.

Terminal window
npx wrangler d1 create blog_mcp

Output includes a database_id. Paste it into wrangler.toml:

[[d1_databases]]
binding = "DB"
database_name = "blog_mcp"
database_id = "<paste-here>"

Then apply migrations:

Terminal window
npx wrangler d1 migrations apply blog_mcp --remote

The worker needs a master token (super-admin password) at minimum. Generate one:

Terminal window
$token = -join ((48..57) + (97..102) | Get-Random -Count 64 | ForEach-Object {[char]$_})
$token | npx wrangler secret put MASTER_TOKEN

Save the token in a password manager — you’ll need it to log into /admin.

Optional, only if you plan to use Duda or GitHub App or Cloudflare Pages:

Terminal window
# Duda — Team plan or higher only
echo "<duda_api_user>" | npx wrangler secret put DUDA_API_USER
echo "<duda_api_pass>" | npx wrangler secret put DUDA_API_PASS
# GitHub App (Phase J — required for markdown sync and Astro tools)
# See /claude/tokens/ for how to create the GitHub App.
echo "<app_id>" | npx wrangler secret put GITHUB_APP_ID
echo "<app_slug>" | npx wrangler secret put GITHUB_APP_SLUG
echo "<client_id>" | npx wrangler secret put GITHUB_APP_CLIENT_ID
echo "<client_secret>" | npx wrangler secret put GITHUB_APP_CLIENT_SECRET
Get-Content "<path-to-pem>" -Raw | npx wrangler secret put GITHUB_APP_PRIVATE_KEY
# Cloudflare Pages API (optional — enables check_astro_deploy tool)
echo "<cf_api_token>" | npx wrangler secret put CLOUDFLARE_API_TOKEN
echo "<cf_account_id>" | npx wrangler secret put CLOUDFLARE_ACCOUNT_ID
Terminal window
npx wrangler deploy

The CLI prints your worker URL, format https://seo-navigator-mcp.<account-subdomain>.workers.dev.

Open https://<your-worker>.workers.dev/admin/login, switch to the Master token tab, paste the value you just generated, and sign in.

From there:

  • Create your first user account at /admin/users (super-admin only)
  • Register your first WordPress / Duda / Astro site at /admin/sites
  • Mint a token for Claude Desktop at /admin/tokens
  • Wire Claude per Claude Desktop setup

Pull latest code from GitHub, then:

Terminal window
git pull
npm install
npx wrangler d1 migrations apply blog_mcp --remote
npx wrangler deploy

Migrations are idempotent — already-applied ones are skipped. Secrets persist across deploys.

Free tier limits as of 2026:

ResourceFree limitRealistic monthly usage
Worker requests100k/day~1k for solo, well under
D1 reads5M/day<10k for typical workflows
D1 writes100k/day<500 for typical workflows
Wall time10ms CPU per requestPlenty — most calls are <5ms

Effectively free for personal use. Paid plan ($5/month) only matters if you serve multiple agencies on one worker.