About Backstage MCP
Backstage MCP is an example MCP server that connects to Backstage through Quarkus Backstage. It is for teams with a Backstage installation and exposes template discovery and instantiation capabilities.
Key features
- 01List available Backstage templates
- 02Instantiate templates from the command line
- 03Connect to the Backstage API
Use cases
- 01Inspect available Backstage templates
- 02Create a project from a template
- 03Use template values to instantiate a project
MCP support
The server reads from stdin and writes to stdout, exposing Backstage template listing and instantiation to MCP clients. It uses Quarkus Backstage to communicate with the Backstage API.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEBackstage MCP
This is an example of using Backstage with MCP via Quarkus Backstage. The server has been tested with Goose. See below for details.
Features
- List available Backstage templates
- Instantiate a template from the command line
Requirements
A Backstage installation is required.
The installation needs to have enabled Service to Service communication.
Users need to have access of the token used for such communication. The yaml snippet below shows where and how it's setup.
app:
# ...
backend:
# ...
auth:
# ...
externalAccess:
- type: static
options:
token: <put your token here>
subject: curl-requests
Anatomy
Dependencies
The project is using:
<dependency>
<groupId>io.quarkiverse.mcp</groupId>
<artifactId>quarkus-mcp-server-stdio</artifactId>
<version>1.0.0.Alpha5</version>
</dependency>
for implementing an mcp server that reads from stdin and writes to stdout.
It also uses:
<dependency>
<groupId>io.quarkiverse.backstage</groupId>
<artifactId>quarkus-backstage</artifactId>
<version>0.4.1</version>
</dependency>
For talking to the Backstage API.
The implementation
The implementation is pretty straight forward, as there is a tiny file needed: [[src/main/java/org/acme/Backstage.java]]
Setting up goose
Goose is an local AI agent that runs as an interactive shell and is supports plugins (including mcp servers).
To setup goose so that it uses this mcp server add the followng extension to your config.yaml:
quarkus-backstage-mcp:
args:
- --quiet
- /home/iocanel/demo/backstage-mcp/target/quarkus-app/quarkus-run.jar
cmd: jbang
enabled: true
envs: {}
name: quarkus-backstage-mcp
type: stdio
Sample prompts
Listing the templates
list all the available backstage templates
Instantiating a template
To instantiate a template one needs values.yaml file containing the template parameters to use. The default values can be extracted from the template using the backstage CLI:
quarkus backstage template info --show-default-values <template name>
The output can be saved to a file, say values.yaml and then used to instantiate the template from a goose session:
create a new project from template <template name> using values from values.yaml
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.