D

Heroku MCP Server

Local stdio MCP server for Heroku platform management — apps, dynos, add-ons, PostgreSQL databases, pipelines, and deployments via the Heroku CLI

Overall Score41/100

Score Breakdown

Server Info

Package
@heroku/mcp-server
Registry
npm
Maintainer
HerokuVendor
Category
Cloud & Infrastructure
Tags
paasdeploymentdynos
Last Scanned
28 May 2026

Findings

13 issues

Authentication & Identity

CRITICALStdio-only transport - no per-request token support

stdio-only transport. Auth is via HEROKU_API_KEY environment variable passed as a Bearer token in the Authorization header when the Heroku CLI REPL process and direct API calls are made. There is no MCP OAuth spec implementation. No HTTP/SSE transport. v1.2.2 is a bug fix only (path validation on so... Platform cannot pass per-request tokens; must spawn one server instance per user.

Remediation

Add HTTP/SSE transport to accept per-request Authorization headers.

HIGHNo MCP OAuth spec implementation

Server does not implement the MCP OAuth authorization server spec. The platform must handle the full OAuth flow, token management, and credential injection externally.

Remediation

Implement the MCP OAuth spec (.well-known/oauth-authorization-server) for native per-user authentication.

HIGHEnv var credentials with no rotation mechanism

Credentials (HEROKU_API_KEY, MCP_SERVER_REQUEST_TIMEOUT) are read from environment variables at startup. Rotation requires restarting the server process. All requests share the same service account credential.

Remediation

Support dynamic credential refresh or secrets manager integration.

Tool Schema Quality

HIGHRequired fields missing on 2 write operations

Write tools without required field declarations: create_app, deploy_to_heroku.

Remediation

Add required arrays to all write/delete tool schemas.

MEDIUMOnly 3 of 36 schemas have parameter constraints

Most schemas lack maxLength, enum, or pattern constraints on string parameters.

Remediation

Add constraints to string parameters, especially on write operations.

CRITICALDangerous execution surface: pg_psql: accepts arbitrary SQL command string executed against Heroku Postgres

Tool allows raw code/query execution which could be exploited via prompt injection.

Remediation

Use parameterized queries or validated command sets.

CRITICALDangerous execution surface: deploy_one_off_dyno: executes arbitrary commands in a Heroku dyno with network and filesystem access; v1.2.2 added path validation (isSafeSourceRelativePath) on source file paths

Tool allows raw code/query execution which could be exploited via prompt injection.

Remediation

Use parameterized queries or validated command sets.

Permission Granularity

LOWTool descriptions lack resource scope

Descriptions don't specify what data types or resources they access.

Remediation

Add resource type statements to descriptions.

LLM Safety

MEDIUM18 tool descriptions are too vague

Short or generic descriptions make tool selection unreliable.

Remediation

Expand descriptions with specific actions, data types, and side effects.

HIGHTool descriptions contain instructional language

Descriptions include directives that could influence LLM behavior beyond tool selection.

Remediation

Remove instructional language. Descriptions should be purely factual.

Data Exposure

MEDIUM5 list operations lack pagination

No pagination on any list tool (list_apps, list_addons, list_private_spaces, list_teams, list_addon_services, list_addon_plans, pipelines_list). Output is the raw Heroku CLI text or JSON output, meaning large accounts could return unbounded results. No field selection. Responses are passed through from the Heroku CLI REPL via stdout capture.

Remediation

Add limit/offset or cursor-based pagination.

LOWNo field selection on responses

Responses return full records rather than projected fields.

Remediation

Implement field selection to return only relevant fields.

Maintenance & Trust

MEDIUM14 dependency vulnerabilities (5 high)

npm audit found 5 high severity CVEs.

Remediation

Update vulnerable dependencies.

Tools

36 total
NameDescriptionRisk
list_appsList Heroku apps: owned, collaborator access, team/space filteringread
get_app_infoGet app details: config, dynos, addons, access, domainsread
create_appCreate app: custom name, region (US/EU), team, private spacewrite
rename_appRename app: validate and update app namewrite
maintenance_onEnable maintenance mode and redirect traffic for a Heroku appwrite
maintenance_offDisable maintenance mode and restore normal app operationswrite
get_app_logsApp logs: monitor/debug/filter by dyno/process/sourceread
list_private_spacesLists Heroku Private Spaces with CIDR blocks, regions, compliance and capacity details. JSON output supported.read
list_teamsLists Heroku Teams with membership and enterprise account details.read
list_addonsList add-ons: all apps or specific app, detailed metadataread
get_addon_infoGet add-on details: plan, state, billingread
create_addonCreate add-on: provision services for app with plan and configurationwrite
list_addon_servicesList available add-on services and providersread
list_addon_plansList available plans for an add-on serviceread
pg_psqlExecute SQL queries: analyze, debug, modify schema, manage dataadmin
pg_infoView database status: config, metrics, resources, healthread
pg_psMonitor active queries: progress, resources, performanceread
pg_locksView database locks: blocking queries, deadlocks, transactionsread
pg_outliersView query statistics: slow queries, performance outliersread
pg_credentialsManage access: credentials, permissions, security, monitoringadmin
pg_killStop processes: stuck queries, blocking transactions, runaway operationswrite
pg_maintenanceTrack maintenance: windows, schedules, progress, planningread
pg_backupsManage backups: schedules, status, verification, recoveryread
pg_upgradeUpgrade PostgreSQL: version migration, compatibility, safetyadmin
ps_listList and monitor Heroku app dynos. View running dynos, check status/health, monitor process states, verify configurations.read
ps_scaleScale dynos: adjust count and size for app process typeswrite
ps_restartRestart dynos: target by type or individual dynowrite
pipelines_createCreates new Heroku deployment pipeline with configurable stages, apps, and team settingswrite
pipelines_promotePromote apps through a pipeline stageadmin
pipelines_listList available Heroku pipelinesread
pipelines_infoGet details for a Heroku pipelineread
deploy_to_herokuUse 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.admin
deploy_one_off_dynoRun code/commands in Heroku one-off dyno with network and filesystem access.admin
list_ai_available_modelsList available AI inference modelsread
provision_ai_modelProvision AI model access for appwrite
make_ai_inferenceMake inference request to Heroku AI APIread

Deploy Heroku MCP Server securely

CompleteFlow adds per-user authentication, permission scoping, and audit logging to any MCP server out of the box.

Deploy on CompleteFlow