Atlas / MCP servers / heroku / heroku-mcp-server

heroku-mcp-serverBLOCK

mcp/heroku/heroku-mcp-server

Heroku Platform MCP Server using the Heroku CLI

Verdict
BLOCK
Grade
D
Trust score
69 /100
Exposed tools
39 25r · 13w · 1d
Transport
stdio
License
Apache-2.0
Stars
82
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://cursor.com/install-mcp?name=heroku&config=eyJjb21tYW5kIjoibnB4IC15IEBoZXJva3UvbWNwLXNlcnZlciIsImVudiI6eyJIRVJPS1VfQVBJX0tFWSI6IjxZT1VSX0hFUk9LVV9BVVRIX1RPS0VOPiJ9fQ%3D%3D)

The Heroku Platform MCP Server works on Common Runtime, Cedar Private and Shield Spaces, and Fir Private Spaces.

Prerequisites

Deploy on Heroku

[](https://www.heroku.com/deploy?template=https://github.com/heroku/heroku-mcp-server)

Overview

The Heroku Platform MCP Server is a specialized Model Context Protocol (MCP) implementation designed to facilitate seamless interaction between large language models (LLMs) and the Heroku Platform. This server provides a robust set of tools and capabilities that enable LLMs to read, manage, and operate Heroku Platform resources.

Key Features:

  • Direct interaction with Heroku Platform resources through LLM-driven tools
  • Secure and authenticated access to Heroku Platform APIs, leveraging the Heroku CLI
  • Natural language interface for Heroku Platform interactions

Note: The Heroku Platform MCP Server is currently in early development. As we continue to enhance and refine the implementation, the available functionality and tools may evolve. We welcome feedback and contributions to help shape the future of this project.

Note: The Heroku Platform MCP Server requires the Heroku CLI to be installed globally (v10.8.1+). Ensure you have the correct version by running heroku --version.

Configure the Heroku Platform MCP Server

You can configure Claude Desktop, Zed, Cursor, Windsurf, and other clients to work with the Heroku Platform MCP Server.

##

Read from source at commit b3e3ff4c37b3OBSERVED · 2026-10-12
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add mcp-server --env HEROKU_API_KEY=${HEROKU_API_KEY} -- npx -y @heroku/[email protected]
claude-desktop
{
  "mcpServers": {
    "mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@heroku/[email protected]"
      ],
      "env": {
        "HEROKU_API_KEY": "${HEROKU_API_KEY}"
      }
    }
  }
}
03

Exposed tools (39)

25 read · 13 write · 1 destructive. Blast radius: 1 tool can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
create_addonwriteCreate add-on: specify service, plan, custom names
create_appwriteCreate app: custom name, region (US/EU), team, private space
deploy_one_off_dynowrite
deploy_to_herokuwriteUse for all deployments. Deploys new/existing apps, with or without teams/spaces, and env vars to Heroku.
get_addon_infowriteGet add-on details: plan, state, billing
get_app_inforeadGet app details: config, dynos, addons, access, domains
get_app_logsreadApp logs: monitor/debug/filter by dyno/process/source
list_addon_plansreadList service plans: features, pricing, availability
list_addon_serviceswriteList available add-on services and features
list_addonswriteList add-ons: all apps or specific app, detailed metadata
list_ai_available_modelsreadList available AI inference models
list_appsreadList Heroku apps: owned, collaborator access, team/space filtering
list_private_spacesreadLists Heroku Private Spaces with CIDR blocks, regions, compliance and capacity details. JSON output supported.
list_teamsreadLists accessible Heroku Teams. Use for: viewing teams, checking membership, getting team metadata, and verifying access. JSON output available.
maintenance_offwriteDisable maintenance mode and restore normal app operations
maintenance_onwriteEnable maintenance mode and redirect traffic for a Heroku app
make_ai_inferencereadMake inference request to Heroku AI API
pg_backupsreadManage backups: schedules, status, verification, recovery
pg_credentialsreadManage access: credentials, permissions, security, monitoring
pg_inforeadView database status: config, metrics, resources, health
pg_killdestructiveStop processes: stuck queries, blocking transactions, runaway operations
pg_locksreadAnalyze locks: blocked queries, deadlocks, concurrency
pg_maintenancereadTrack maintenance: windows, schedules, progress, planning
pg_outliersreadFind resource-heavy queries: performance, patterns, optimization
pg_psreadMonitor active queries: progress, resources, performance
pg_psqlwriteExecute SQL queries: analyze, debug, modify schema, manage data
pg_upgradereadUpgrade PostgreSQL: version migration, compatibility, safety
pipelinesreadLists and manages Heroku pipelines with configuration visibility
pipelines_createwriteCreates new Heroku deployment pipeline with configurable stages, apps, and team settings
pipelines_inforeadDisplays detailed pipeline configuration, stages, and connected applications
pipelines_listreadLists accessible Heroku pipelines with ownership and configuration details
pipelines_promotereadPromotes apps between pipeline stages with configurable target applications
provision_ai_modelreadProvision AI model access for app
ps_listreadList and monitor Heroku app dynos. View running dynos, check status/health, monitor process states, verify configurations.
ps_restartwriteRestart Heroku app processes. Restart specific dynos, process types, or all dynos. Reset dyno states selectively.
ps_scalereadScale Heroku app dynos. Adjust quantities, change sizes, view formation details, manage resources.
rename_appwriteRename app: validate and update app name
test-appreadTest app
test_toolreadA test tool
04

Trust audit

BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (5 observation(s))
Shell
declared (3 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (14)

HIGHPrompt injection · prompt.credential_read · CWE-94, CWE-1427
<tool:pg_credentials>:1
Manage access: credentials, permissions, security, monitoring
Why it matters. asks the agent to read credentials
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
src/utils/tarball.spec.ts:124
const SECRET = 'SUPER-SECRET-EXTERNAL-CANARY';
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
pg_kill
Why it matters. 1 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mocharc.json
.mocharc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.nycrc.json
.nycrc.json
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettier.mjs
.prettier.mjs
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.symlink · CWE-1104
.github/CODEOWNERS
.github/CODEOWNERS
Why it matters. link not followed
LOWFilesystem / path · fs.system_paths · CWE-22, CWE-59
src/tools/deploy-to-heroku.spec.ts:37
expect(isSafeSourceRelativePath('/etc/passwd')).to.be.false;
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/repl/heroku-cli-repl.spec.ts:5
import * as pjson from '../../package.json' with { type: 'json' };
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/repl/heroku-cli-repl.ts:3
import * as pjson from '../../package.json' with { type: 'json' };
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
src/utils/generate-request-init.ts:8
const pkg = await import('../../package.json', { with: { type: 'json' } });
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@heroku-cli/schema, @modelcontextprotocol/sdk, cheerio, jsonschema, node-fetch, tar-stream, zod, zod-to-json-schema
Why it matters. 29 dependency range(s) float
Fix. pin exact versions or ship a lockfile
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
README.md:308
creation, network access, environment variables, and automatic cleanup. Ideal for running scripts, tests, or temporary
Why it matters. asks the agent to read credentials

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha b3e3ff4c37b3full audit observations/trust-audit/mcp-server/heroku__heroku-mcp-server.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12b3e3ff4c37b3BLOCKD69first audit
06

Questions

What is the @heroku/mcp-server MCP server?

Heroku Platform MCP Server using the Heroku CLI

What tools does @heroku/mcp-server expose?

39 in total: 25 read-only, 13 that write, and 1 that can delete or overwrite (pg_kill). Every one is listed on this page with its risk.

Is @heroku/mcp-server safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 1 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does @heroku/mcp-server need?

It reads HEROKU_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does @heroku/mcp-server run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @heroku/mcp-server at 1.2.11.

How current is this page?

The grade is for one exact copy of the source (b3e3ff4c37b3), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement