Jam MCP
OFFICIAL SERVERHosted Jam server that feeds bug recordings, logs and network traffic to coding agents
Backstage backend plugin that serves your portal's registered actions as MCP tools over HTTP
Official · Backstage TypeScript Local · Streamable HTTP Developer toolsDevOps and monitoring
102 popularity score ★ 35k ↓ 95k/wk
Opens the app, which asks before it adds the server.
claude mcp add --transport http backstage-actions http://localhost:7007/api/mcp-actions/v1{
"mcpServers": {
"backstage-actions": {
"url": "http://localhost:7007/api/mcp-actions/v1"
}
}
}{
"servers": {
"backstage-actions": {
"type": "http",
"url": "http://localhost:7007/api/mcp-actions/v1"
}
}
}[mcp_servers.backstage-actions]
url = "http://localhost:7007/api/mcp-actions/v1"gemini mcp add --scope user --transport http backstage-actions http://localhost:7007/api/mcp-actions/v1MCP_TOKEN |
Optional: Static external-access token you define in app-config under backend.auth.externalAccess; clients send it as Authorization: Bearer. Not needed when clients sign in with OAuth (CIMD). |
|---|
MCP Actions Backend is a plugin from the Backstage project that you add to the backend of your own Backstage instance. It takes the actions other plugins have put in the Backstage Actions Registry and offers them to MCP clients as tools, over Streamable HTTP at /api/mcp-actions/v1 on the backend (http://localhost:7007/api/mcp-actions/v1 in a default local setup).
There is no fixed tool list: what a client sees depends on which plugins are installed and which ones you name under backend.actions.pluginSources. The actions Backstage documents include querying and fetching catalog entities, registering and unregistering catalog locations, validating catalog-info.yaml, running or dry-running Software Templates, reading scaffolder task logs, searching the portal, reading notifications and listing Kubernetes resources for an entity. Tool names carry the plugin ID as a prefix by default (catalog.get-catalog-entity); mcpActions.namespacedToolNames: false turns that off.
You can split the actions into several focused servers with mcpActions.servers, each with include and exclude filter rules on action IDs or attributes such as destructive. Since version 0.2.2 the default endpoint stays up and keeps exposing every registered action even when named servers are configured; before that, adding one named server removed the default endpoint (CHANGELOG). Version 0.2.0 removed the old SSE transport, so clients must use Streamable HTTP.
The plugin also emits OpenTelemetry metrics and a trace span per tool call, and from 0.2.1 it writes audit events for connections, tool discovery and tool execution.
| Runtime | Node.js |
|---|
A running Backstage instance whose backend you control, with the package added via yarn to packages/backend and registered in its index.ts. Clients need either a static external-access token configured in app-config, or OAuth via Client ID Metadata Documents, which needs the New Frontend System, @backstage/plugin-auth-backend and the @backstage/plugin-auth frontend plugin.
It is not a standalone program: there is no npx or Docker command, and it only runs inside a Backstage backend. Its tools are only the actions the installed plugins register, so a portal without the catalog, scaffolder or search plugins offers none of theirs. Only Streamable HTTP is served; the SSE transport was removed in 0.2.0. Backstage calls static tokens a temporary workaround until device authentication is finished, and Dynamic Client Registration is deprecated. The default endpoint always exposes every registered action; named servers can narrow what a client is given, but not remove that endpoint.
Teams that already run Backstage and want assistants such as Claude, Cursor or VS Code to query their software catalog, search the portal or start Software Templates under Backstage's own auth and permissions. It is no use without a Backstage deployment you can change and redeploy. Because it can register entities and execute templates, teams that want read-only access should set up a named server that excludes destructive actions and hand clients that endpoint.
auth.who-am-icatalog.get-catalog-entitycatalog.query-catalog-entitiescatalog.register-entitycatalog.unregister-entitycatalog.validate-entitycatalog.get-catalog-model-descriptionnotifications.get-notificationskubernetes.get-kubernetes-clusterskubernetes.get-kubernetes-resources-for-entityscaffolder.dry-run-templatescaffolder.list-scaffolder-actionsscaffolder.list-scaffolder-tasksscaffolder.execute-templatescaffolder.get-scaffolder-task-logssearch.query