Heroku

Heroku

Heroku Platform MCP Server using the Heroku CLI.

3.1K

34 Tools

Packaged by
Requires Secrets
Add to Docker Desktop

Version 4.43 or later needs to be installed to add the server automatically

About

Heroku MCP Server

Heroku Platform MCP Server using the Heroku CLI.

What is an MCP Server?

Characteristics

AttributeDetails
Docker Imagemcp/heroku
Authorheroku
Repositoryhttps://github.com/heroku/heroku-mcp-server
Dockerfilehttps://github.com/heroku/heroku-mcp-server/blob/refs/pull/24/merge/Dockerfile
Docker Image built byDocker Inc.
Docker Scout Health ScoreDocker Scout Health Score
Verify SignatureCOSIGN_REPOSITORY=mcp/signatures cosign verify mcp/heroku --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub
LicenceApache License 2.0

Available Tools (34)

Tools provided by this ServerShort Description
create_addonCreate add-on: specify service, plan, custom names
create_appCreate app: custom name, region (US/EU), team, private space
deploy_one_off_dynoRun code/commands in Heroku one-off dyno with network and filesystem access.
deploy_to_herokuUse for all deployments.
get_addon_infoGet add-on details: plan, state, billing
get_app_infoGet app details: config, dynos, addons, access, domains
get_app_logsApp logs: monitor/debug/filter by dyno/process/source
list_addon_plansList service plans: features, pricing, availability
list_addon_servicesList available add-on services and features
list_addonsList add-ons: all apps or specific app, detailed metadata
list_appsList Heroku apps: owned, collaborator access, team/space filtering
list_private_spacesLists Heroku Private Spaces with CIDR blocks, regions, compliance and capacity details.
list_teamsLists accessible Heroku Teams.
maintenance_offDisable maintenance mode and restore normal app operations
maintenance_onEnable maintenance mode and redirect traffic for a Heroku app
pg_backupsManage backups: schedules, status, verification, recovery
pg_credentialsManage access: credentials, permissions, security, monitoring
pg_infoView database status: config, metrics, resources, health
pg_killStop processes: stuck queries, blocking transactions, runaway operations
pg_locksAnalyze locks: blocked queries, deadlocks, concurrency
pg_maintenanceTrack maintenance: windows, schedules, progress, planning
pg_outliersFind resource-heavy queries: performance, patterns, optimization
pg_psMonitor active queries: progress, resources, performance
pg_psqlExecute SQL queries: analyze, debug, modify schema, manage data
pg_upgradeUpgrade PostgreSQL: version migration, compatibility, safety
pipelines_createCreates new Heroku deployment pipeline with configurable stages, apps, and team settings
pipelines_infoDisplays detailed pipeline configuration, stages, and connected applications
pipelines_listLists accessible Heroku pipelines with ownership and configuration details
pipelines_promotePromotes apps between pipeline stages with configurable target applications
ps_listList and monitor Heroku app dynos.
ps_restartRestart Heroku app processes.
ps_scaleScale Heroku app dynos.
rename_appRename app: validate and update app name
transfer_appTransfer app ownership to user/team

Tools Details

Tool: create_addon

Create add-on: specify service, plan, custom names

ParametersTypeDescription
appstringTarget app for add-on. Must have write access. Region/space affects availability
serviceAndPlanstringFormat: service_slug:plan_slug (e.g., heroku-postgresql:essential-0)
asstringoptionalCustom attachment name. Used for config vars prefix. Must be unique in app
namestringoptionalGlobal add-on identifier. Must be unique across all Heroku add-ons

Tool: create_app

Create app: custom name, region (US/EU), team, private space

ParametersTypeDescription
appstringoptionalApp name. Auto-generated if omitted
regionstringoptionalRegion: us/eu. Default: us. Excludes space param
spacestringoptionalPrivate space name. Inherits region. Excludes region param
teamstringoptionalTeam name for ownership

Tool: deploy_one_off_dyno

Run code/commands in Heroku one-off dyno with network and filesystem access.

Requirements:

  • Show command output
  • Use app_info for buildpack detection
  • Support shell setup commands
  • Use stdout/stderr

Features:

  • Network/filesystem access
  • Environment variables
  • File operations
  • Temp directory handling

Usage:

  1. Use Heroku runtime
  2. Proper syntax/imports
  3. Organized code structure
  4. Package management:
    • Define dependencies
    • Minimize external deps
    • Prefer native modules

Example package.json:

{
  "type": "module",
  "dependencies": {
    "axios": "^1.6.0"
  }
}
ParametersTypeDescription
commandstringCommand to run in dyno.
namestringTarget Heroku app name.
envobjectoptionalDyno environment variables.
sizestringoptionalDyno size.
sourcesarrayoptionalSource files to include in dyno.
timeToLivenumberoptionalDyno lifetime in seconds.

Tool: deploy_to_heroku

Use for all deployments. Deploys new/existing apps, with or without teams/spaces, and env vars to Heroku. Ask for app name if missing. Requires valid app.json via appJson param.

ParametersTypeDescription
appJsonstringApp.json config for deployment. Must follow schema: {"default":{"$schema":"http://json-schema.org/draft-07/schema#","title":"Heroku app.json Schema","description":"app.json is a manifest format for describing web apps. It declares environment variables, add-ons, and other information required to run an app on Heroku. Used for dynamic configurations or converted projects","type":"object","properties":{"name":{"type":"string","pattern":"^[a-zA-Z-\.]+","maxLength":300},"description":{"type":"string"},"keywords":{"type":"array","items":{"type":"string"}},"website":{"$ref":"#/definitions/uriString"},"repository":{"$ref":"#/definitions/uriString"},"logo":{"$ref":"#/definitions/uriString"},"success_url":{"type":"string"},"scripts":{"$ref":"#/definitions/scripts"},"env":{"$ref":"#/definitions/env"},"formation":{"$ref":"#/definitions/formation"},"addons":{"$ref":"#/definitions/addons"},"buildpacks":{"$ref":"#/definitions/buildpacks"},"environments":{"$ref":"#/definitions/environments"},"stack":{"$ref":"#/definitions/stack"},"image":{"type":"string"}},"additionalProperties":false,"definitions":{"uriString":{"type":"string","format":"uri"},"scripts":{"type":"object","properties":{"postdeploy":{"type":"string"},"pr-predestroy":{"type":"string"}},"additionalProperties":false},"env":{"type":"object","patternProperties":{"^[A-Z][A-Z0-9]*$":{"type":"object","properties":{"description":{"type":"string"},"value":{"type":"string"},"required":{"type":"boolean"},"generator":{"type":"string","enum":["secret"]}},"additionalProperties":false}}},"dynoSize":{"type":"string","enum":["free","eco","hobby","basic","standard-1x","standard-2x","performance-m","performance-l","private-s","private-m","private-l","shield-s","shield-m","shield-l"]},"formation":{"type":"object","patternProperties":{"^[a-zA-Z0-9_-]+$":{"type":"object","properties":{"quantity":{"type":"integer","minimum":0},"size":{"$ref":"#/definitions/dynoSize"}},"required":["quantity"],"additionalProperties":false}}},"addons":{"type":"array","items":{"oneOf":[{"type":"string"},{"type":"object","properties":{"plan":{"type":"string"},"as":{"type":"string"},"options":{"type":"object"}},"required":["plan"],"additionalProperties":false}]}},"buildpacks":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"],"additionalProperties":false}},"environmentConfig":{"type":"object","properties":{"env":{"type":"object"},"formation":{"type":"object"},"addons":{"type":"array"},"buildpacks":{"type":"array"}}},"environments":{"type":"object","properties":{"test":{"allOf":[{"$ref":"#/definitions/environmentConfig"},{"type":"object","properties":{"scripts":{"type":"object","properties":{"test":{"type":"string"}},"additionalProperties":false}}}]},"review":{"$ref":"#/definitions/environmentConfig"},"production":{"$ref":"#/definitions/environmentConfig"}},"additionalProperties":false},"stack":{"type":"string","enum":["heroku-18","heroku-20","heroku-22","heroku-24"]}}}}
namestringApp name for deployment. Creates new app if not exists.
rootUristringWorkspace root directory path.
envobjectoptionalEnvironment variables overriding app.json values
internalRoutingbooleanoptionalEnable internal routing in private spaces.
spaceIdstringoptionalPrivate space ID for space deployments.
tarballUristringoptionalURL of deployment tarball. Creates from rootUri if not provided.
teamIdstringoptionalTeam ID for team deployments.

Tool: get_addon_info

Get add-on details: plan, state, billing

ParametersTypeDescription
addonstringAdd-on identifier: UUID, name (postgresql-curved-12345), or attachment name (DATABASE)
appstringoptionalApp context for add-on lookup. Required for attachment names. Uses Git remote default

Tool: get_app_info

Get app details: config, dynos, addons, access, domains

ParametersTypeDescription
appstringTarget app name. Requires access permissions
jsonbooleanoptionalJSON output with full metadata. Default: text format

Tool: get_app_logs

App logs: monitor/debug/filter by dyno/process/source

ParametersTypeDescription
appstringHeroku app name. Requires: permissions, Cedar-gen
dynoNamestringoptionalFormat: web.1/worker.2. Excludes processType
processTypestringoptionalweb
sourcestringoptionalapp=application, heroku=platform. Default: all

Tool: list_addon_plans

List service plans: features, pricing, availability

ParametersTypeDescription
servicestringService slug (e.g., heroku-postgresql). Get from list_addon_services
jsonbooleanoptionalJSON output with pricing, features, space compatibility. Default: text format

Tool: list_addon_services

List available add-on services and features

ParametersTypeDescription
jsonbooleanoptionalJSON output with sharing options and app generation support. Default: basic text

Tool: list_addons

List add-ons: all apps or specific app, detailed metadata

ParametersTypeDescription
allbooleanoptionalList all add-ons across accessible apps. Overrides app param, shows full status
appstringoptionalFilter by app name. Shows add-ons and attachments. Uses Git remote default if omitted

Tool: list_apps

List Heroku apps: owned, collaborator access, team/space filtering

ParametersTypeDescription
allbooleanoptionalShow owned apps and collaborator access. Default: owned only
personalbooleanoptionalList personal account apps only, ignoring default team
spacestringoptionalFilter by private space name. Excludes team param
teamstringoptionalFilter by team name. Excludes space param

Tool: list_private_spaces

Lists Heroku Private Spaces with CIDR blocks, regions, compliance and capacity details. JSON output supported.

ParametersTypeDescription
jsonbooleanoptionalJSON output for detailed space metadata, text output if false/omitted

Tool: list_teams

Lists accessible Heroku Teams. Use for: viewing teams, checking membership, getting team metadata, and verifying access. JSON output available.

ParametersTypeDescription
jsonbooleanoptionalOutput format control - true for detailed JSON with team metadata, false/omitted for simplified text

Tool: maintenance_off

Disable maintenance mode and restore normal app operations

ParametersTypeDescription
appstringTarget Heroku app name

Tool: maintenance_on

Enable maintenance mode and redirect traffic for a Heroku app

ParametersTypeDescription
appstringTarget Heroku app name

Tool: pg_backups

Manage backups: schedules, status, verification, recovery

ParametersTypeDescription
appstringTarget app name

Tool: pg_credentials

Manage access: credentials, permissions, security, monitoring

ParametersTypeDescription
appstringTarget app name
databasestringoptionalDatabase identifier. Format: APP_NAME::DB for other apps. Default: DATABASE_URL

Tool: pg_info

View database status: config, metrics, resources, health

ParametersTypeDescription
appstringTarget app name
databasestringoptionalDatabase identifier. Format: APP_NAME::DB for other apps. Default: all databases

Tool: pg_kill

Stop processes: stuck queries, blocking transactions, runaway operations

ParametersTypeDescription
appstringTarget app name
pidnumberProcess ID to terminate
databasestringoptionalDatabase identifier. Format: APP_NAME::DB for other apps. Default: DATABASE_URL
forcebooleanoptionalForce immediate termination

Tool: pg_locks

Analyze locks: blocked queries, deadlocks, concurrency

ParametersTypeDescription
appstringTarget app name
databasestringoptionalDatabase identifier. Format: APP_NAME::DB for other apps. Default: DATABASE_URL
truncatebooleanoptionalTruncate queries to 40 chars

Tool: pg_maintenance

Track maintenance: windows, schedules, progress, planning

ParametersTypeDescription
appstringTarget app name
databasestringoptionalDatabase identifier. Format: APP_NAME::DB for other apps. Default: DATABASE_URL

Tool: pg_outliers

Find resource-heavy queries: performance, patterns, optimization

ParametersTypeDescription
appstringTarget app name
databasestringoptionalDatabase identifier. Format: APP_NAME::DB for other apps. Default: DATABASE_URL
numnumberoptionalNumber of queries to show. Default: 10
resetbooleanoptionalReset pg_stat_statements stats
truncatebooleanoptionalTruncate queries to 40 chars

Tool: pg_ps

Monitor active queries: progress, resources, performance

ParametersTypeDescription
appstringTarget app name
databasestringoptionalDatabase identifier. Format: APP_NAME::DB for other apps. Default: DATABASE_URL
verbosebooleanoptionalShow query plan and memory usage

Tool: pg_psql

Execute SQL queries: analyze, debug, modify schema, manage data

ParametersTypeDescription
appstringapp to run command against
commandstringoptionalSQL command. Single line. Ignored if file provided
credentialstringoptionalcredential to use
databasestringoptionalDatabase identifier: config var, name, ID, alias. Format: APP_NAME::DB for other apps. Default: DATABASE_URL
filestringoptionalSQL file path. Ignored if command provided

Tool: pg_upgrade

Upgrade PostgreSQL: version migration, compatibility, safety

ParametersTypeDescription
appstringTarget app name
confirmstringoptionalConfirmation for destructive operation
databasestringoptionalDatabase identifier. Format: APP_NAME::DB for other apps. Default: DATABASE_URL
versionstringoptionalPostgreSQL version target

Tool: pipelines_create

Creates new Heroku deployment pipeline with configurable stages, apps, and team settings

ParametersTypeDescription
namestringPipeline name
stagestringInitial pipeline stage
appstringoptionalApp to add to pipeline
teamstringoptionalTeam owning the pipeline

Tool: pipelines_info

Displays detailed pipeline configuration, stages, and connected applications

ParametersTypeDescription
pipelinestringTarget pipeline name
jsonbooleanoptionalEnable JSON output

Tool: pipelines_list

Lists accessible Heroku pipelines with ownership and configuration details

ParametersTypeDescription
jsonbooleanoptionalEnable JSON output

Tool: pipelines_promote

Promotes apps between pipeline stages with configurable target applications

ParametersTypeDescription
appstringSource app for promotion
tostringoptionalTarget apps for promotion (comma-separated)

Tool: ps_list

List and monitor Heroku app dynos. View running dynos, check status/health, monitor process states, verify configurations.

ParametersTypeDescription
appstringApp name to list processes for
jsonbooleanoptionalOutput process info in JSON format

Tool: ps_restart

Restart Heroku app processes. Restart specific dynos, process types, or all dynos. Reset dyno states selectively.

ParametersTypeDescription
appstringApp name to restart processes for
dyno-namestringoptionalSpecific dyno to restart (e.g., web.1). Omit both options to restart all
process-typestringoptionalDyno type to restart (e.g., web). Omit both options to restart all

Tool: ps_scale

Scale Heroku app dynos. Adjust quantities, change sizes, view formation details, manage resources.

ParametersTypeDescription
appstringApp name to scale
dynostringoptionalDyno type and quantity (e.g., web=3:Standard-2X, worker+1). Omit to show current formation

Tool: rename_app

Rename app: validate and update app name

ParametersTypeDescription
appstringCurrent app name. Requires access
newNamestringNew unique app name

Tool: transfer_app

Transfer app ownership to user/team

ParametersTypeDescription
appstringApp to transfer. Requires owner/admin access
recipientstringTarget user email or team name

Use this MCP Server

{
  "mcpServers": {
    "heroku": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "HEROKU_API_KEY",
        "mcp/heroku"
      ],
      "env": {
        "HEROKU_API_KEY": "<YOUR_HEROKU_AUTH_TOKEN>"
      }
    }
  }
}

Why is it safer to run MCP Servers with Docker?

Manual installation

You can install the MCP server using:

Installation for

Related servers