The Faable MCP server connects Claude Code, Codex, Cursor and any MCP client to Faable Deploy: see your apps, read why a build failed, check traffic and domains, and ship — without pasting a single log into the chat.
claude mcp add --transport http faable https://mcp.faable.com/mcp \
--header "Authorization: Bearer <API_KEY>"Replace <API_KEY> with a key from the dashboard (project settings → API Keys). A key acts only on its own project. By default: every read, plus deploy.
https://mcp.faable.com/mcpRead the docsYour agent already has the code open. With the Faable MCP server it also sees the platform: it finds the deployment, reads the full failure reason and the end of the build log, and fixes the cause — no dashboard, no copy-paste.
The same goes for a crash after start (runtime logs), a domain that will not verify (DNS diagnostic), a build waiting on today's quota, or an environment variable the app expects and nobody set.
npm run build: Module not found: Can't resolve 'sharp'. It's imported in lib/images.ts but missing from dependencies. I've added it — push and the next build will pass.Every read and one deploy by default. Reversible writes only when the connection asks for them. Nothing destructive, ever — deleting stays in the CLI and the dashboard.
Find the app, see what is live, read why it broke.
whoamireadThe Faable account this server acts as, the active project and its Auth tenant. Use it first when unsure whether the user is logged in or which project is active.
list_projectsreadThe user's Faable projects. Apps, domains and Auth tenants live in a project; pass its id as project to the other tools.
list_appsreadThe apps of a project, with their live phase, URL and linked repository. Start here to find the app the user means.
get_appreadOne app: phase, URL, repository, deploy branch and mode, detected stack, and its newest deployment (which may have failed while an older one keeps serving). Use it to answer 'is my app up?' or 'what is deployed?'.
list_deploymentsreadRecent deployments of an app, newest first, with phase, commit and the first line of any failure reason. Use it to find the deployment behind 'my last deploy failed'.
get_deploymentreadEverything recorded about one deployment: phase, commit, detected stack, the runnable artifact and the FULL failure reason. Without deployment, the newest one of the app.
get_build_logsreadThe build output of a deployment — the first thing to read when a deploy failed and the user asks why. The cause is usually at the end. Without deployment, the newest one.
get_runtime_logsreadWhat the running app printed (last 24 hours, up to 200 lines). Use it when the app is up but misbehaving, or crashes after starting. A deployment retired more than a day ago has none — read its build logs instead.
get_app_trafficreadRequests the app served: status codes, busiest paths and failing paths. Trails reality by up to 15 minutes.
get_usagereadThis billing period's usage of a project: plan, apps, domains, deployments and egress.
get_quotareadToday's deploy allowance of a project and the builds held waiting for it. Use it when a deploy did not start: a held build is waiting, not failing.
list_domainsreadCustom domains of an app and whether their DNS is verified.
check_domainreadDNS diagnostic of one custom domain: the CNAME it expects, what DNS answers today, and why it is not verified yet.
list_secretsreadThe environment variables set on an app. Names only — values are masked and this tool can never reveal them. Use it to check whether a variable the app needs is set.
Build, retry and stop deployments — server-side, from Git.
deploy_appdeployBuild and deploy the latest commit of the app's deploy branch on Faable's servers — the same as a git push. Nothing is uploaded from this machine. Returns the deployment id; follow it with get_deployment and get_build_logs. Only for apps with push-to-deploy.
create_appmode=writeCreate an app from a GitHub repository in a project, link it and start its first deploy (the dashboard's Create & connect). Needs the Faable GitHub App installed on the repository; if the link fails, the new app is removed and the error says what to fix.
redeploymode=writeRebuild a failed deployment from the source it recorded. Without deployment, the newest failed one. Refused for code older than what production serves.
cancel_deploymentmode=writeStop a deployment that is still queued or building. Production keeps serving what it served. Without deployment, the one in flight.
Secrets, domains and how an app deploys.
set_secretsmode=writeAdd or update environment variables of an app. The app restarts to apply them when a value changed. Returns the names added, updated and unchanged — never the values.
add_domainmode=writeAttach a custom domain to an app. Returns the CNAME record the user must create at their DNS provider; Faable verifies it and issues the certificate on its own.
configure_repomode=writeChange the deploy branch, the monorepo root directory ("" clears it) or the deploy mode (push: every push; ci: once CI tags a release; workflow: the repo's own GitHub workflow). Applies to the next deploy.
Live catalog of @faable/faable 4.5.2 — also as tools.json and llms.txt.
An agent that can deploy is an agent that can be talked into things. The server is designed around that.
list_secrets returns names only. set_secrets sends values straight to Faable and answers with which names changed — never the values.
Build output, runtime logs, commit messages and failure reasons are written by whoever deployed the code. They come back explicitly marked as untrusted content.
No tool deletes apps, domains or secrets. Every call names its app and project — the server never deploys “whatever is in this folder”.
An API key acts only on the project it was created in. Revoke it in the dashboard and it stops working within 30 seconds. Locally, the server uses your own CLI session.
An MCP (Model Context Protocol) server that gives AI agents — Claude Code, Codex, Cursor, VS Code, Gemini CLI and any other MCP client — access to Faable Deploy. The agent can list your apps, read deployments, build and runtime logs, traffic, usage, domains and secret names, and deploy, without you leaving the editor.
Hosted (https://mcp.faable.com/mcp) needs nothing installed: any client that speaks Streamable HTTP connects with a Faable API key, which acts only on the project it belongs to. Local runs `npx -y @faable/faable mcp` over stdio on your machine and uses your `faable login` session, so it can reach every project you can — no key to create.
No. No tool deletes anything — apps, domains and secrets are deleted from the CLI or the dashboard. Secret values never reach the agent: it can list the names of environment variables and set new values, but it never reads one back.
No. deploy_app builds the latest commit of the app's deploy branch on Faable's servers — exactly what a git push does. Nothing is uploaded from your machine, and the server never guesses an app from your working directory.
Add ?mode=write to the hosted URL (or --writes locally) and the agent can also create an app from a GitHub repository, set environment variables, add a custom domain, retry a failed build, cancel a build in flight and change the deploy branch, root directory or deploy mode. All of them are reversible.
Logs, commit messages and failure reasons are written by whoever deployed the code, so the server returns them explicitly marked as untrusted data, never as instructions. Combined with no destructive tools and writes off by default, a hostile log line has very little to work with.
Create a Faable account, connect a repo, and hand the rest to the agent you already use. Hosted in the EU, free to start, no credit card required.