9d9

MCP server

Wire Claude Desktop, Cursor, or any MCP-aware assistant to manage your 9d9 site.

The 9d9 MCP server exposes your site's deploy controls as tool calls. The assistant can check status, roll back a deploy, attach a domain and keep the brand profile current — all from chat.

Changing the site itself means a new build: the assistant edits the source and runs npx @9d9dev/cli deploy ./dist (see the CLI). There's no CMS — every change is a deploy. Starting from nothing? Use the get-started prompt.

Setup

Pick your tool. Each snippet has a copy button — paste it where indicated, restart the tool, and ask: "Is my 9d9 site live?"

Run this once in your terminal — Claude Code writes the config for you:

claude mcp add 9d9 -- npx -y @9d9dev/mcp

Restart Claude Code (or open a new session). /mcp in Claude Code shows the connected servers.

Not listed? Any client that speaks MCP can run npx -y @9d9dev/mcp as a stdio server.

The server ships a playbook via MCP's instructions field, so connected assistants get orchestration patterns (build a site, update text, attach a domain, rollback) in their system prompt automatically — no per-client setup.

First-time auth

The MCP server reads .9d9.json from the current working directory (walking up to find it) — the same file the CLI uses. Easiest setup: cd into the project, then 9d9 set-key ak_xxx --org=org_xxx. After that the MCP server picks it up automatically as long as it's launched from inside that repo.

Each repo gets its own binding, so switching sites means switching directories — no global config to leak across projects.

If you can't run a shell command (sandboxed assistants), call the save_api_key tool directly with the key + org_id.

Tools

Deploys

  • list_deploys(org_id) — recent deploys with status, file count, timestamps.
  • activate_deploy(org_id, deploy_id) — rollback to a previous deploy.

Site config

  • attach_domain(org_id, domain, mode) — BYO returns DNS instructions; buy registers through 9d9.
  • get_status(org_id) — site metadata, brand profile, and whether it's been claimed.
  • update_brand(org_id, brand) — partial-merge update to the brand profile.
  • save_api_key(key, org_id) — write auth to .9d9.json in the server's working directory.

Example session

You: The new homepage photo looks wrong on phones — put yesterday's version back.

The assistant calls list_deploys, finds yesterday's deploy, and calls activate_deploy with its id. The previous version is live on every edge within seconds; then it fixes the photo in the source and redeploys with the CLI.