Docs/Candor Deploy
Deploy from Claude: connect the Candor MCP
Connect Claude to Candor Deploy so you can say 'deploy this to Candor' and it happens — sign in once from Claude Code, claude.ai, Claude Desktop or ChatGPT; no token to copy.
Candor Deploy runs an MCP server, so you can tell Claude to deploy an app and it does — detects the stack, provisions any databases, and hands back the live URL. This page connects Claude to your Candor account.
The server is at https://api.candorhost.app/mcp. Connecting is a sign-in: your
client sends you to Candor, you sign in the same way you do for the portal,
pick the project the assistant may deploy to, and approve. Nothing to copy.
Not Claude? The same server works from Codex, OpenCode and Pi.
Claude Code
claude mcp add --transport http candor https://api.candorhost.app/mcp
Then, inside Claude Code, run /mcp, choose candor, and pick
Authenticate. A browser window opens for the sign-in; approve, and Claude
Code reports the server as connected. Ask it to deploy this repo to Candor.
Running Claude Code on a remote machine (over SSH, in a devcontainer, on a
server)? After you approve, the browser is sent to http://localhost:PORT/callback
— that’s Claude Code’s own listener, on the remote machine, so your local
browser shows “can’t connect to the server”. That’s expected, and Claude Code
is waiting for it: copy the full URL from the address bar and paste it at the
URL > prompt in the terminal. It finishes the sign-in from there. The code in
that URL is valid for five minutes; if it has expired, run /mcp → Authenticate
again.
To share the connection with a repo, commit a .mcp.json at the project root
— each person who opens it signs in for themselves:
{
"mcpServers": {
"candor": {
"type": "http",
"url": "https://api.candorhost.app/mcp"
}
}
}
claude.ai and Claude Desktop
Both add remote servers through Settings → Connectors → Add custom
connector. Name it Candor, set the URL to https://api.candorhost.app/mcp,
and click Connect — you’re sent to the Candor sign-in, approve, and the
Candor tools appear in the chat. Claude Desktop shares the connector with
claude.ai, so you only add it once.
ChatGPT
Settings → Connectors → Create (developer mode). Same URL, same sign-in.
Using a token instead
If you’d rather not go through a browser — CI, a headless box — an API token works too. In the portal, open Account → API tokens → Create token (or a project’s own tokens page for a token confined to that project). Copy it; it’s shown once. Then:
claude mcp add --transport http candor https://api.candorhost.app/mcp --header "Authorization: Bearer YOUR_TOKEN"
In a shared .mcp.json, reference it from the environment so the token never
lands in the file:
{
"mcpServers": {
"candor": {
"type": "http",
"url": "https://api.candorhost.app/mcp",
"headers": { "Authorization": "Bearer ${CANDOR_TOKEN}" }
}
}
}
What you can ask
Once connected, Claude has these tools:
- Deploy a repo — “deploy github.com/me/myapp to Candor.” Candor detects the stack, provisions databases it finds, and deploys. Push your latest commit first; Candor builds from your git remote.
- Create a service in a project, and set or list its environment
variables — “set
DATABASE_URLon the api service” — then redeploy so they apply. - Check a deploy — “is my Candor deploy live yet?” — the phase, and the build logs if it failed.
- List what you’ve deployed — your projects, services, and their URLs — and who you are: the account and plan limits the connection acts under.
If Candor can’t work out how to start a service, Claude will ask you for the start command rather than deploy something that won’t come up.
What the connection can do, and revoking it
Approving a connector gives that client developer access to one project — the one you picked. It can deploy, configure and read logs there; it can’t touch your other projects, your organization’s members, or billing. Behind the scenes it holds a project API token, listed with that project’s tokens in the portal. Lost a laptop, or done with an integration? Revoke that token and the connection stops working immediately.
A pasted token acts as whatever it was minted for: a project token as a developer on that project, an account or organization token as you. We store only a hash of it, never the token itself.
Something here wrong, unclear, or missing? Tell us — docs get fixed like bugs.