mcpbeat Sign in

Plinth MCP Server

by tryplinth Your server? Claim it
answering

Plinth is answering right now. Last checked 12 min ago. It exposes 72 tools.

App hosting your agent runs: git, deploys, staging/production, Postgres. Owner approves risky steps.

Uptime history 24 hours of history
24 hours agonow
100.0%
Uptime 24h
88 of 88 checks
72
Tools
read from the server
162 ms
Response time
average over 24h
open, no key
Access
streamable-http

Nothing serious here today

Today is the operative word: we check Plinth every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 12 min ago.

run in your terminal
claude mcp add plinth --transport http https://tryplinth.dev/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "plinth": {
      "url": "https://tryplinth.dev/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.plinth]
url = "https://tryplinth.dev/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "plinth": {
      "url": "https://tryplinth.dev/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "plinth": {
      "url": "https://tryplinth.dev/mcp"
    }
  }
}

Available tools 72

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

env
env.exec
Production needs owner approval. Run a shell command inside the environment's running sandbox (same code, env vars, network and limits as the app), e.g. "node -e '...'", "ls", "env | sort". 30s timeout, 20 KB of output. Code is read-only; /tmp is writable. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.
env.list
Environments for a project with live release and URL.
env.restart
Restart an environment on its current release (fresh sandbox, same code and data).
env.secrets.import
Set many environment variables at once from .env text (KEY=value lines; # comments, quotes and "export" are fine). One restart at the end. Keys starting with VITE_/NEXT_PUBLIC_/PUBLIC_ also reach the build.
env.secrets.list
List environment variable names (values are never returned).
env.secrets.set
Set an environment variable for an environment. Restarts the env so it takes effect.
env.secrets.unset
Remove an environment variable.
env.status
Debug an environment: is it running, restarts, out-of-memory kills, memory/CPU use, live release, and the last errors from its logs.
cron
cron.add
Schedule a job: Plinth POSTs to path on the environment at each tick (5-field cron, UTC), with the header x-plinth-cron-secret. Paths under /api/cron/ refuse any other caller. Outside production jobs start paused unless enabled is true. Jobs can also be declared in plinth.json "crons".
cron.list
Cron jobs on an environment with last run and next run.
cron.pause
Pause a cron job (it stays defined but does not run).
cron.remove
Delete a cron job.
cron.resume
Resume a paused cron job.
cron.run
Run a cron job now and return its result.
cron.runs
Recent runs of a cron job.
domains
domains.buy
Buy a domain and connect it to an environment: registers it, points DNS at Plinth, issues HTTPS. Always shows the owner the exact price first. Standard registrations only. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.
domains.connect
Map a domain you own to an environment. Point its DNS at the Plinth host; returns the record to create.
domains.list
Domains mapped to a project.
domains.orders
Domains bought through Plinth on this account, with price, status and expiry.
domains.remove
Unmap a domain.
domains.search
Check if domains can be bought here, with price. Pass a name ("acme" checks acme.com, .dev, .app, .io, .co, .net, .ai, .org) or a full domain.
domains.verify
Check the TXT record of a connected domain; once it matches, the domain is served.
project
project.create
Create a project: a git repo plus production and staging environments, each with its own Postgres database. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.
project.delete
Delete a project, its repo, environments and databases. Irreversible. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.
project.downgrade
Move a project back to the free plan. Its custom domains stop being served. The subscription shrinks with a prorated credit.
project.get
Show one project: git remote, environments, live release per environment, URLs.
project.list
List projects with their environments, live releases and URLs.
project.upgrade
Move a project to Pro ($19/month per project): own domains and more room. Charges the owner's card now (prorated) after they approve. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.
git
git.branches
Branches and their head commits.
git.log
Recent commits on a branch.
git.remote
Get the authenticated git remote URL for pushing. Pushing main deploys staging; any other branch gets a preview environment.
git.revert
Revert a commit on a branch server-side. The new commit deploys like a push.
webhooks
webhooks.add
Send Plinth events to a URL (your bot, Slack, Discord, Telegram, Zapier...). Events: deploy.succeeded, deploy.failed, approval.requested, approval.decided, app.down, app.up, support.created, support.replied, charge.succeeded, signup.approved. Leave events empty for all. Payloads are JSON with a "text" summary and an x-plinth-signature HMAC header; Slack/Discord webhook URLs and Telegram sendMessage URLs work as-is.
webhooks.list
Your webhooks with their last delivery status.
webhooks.remove
Delete a webhook.
webhooks.test
Send a test event to all your webhooks; check webhooks.list a few seconds later for the result.
code
code.list
List files in the project repo (path and size) on a branch or commit.
code.read
Read one file from the project repo. Text comes back as utf8; binary files as base64.
code.write
Commit files to the project without git: for agents that cannot run git or the CLI (e.g. Claude or ChatGPT in the cloud). Writes and deletes files on a branch (main deploys to staging; other branches get preview environments) and starts the deploy. Send whole files; text as utf8, binary as base64. Up to 5 MB per file.
deploy
deploy
Rebuild and deploy the head of the branch an environment tracks (staging tracks main). Production only changes via promote.
deploy.cancel
Stop a build that is still running (the latest one in the environment, or a given release id). The live release keeps serving.
deploy.status
Releases for an environment, newest first, with status and build log of the latest. Pass log_from (a character offset) to get only the log written since; build_log_length tells you where to continue.
account
account.create
Create a Plinth account for your human owner (or join theirs if their email already has one). Plinth emails them a link to approve; then call account.status with the returned signup_id and poll to collect your token.
account.status
Finish signup: checks whether the owner approved, and returns your token (once) when they have.
agents
agents.list
Agents that have a key to this account, when each was last used, and which one you are.
agents.revoke
Owner only. Remove an agent's access to this account immediately.
approval
approval.cancel
Withdraw a pending approval request you made (for example one that is no longer needed). The owner can no longer approve it.
approval.status
Check an approval. When approved, result holds the action output.
billing
billing.card
Ask the owner to add or replace the payment card. Returns an approve_url; approving opens a Stripe page where the owner enters the card. Plinth never sees card numbers. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.
billing.status
Whether a card is on file, this month's spend, the spend cap and recent charges.
support
support.list
Your support tickets with their status and the team's reply.
support.send
Send the Plinth team a bug report, feature request or question. Include what you tried and what happened. Recent errors for the project are attached automatically. Replies show up in support.list.
analytics
analytics.get
Visitors and page views per day, top pages, where visitors come from, and phone vs desktop. No cookies; visitors are counted per day. Free shows today; Pro up to 90 days.
approvals
approvals.list
Approvals requested by this account, newest first. status: pending, approved, denied, cancelled, superseded (default all). Pending ones include approve_url, which the signed-in owner can approve at (the owner also gets each request by email).
connection
db.connection
Get the DATABASE_URL for an environment (the same one the app receives). Production needs owner approval. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.
console
console.signin
Get the owner into the web console. Plinth emails the owner a sign-in link; approving it signs that browser in for 12 hours. The agent never receives a session. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.
db
db.query
Run SQL against an environment database. Returns up to 500 rows. On production, reads (SELECT, WITH, SHOW, EXPLAIN) run in a read-only transaction; any write needs owner approval. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.
http
http.probe
Send one HTTP request to the environment from inside Plinth and return status, headers, timing and the first 8 KB of the body. Use it to reproduce a failing route.
logs
logs.query
Logs for an environment: app stdout/stderr, build, cron and system lines. Filter by text and stream.
metrics
metrics.get
Request count, error rate and latency percentiles for an environment.
migrate
db.migrate
Apply pending migrations from the live release now (deploys do this automatically). Takes a snapshot first. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.
migrations
db.migrations
Applied and pending migrations (files in migrations/*.sql, applied in name order).
policy
policy.set
Owner only. Choose which approval types run without asking. Keys: project.create, project.delete, promote.production, migration.destructive, db.restore.production, billing.
promote
promote
Promote the release running on one environment to another (default staging to production). Applies pending migrations first. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.
requests
requests.query
Recent HTTP requests to an environment: method, path, status, time taken. Filter to failures with min_status 500, or by path.
restore
db.restore
Restore an environment database from a snapshot. Takes a safety snapshot first. Production needs owner approval. May return pending_approval: the owner is emailed a link to approve; tell them it is waiting, then poll approval.status.
rollback
rollback
Point an environment back at its previous release (or a given release id). Does not roll back the database.
seo
seo.setup
Check how search engines see an environment (title, description, robots.txt, sitemap, noindex) and get the steps to connect OpenSEO (openseo.so), an open-source SEO tool your agent uses over MCP: keyword research, rank tracking, backlinks, site audits. The owner signs up on OpenSEO; Plinth does not share any data with it.
snapshot
db.snapshot
Take a snapshot (pg_dump) of an environment database.
snapshots
db.snapshots
List snapshots for an environment. Staging and production get one automatically every night at 03:00 UTC, kept 7 days.
token
token.rotate
Replace your own agent token with a new one; the old one stops working immediately. Save the new token in ~/.plinth/config.json (the CLI does this for you).
whoami
whoami
Show the account this token belongs to, its policy and projects.

Endpoints

URLTransportStateLatencyChecked
https://tryplinth.dev/mcp streamable-http answering 275 ms 12 min ago

Alternatives to Plinth

same job, measured the same way
ohmyho.st
by amerged-org

Operate ohmyho.st hosting from your coding agent: deploy GitHub apps, Postgres, mail, domains.

1 096 installs/wk local only
xhost
by xhostd

Agent-first hosting: create apps, commit code, deploy, get HTTPS URLs. OAuth sign-in, no tokens.

answering
Mowgli
by mowgli-ai

Intelligent product canvas: iterate on your product's design with your coding agent, synced to code.

answering
hoptell
by eminuzun

Messaging between AI coding agents (Claude Code, Codex, ...) over your own self-hosted relay.

729 installs/wk local only
Deep Noodle Security Review Guide
by myzie

Read-only guidance and report templates for reviewing application security with your own agent.

4 tools answering
DeployIt Product Expert
by deployit

AI product expert answering from live source code, with sources and a verification status.

3 tools answering
Cra Annex Ii Docs Lint
by jmshinhwa

19 rules over the user documentation that ships with your product: support-period end date, vulnerab

43 installs/wk local only
Decaframe
by decaframe

Presentations, slides, reports and one-pagers your agent designs and you edit. Exports to one file.

63 installs/wk local only

Plinth — questions

Answers built from our own checks of this server.

What can Plinth do?
It exposes 72 tools, read directly from the server on our last check. Among them: account.create, account.status, agents.list, agents.revoke, analytics.get, approval.cancel and 66 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is Plinth mostly used for?
Its tools cluster around env, cron and domains. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is Plinth working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 88 of 88 checks got a reply (100.0%), average response time 162 ms. The bar chart above shows every period we have measured.
How do I connect Plinth?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Plinth need an API key?
No. Plinth completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 72 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Plinth?
It answers our handshake in 162 ms on average, which is faster than 71% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.