Heroku MCP server
Heroku in any MCP client, through Memtro: Heroku does not publish this server. Memtro's Heroku connector reads Heroku through its API with the credentials you connect, and one endpoint hands those tools, every other system you connect and Memtro's memory tools to Claude Code, Cursor, Claude Desktop or anything else that speaks Streamable HTTP, as you.
What the model can do
Heroku apps: each app's region, stack, team and URL, its releases (who deployed what and when), builds, running dynos and process formation, collaborators, custom domains, and the account's teams; and, when asked, restart dynos, scale a process, roll back a release, deploy from a source tarball, run a one-off command, toggle maintenance mode or rename an app, create or delete an app, cancel a build, add or remove collaborators and attach a custom domain. Never reads or changes config vars or logs.
Reads
heroku_list_appsHeroku apps, most recently updated first: name, URL, region, stack, team, owner, maintenance mode and last release time.heroku_list_releasesReleases of one Heroku app, newest first: version, status, description (deploy, config change, rollback, add-on), who made it and when.heroku_list_buildsBuilds of one Heroku app, newest first: status (pending, succeeded, failed), stack, buildpacks, source version…heroku_list_dynosDynos running for one Heroku app right now (name, type, size, state such as up, crashed or idle, release) and its process formation…heroku_list_collaboratorsWho has access to one Heroku app: email and role.heroku_list_domainsDomains attached to one Heroku app: hostname, kind (heroku or custom), the DNS target to point at, and certificate (ACM) status.heroku_list_teamsHeroku teams this account belongs to: name, your role and the team type.
Acts, when you ask
These change something in Heroku. The model is told to use them only when you ask for exactly that, and each one is granted by name: per team on a shared connection, by the owner on a personal one.
heroku_restart_dynosRestart dynos of one Heroku app: all of them, one named dyno (web.1), or every dyno of one process type (web).heroku_scale_formationScale one process type of a Heroku app: set how many dynos it runs and/or their size.heroku_rollback_releaseRoll a Heroku app back to an earlier release, given its version number or release id.heroku_create_buildDeploy a Heroku app from a gzipped source tarball at an https URL.heroku_cancel_buildCancel a Heroku build that is still running.heroku_run_one_off_dynoRun a one-off command (a migration, a rake or manage.py task) in a new detached dyno of a Heroku app.heroku_update_appChange a Heroku app: turn maintenance mode on (visitors see a maintenance page) or off, rename it (its herokuapp.com hostname and git remote change)…heroku_create_appCreate a new, empty Heroku app owned by this account.heroku_delete_appPermanently delete a Heroku app with its releases, dynos and add-ons.heroku_add_collaboratorGive a person access to a Heroku app as a collaborator (changes access).heroku_remove_collaboratorRemove a collaborator from a Heroku app; they lose access to it at once (changes access).heroku_add_domainAttach a custom hostname to a Heroku app.
Connect it
First connect Heroku on Dashboard → Connections, then add Memtro to your client once. The Heroku tools appear alongside the tools of everything else you have connected; nothing is configured per connector.
Claude Code
The Memtro plugin registers the server and a skill for when to use it; the tools are then available in every session.
claude plugin marketplace add memtro-org/claude-memtro
claude plugin install memtro@memtro --config api_key=sk-memtro-...Cursor
Add the server to .cursor/mcp.json in the project, or to the global file under ~/.cursor/.
{
"mcpServers": {
"memtro": {
"url": "https://platform.memtro.com/api/mcp",
"headers": {
"Authorization": "Bearer sk-memtro-..."
}
}
}
}Claude Desktop
Create a personal API key on Dashboard → Profile → API keys. In Claude Desktop add an MCP server of type HTTP with URL https://platform.memtro.com/api/mcp and the header Authorization: Bearer sk-memtro-…
OpenCode
A remote server in opencode.json.
{
"mcp": {
"memtro": {
"type": "remote",
"url": "https://platform.memtro.com/api/mcp",
"headers": {
"Authorization": "Bearer sk-memtro-..."
}
}
}
}Pi
One command: pi mcp add memtro --url https://platform.memtro.com/api/mcp --bearer-token-env-var MEMTRO_API_KEY. Tools arrive as mcp__memtro__*. The pi-memtro extension registers it for you, alongside Memtro as the model.
Any other client
Add an MCP server of type HTTP (Streamable HTTP, stateless) at https://platform.memtro.com/api/mcp with the header Authorization: Bearer sk-memtro-.... Codex, Zed, Windsurf, Cline and the SDKs all take a remote server this way.
Who may use it
The key identifies the person, and the server offers that person the tools they may use everywhere else in Memtro. A shared Heroku connection is used by the teams an administrator granted it to, tool by tool, on the Permissions page; a personal connection is used by its owner alone, and its tools that act stay off until the owner allows them. See Teams and permissions and Connectors.
Ask it like this
- › What was deployed to the billing app this week, and by whom?
- › Are any dynos crashed on the API app right now?
- › Which builds of the web app failed this week, and who started them?
- › Who has access to the production app?
- › Roll the API app back to the release before this morning's deploy
Questions
- Is this an official Heroku MCP server?
- No. It is Memtro's MCP server with Memtro's Heroku connector behind it: the connector reads Heroku through its API with the credentials you connect on Dashboard → Connections, and Heroku publishes nothing here. The same endpoint carries every other system you connect and Memtro's memory tools.
- What does it cost?
- Nothing on top of Memtro. One price per organisation by its number of users, from $50 a month for up to 10 users after a 7-day free trial, with every connector, the MCP server, jobs and memory included. You bring your own model keys.
- Can it change anything in Heroku?
- Only when you ask, and only what it has been granted: restart all of an app's dynos, one dyno, or one process type; scale a process type: change how many dynos it runs or their size (spends money); roll an app back to an earlier release; deploy an app from a source tarball URL (build and release); cancel a running build; run a one-off command in a new dyno (spends money, runs code against the app's data); turn maintenance mode on or off, rename an app, or change its build stack; create an app; delete an app permanently; add a collaborator to an app (invitation email off unless asked), or remove one; attach a custom domain to an app. Every other tool reads, searches or lists. An administrator grants each acting tool by name per team, and a personal connection acts only after its owner allows it.
- Which clients work?
- Any MCP client that speaks Streamable HTTP: Claude Code, Cursor, Claude Desktop, OpenCode, Codex, Zed, Windsurf, Cline and the Anthropic and OpenAI SDKs. There is no local process to run; the server is remote and authenticated with your key.