Heroku Platform MCP Server
OFFICIAL SERVERHeroku's own server for managing apps, dynos, add-ons, pipelines and Postgres from an MCP client
Create, deploy and troubleshoot Render services, Postgres and Key Value from an AI client
Official · Render OSS Go Remote (hosted) · Streamable HTTPLocal · stdio Cloud platformsDevOps and monitoringDatabases
40 popularity score ★ 194
Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
Its sign-in lets no client register itself: a client signs in only with an app (a client ID) registered with its maker first, so these snippets work only after that step.
claude mcp add --transport http render https://mcp.render.com/mcp --header "Authorization: Bearer <YOUR_API_KEY>"codex mcp add render --url https://mcp.render.com/mcp --oauth-client-id codex{ "mcpServers": { "render": { "url": "https://mcp.render.com/mcp", "headers": { "Authorization": "Bearer <YOUR_API_KEY>" } } } }https://mcp.render.com/mcpOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs RENDER_API_KEY. Replace each <NAME> with your value.
claude mcp add render -e RENDER_API_KEY=<RENDER_API_KEY> -- docker run -i --rm -e RENDER_API_KEY -v render-mcp-server-config:/config ghcr.io/render-oss/render-mcp-server{
"mcpServers": {
"render": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"RENDER_API_KEY",
"-v",
"render-mcp-server-config:/config",
"ghcr.io/render-oss/render-mcp-server"
],
"env": {
"RENDER_API_KEY": "<RENDER_API_KEY>"
}
}
}
}{
"mcpServers": {
"render": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"RENDER_API_KEY",
"-v",
"render-mcp-server-config:/config",
"ghcr.io/render-oss/render-mcp-server"
],
"env": {
"RENDER_API_KEY": "<RENDER_API_KEY>"
}
}
}
}{
"servers": {
"render": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"RENDER_API_KEY",
"-v",
"render-mcp-server-config:/config",
"ghcr.io/render-oss/render-mcp-server"
],
"env": {
"RENDER_API_KEY": "<RENDER_API_KEY>"
}
}
}
}[mcp_servers.render]
command = "docker"
args = ["run", "-i", "--rm", "-e", "RENDER_API_KEY", "-v", "render-mcp-server-config:/config", "ghcr.io/render-oss/render-mcp-server"]
[mcp_servers.render.env]
RENDER_API_KEY = "<RENDER_API_KEY>"gemini mcp add --scope user -e RENDER_API_KEY=<RENDER_API_KEY> render docker -- run -i --rm -e RENDER_API_KEY -v render-mcp-server-config:/config ghcr.io/render-oss/render-mcp-serverOpens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs RENDER_API_KEY. Replace each <NAME> with your value.
git clone https://github.com/render-oss/render-mcp-server.git
cd render-mcp-server
go buildclaude mcp add render -e RENDER_API_KEY=<RENDER_API_KEY> -- '<ABSOLUTE_PATH_TO_CLONE>/render-mcp-server'{
"mcpServers": {
"render": {
"command": "<ABSOLUTE_PATH_TO_CLONE>/render-mcp-server",
"args": [],
"env": {
"RENDER_API_KEY": "<RENDER_API_KEY>"
}
}
}
}{
"mcpServers": {
"render": {
"command": "<ABSOLUTE_PATH_TO_CLONE>/render-mcp-server",
"args": [],
"env": {
"RENDER_API_KEY": "<RENDER_API_KEY>"
}
}
}
}{
"servers": {
"render": {
"type": "stdio",
"command": "<ABSOLUTE_PATH_TO_CLONE>/render-mcp-server",
"args": [],
"env": {
"RENDER_API_KEY": "<RENDER_API_KEY>"
}
}
}
}[mcp_servers.render]
command = "<ABSOLUTE_PATH_TO_CLONE>/render-mcp-server"
args = []
[mcp_servers.render.env]
RENDER_API_KEY = "<RENDER_API_KEY>"gemini mcp add --scope user -e RENDER_API_KEY=<RENDER_API_KEY> render '<ABSOLUTE_PATH_TO_CLONE>/render-mcp-server'RENDER_API_KEY secret |
Required: Render API key from Account Settings, needed for local runs. The hosted endpoint can use OAuth instead. |
|---|---|
RENDER_WORKSPACE |
Optional: Workspace ID to start with, so no select_workspace call is needed. |
RENDER_CONFIG_PATH |
Optional: File where the selected workspace is saved. The Docker image sets /config/mcp-server.yaml. |
RENDER_HOST |
Optional: Render API host to call. |
In a container, a setting goes in with -e NAME=value after docker run.
Render MCP Server is Render's own server for its hosting platform, and it works in one Render workspace at a time. From a chat you can look over existing services or create new ones: web services, static sites, cron jobs, Postgres databases and Key Value instances. It can also set a service's environment variables.
The rest is for debugging. Logs can be filtered by labels such as level or status code. Metrics cover CPU and memory along with request counts, latency, bandwidth and connections, and there's a read-only SQL tool for Render Postgres.
Render runs a hosted copy at https://mcp.render.com/mcp over Streamable HTTP, where you sign in with OAuth or send a Render API key as a Bearer header. The same Go program also runs on your machine over stdio with RENDER_API_KEY, either from the ghcr.io/render-oss/render-mcp-server image or as a binary you download or build. Render recommends the hosted copy since it gets new tools as they land.
That gap matters right now. The 0.3.0 release registers 24 tools (see cmd/server.go and the pkg/*/tools.go files at that tag). The README on main adds trigger_deploy and list_events, plus five Blueprint tools in public alpha that sync a render.yaml from a repo. One more difference at 0.3.0: update_environment_variables merges what you send into the existing variables unless you pass replace, while the main README describes a full replacement.
| To run it yourself | DockerA prebuilt binaryGo |
|---|---|
| Runs on | macOS, Windows, Linux |
| Render | Free tierAPI key from Account Settings for local use. Paid plans chosen in create tools are billed, and response-time metrics need a Pro workspace or higher |
Pick one way to run it locally: Docker, the release binary (install script on macOS or Linux, or a download from the releases page), or Go to build from source. The hosted endpoint needs only a client that speaks Streamable HTTP. Codex signs in with codex mcp add render --url https://mcp.render.com/mcp --oauth-client-id codex and then a browser flow. Claude Code and Cursor can also add it through Render's plugins, which set up OAuth.
It can create only web services, static sites, cron jobs, Postgres and Key Value; other service types are not yet supported, and not every creation option is offered (no image-backed services, no IP allowlists). Existing resources can only be redeployed or have their environment variables replaced; the update_web_service, update_static_site and update_cron_job tools just return a Dashboard link. It cannot delete anything or change scaling. Events cover services only. Postgres queries are read-only and blocked by an IP allowlist; the hosted server has no addresses to allowlist yet. Render does not guarantee secrets such as connection strings stay out of the assistant's context.
Suits developers already hosting on Render who want an assistant to set up services and databases and then read logs and metrics while debugging. It is Render's own server and needs nothing installed when used hosted, which is also the only way to get trigger_deploy, list_events and the Blueprint tools today. It is not a full control plane. Deleting resources, scaling and editing service settings still need the Render Dashboard or REST API. Run the local image or binary when you must query a Postgres database behind an IP allowlist, or when your client cannot reach the hosted endpoint.
17 only read, 6 change things, 1 can delete or overwrite. A ? marks an optional parameter.
list_workspacesselect_workspace changesownerID: stringget_selected_workspacelist_servicesincludePreviews?: booleanget_serviceserviceId: stringcreate_web_service changesname: stringrepo?: stringbranch?: stringautoDeploy?: enumruntime: enumplan?: enumbuildCommand: stringstartCommand: stringregion?: enumenvVars?: arraycreate_static_site changesname: stringrepo?: stringbranch?: stringautoDeploy?: enumbuildCommand: stringpublishPath?: stringenvVars?: arraycreate_cron_job changesname: stringschedule: stringrepo?: stringbranch?: stringautoDeploy?: enumruntime: enumplan?: enumbuildCommand: stringstartCommand: stringregion?: enumenvVars?: arrayupdate_web_serviceserviceId: stringupdate_static_siteserviceId: stringupdate_cron_jobserviceId: stringupdate_environment_variables deletesserviceId: stringreplace?: booleanenvVars: arraylist_deploysserviceId: stringlimit?: numbercursor?: stringget_deployserviceId: stringdeployId: stringlist_logsresource: arraylevel?: arraytype?: arrayinstance?: arrayhost?: arraystatusCode?: arraymethod?: arraypath?: arraytext?: arraystartTime?: stringendTime?: stringdirection?: enumlimit?: numberlist_log_label_valueslabel: stringresource: arraylevel?: arraytype?: arrayinstance?: arrayhost?: arraystatusCode?: arraymethod?: arraypath?: arraytext?: arraystartTime?: stringendTime?: stringdirection?: enumget_metricsresourceId: stringmetricTypes: arraystartTime?: stringendTime?: stringresolution?: numbercpuUsageAggregationMethod?: stringaggregateHttpRequestCountsBy?: stringhttpLatencyQuantile?: numberhttpHost?: stringhttpPath?: stringlist_postgres_instancesget_postgrespostgresId: stringcreate_postgres changesname: stringplan: enumregion?: enumversion?: numberdiskSizeGb?: numberquery_render_postgrespostgresId: stringsql: stringlist_key_valueget_key_valuekeyValueId: stringcreate_key_value changesname: stringplan: enumregion?: enummaxmemoryPolicy?: enum