Portal supports integration with third-party MCP (Model Context Protocol) servers to extend the tools available to AI agents beyond built-in Portal capabilities. These servers can be added to your Software Catalog and then manually enabled by users.Documentation Index
Fetch the complete documentation index at: https://backstage.spotify.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Adding MCP Servers to the Catalog
MCP servers can be made available by adding them to the Software Catalog as API entities with specific configuration.Example: Unauthenticated MCP Server
Here’s an example YAML file for an unauthenticated MCP server. Adding this entity makes the MCP server available to AI agents:This example shows an unauthenticated MCP server. For authenticated servers,
see the Configuring Authentication for MCP
Servers section below.
Schema Requirements
To register an MCP server, create a catalog entity with:- Valid API Entity: Must be a valid API entity according to Backstage OSS
- Entity Type: Set
kind: APIandspec.type: mcp-serverin the catalog entity - Required Annotation: Add
mcp.spotify.com/schema-version: '2025-09-29'to specify the schema version - Definition Field: YAML-formatted string containing the required fields below
Schema SpecificationThe MCP server definition must adhere to the Model Context Protocol (MCP) server configuration schema. Portal currently supports schema version
2025-09-29, which is the latest MCP schema specification.Required Fields in definition
| Field | Type | Description |
|---|---|---|
name | string | Namespaced identifier for the MCP server (e.g., “com.spotify/example-mcp”) |
description | string | Human-readable description of the server’s capabilities |
version | string | Semantic version number (e.g., “0.0.1”) |
remotes | array | Connection endpoints for the MCP server. If both streamable-http and sse are specified, streamable-http will be preferred |
remotes[].type | string | Transport protocol: "streamable-http" (HTTP streaming, preferred) or "sse" (Server-Sent Events) |
remotes[].url | string | Full URL endpoint for the MCP server |
MCP servers registered in the catalog with
type: mcp-server and
spec.lifecycle: production are available for selection. Users must manually
enable the servers they want to use.Configuring Authentication for MCP Servers
MCP servers can be configured with authentication to access protected external services. This allows AI agents to securely interact with third-party APIs on behalf of users.Prerequisites
Before configuring authentication for an MCP server:- Backstage OSS Compatibility: Any authentication provider that is compatible with Backstage OSS can be used, including custom providers or community-contributed providers
- Authentication Provider Must Be Installed: The required authentication provider must be pre-installed and configured on your Portal instance
Common Authentication Providers
Portal supports any Backstage OSS-compatible authentication provider for MCP servers. The following are commonly used providers:- Auth0
- Atlassian
- AWS ALB
- Azure
- Azure Easy Auth
- Bitbucket
- Bitbucket Server
- Cloudflare Access
- GitHub
- GitLab
- Google IAP
- Guest
- Okta
- OAuth 2 Custom Proxy
- OneLogin
- VMware Cloud
Configuring Authentication Annotations
Portal supports two authentication methods for MCP servers:1. External OAuth Provider Authentication
For external MCP servers that require OAuth authentication, add these annotations:| Annotation | Required | Description | Example |
|---|---|---|---|
mcp.spotify.com/auth-api-id | Yes | The authentication provider API ID specified in the auth provider source code | core.auth.github |
mcp.spotify.com/auth-scopes | No | JSON array of OAuth scopes required by the MCP server | ["repo","read:org"] |
- Tokens are automatically obtained from the configured provider on behalf of the user
- Tokens are injected as Bearer tokens in the
Authorizationheader for all requests to the MCP server
2. Backend Plugin Authentication
For MCP servers hosted as Backstage backend plugins, use plugin-to-plugin authentication:| Annotation | Required | Description | Example |
|---|---|---|---|
mcp.spotify.com/auth-plugin-id | Yes | The plugin ID of the backend plugin hosting the MCP server | mcp-actions |
- The MCP server URL should point to your Portal instance (e.g.,
https://your-portal.spotifyportal.com/api/mcp-actions/v1) - Authentication tokens are obtained automatically using Backstage’s plugin-to-plugin authentication
- Bearer tokens are automatically injected in the
Authorizationheader
You can only use one authentication method per MCP server - either OAuth
provider authentication or backend plugin authentication, not both.
Example: GitHub MCP Server with OAuth Authentication
Example: Backend Plugin MCP Server with Plugin Authentication
This example is for demonstration purposes. The
mcp-actions server is
automatically registered in Portal and does not need to be manually installed.Using Third-Party MCP Servers
Once enabled, MCP servers can be used in AI agent conversations.Server Selection and Management
Users can select which MCP servers to enable through the Portal MCP Servers dialog. Click “Add server” to choose from available catalog entries:
Server Use
Users simply ask questions in plain English. AI agents automatically select and use relevant enabled MCP servers to provide comprehensive answers. Example: Code Search Request When a user asks: “Please search for TypeScript files that define Backstage plugins”