Remote, with a key
Nothing to install. The key comes from your project’s Connect page, under Agents, and travels in the x-api-key header.
claude mcp add --transport http backenly https://backenly.com/api/mcp --header "x-api-key: <scoped-key>"Claude Code builds and runs a Backenly project over MCP: tables, row-level security, auth, storage and functions. One command connects it, and anything destructive waits for you.
Nothing to install. The key comes from your project’s Connect page, under Agents, and travels in the x-api-key header.
claude mcp add --transport http backenly https://backenly.com/api/mcp --header "x-api-key: <scoped-key>"No key in the command. Run /mcp, pick backenly and choose Authenticate. On backenly.com you pick the project, and Read-only access starts checked: clear it to let Claude Code make changes.
claude mcp add --transport http backenly https://backenly.com/api/mcpThe @backenly/mcp-server package, on Node.js 20 or later. It serves the same tools and results as the remote endpoint, and checks the project id against the key when it starts.
claude mcp add backenly -- npx -y @backenly/mcp-server --project <id> --key <scoped-key>To keep the key out of the command, run npx @backenly/mcp-server init once. It checks the key and saves it to ~/.backenly/mcp.json, readable only by you, and the command becomes claude mcp add backenly -- npx -y @backenly/mcp-server.
A server added mid-conversation is not in this conversation’s tool list, and retrying will not change that. Claude Code can call every Backenly tool from the shell instead, with the same key and the same approval rules.
npx -y @backenly/cli@latest link --project <id> --key <scoped-key>
npx -y @backenly/cli@latest call read_backend_state
npx -y @backenly/cli@latest chat "add a likes counter to posts"link checks the key belongs to the project, stores it in .backenly/config.json, and adds .backenly/ to .gitignore when the repository has one.
Run /exit, then claude --continue, or open a new tab in the VS Code extension. /mcp lists backenly once it is connected. Then ask for the backend’s state:
Call Backenly’s read_backend_state tool and tell me what exists in this project.The server sends them when the connection opens, and Claude Code adds them to the agent’s context: read the backend’s state before changing anything, say which project it is connected to, and never put the mcp_live_ key in app code.
fetch_docs returns Backenly’s agent guide in full: at most 40,000 characters, about 10,000 tokens, inside Claude Code’s default limit of 25,000 tokens on one tool result.
One command writes .claude/skills/backenly/SKILL.md from backenly.com/skill.md: which tool does what, the order that works, the error codes to branch on, and which key an app needs.
npx -y @backenly/cli@latest install-skill --agent claudeEvery key and browser sign-in is bound to one project, so a leaked credential reaches that project and nothing else. connect { action: "whoami" } tells Claude Code which one it is on.
A read-only key or sign-in sees 16 tools instead of 23, and a write called anyway is refused with READ_ONLY_KEY. A person chooses it, and Claude Code cannot upgrade its own key.
The runtime API your app calls refuses an MCP key with MCP_KEY_IN_APP. Claude Code creates the app’s own publishable key with connect { action: "create_api_key" }.
apply_migration refuses DROP with DESTRUCTIVE_REFUSED. Dropping a table, deploying, rolling back and revoking a key are parked on the project’s Autonomy page until a person approves them.
Anything else, ask the people who built it.
The remote URL with a key is the shortest, with nothing to install. The browser sign-in puts no key in the command and starts read-only. The local package needs Node.js 20 or later and serves the same tools and results as the remote endpoint.
Usually the server was added during the conversation: its tools arrive in the next one, and the CLI works until then. If /mcp lists backenly but calls fail, check the header. The key belongs in x-api-key; sent as Authorization: Bearer, it is read as a sign-in token and refused with INVALID_TOKEN. INVALID_KEY means the key was revoked or mistyped, so generate a new one on the Connect page.
No. Claude Code operates a Backenly project, on Backenly Cloud or your own self-hosted Backenly, and Backenly manages that project’s PostgreSQL schema. You can still connect to that database directly with a connection string, and export it with pg_dump.
Not on its own. apply_migration refuses DROP statements, and a request to drop or empty a table through backend_chat is parked until a person approves it on the Autonomy page. Row inserts, updates and deletes run as normal, and an update or delete needs a non-empty filter.
Yes, from the project’s History: restore that one change, or everything back to a point. History covers the schema, auth, storage, functions, webhooks, environment variables, keys and integrations, and each restore is checked before it runs. Data your app wrote since is never rewound, and a restore that would affect it waits for your approval. Claude Code can ask for a restore, but only you can approve one.
Yes. Use your instance’s /api/mcp as the remote URL, or add --endpoint with your instance’s address to the local command. Keys and projects come from your own dashboard.
One free project, no credit card. Connect it in one command.