From 9b484468649ecdc92440b0eac55b6bfa6d626c80 Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Fri, 13 Mar 2026 16:38:16 -0500 Subject: [PATCH 1/9] Added new AI section Co-authored-by: Nawaraj Signed-off-by: Andre Wanlin --- docs/ai/index.md | 256 ++++++++++++++++++++++++++++++++++ docs/ai/well-known-actions.md | 29 ++++ microsite/sidebars.ts | 8 ++ 3 files changed, 293 insertions(+) create mode 100644 docs/ai/index.md create mode 100644 docs/ai/well-known-actions.md diff --git a/docs/ai/index.md b/docs/ai/index.md new file mode 100644 index 0000000000..f8ac68c438 --- /dev/null +++ b/docs/ai/index.md @@ -0,0 +1,256 @@ +--- +id: index +title: MCP Actions Backend +description: The MCP Actions Backend exposes actions registered with the Actions Registry as MCP tools. +--- + +The MCP Actions Backend exposes [Actions](../backend-system/core-services/actions.md) registered with the [Actions Registry](../../backend-system/core-services/actions-registry.md) as MCP tools. + +## Installation + +This plugin is installed via the `@backstage/plugin-mcp-actions-backend` package. To add it to your backend package, run the following command: + +```bash title="From your root directory" +yarn --cwd packages/backend add @backstage/plugin-mcp-actions-backend +``` + +Then add the plugin to your backend: + +```ts title="packages/backend/src/index.ts" +const backend = createBackend(); +// ... +backend.add(import('@backstage/plugin-mcp-actions-backend')); +// ... +backend.start(); +``` + +## Actions Configuration + +Make sure to provide the list of plugins from which you want exposed as MCP tools by populating the `pluginSources` configuration: + +```yaml +backend: + actions: + pluginSources: + - 'catalog' + - 'my-custom-plugin' +``` + +For details on filtering actions, see the [Filtering actions documentation](../backend-system/core-services/actions.md#filtering-actions). + +## Single MCP Sever Name & Description + +You can configure the name and description of the MCP Actions server with the following config for a single server, see Multiple MCP Server: + +```yaml title="app-config.yaml +mcpActions: + name: 'My MCP Server' # defaults to "backstage" + description: 'Tools for interacting with My MCP Server' # optional +``` + +## Namespaced Tool Names + +By default, MCP tool names include the plugin ID prefix to avoid collisions across plugins. For example, an action registered as `greet-user` by `my-custom-plugin` is exposed as `my-custom-plugin.greet-user`. + +You can disable this if you need the short names for backward compatibility: + +```yaml title="app-config.yaml +mcpActions: + namespacedToolNames: false +``` + +## Multiple MCP Servers + +By default, the plugin serves a single MCP server at `/api/mcp-actions/v1` that exposes all available actions. You can split actions into multiple focused servers by configuring `mcpActions.servers`, where each key becomes a separate MCP server endpoint. + +```yaml title="app-config.yaml +mcpActions: + servers: + catalog: + name: 'Backstage Catalog' + description: 'Tools for interacting with the software catalog' + filter: + include: + - id: 'catalog:*' + scaffolder: + name: 'Backstage Scaffolder' + description: 'Tools for creating new software from templates' + filter: + include: + - id: 'scaffolder:*' +``` + +This creates two MCP server endpoints: + +- `http://localhost:7007/api/mcp-actions/v1/catalog` +- `http://localhost:7007/api/mcp-actions/v1/scaffolder` + +Each server uses include filter rules with glob patterns on action IDs to control which actions are exposed. For example, `id: 'catalog:*'` matches all actions registered by the catalog plugin. + +When `mcpActions.servers` is not configured, the plugin behaves exactly as before with a single server at `/api/mcp-actions/v1`. + +### Filter Rules + +Include and exclude filter rules support glob patterns on action IDs and attribute matching. Exclude rules take precedence over include rules. When include rules are specified, actions must match at least one include rule to be exposed. + +```yaml title="app-config.yaml +mcpActions: + servers: + catalog: + name: 'Backstage Catalog' + filter: + include: + - id: 'catalog:*' + exclude: + - attributes: + destructive: true +``` + +## Authentication Configuration + +By default, the Backstage backend requires authentication for all requests. + +### External Access with Static Tokens + +:::warning +This is meant to be a temporary workaround until device authentication is completed. +::: + +Configure external access with static tokens in your app configuration: + +```yaml title="app-config.yaml +backend: + auth: + externalAccess: + - type: static + options: + token: ${MCP_TOKEN} + subject: mcp-clients + accessRestrictions: + - plugin: mcp-actions + - plugin: catalog +``` + +Generate a secure token: + +```bash +node -p 'require("crypto").randomBytes(24).toString("base64")' +``` + +Set the `MCP_TOKEN` environment variable and configure your MCP client to send: + +```http +Authorization: Bearer +``` + +For more details about external access tokens and service-to-service authentication, see the +[Service-to-Service Auth documentation](../auth/service-to-service-auth.md). + +### Experimental: Dynamic Client Registration + +:::warning +This feature is highly experimental and only works with the New Frontend System. Proceed with caution. +::: + +You can configure the auth-backend and install the auth frontend plugin to enable **Dynamic Client Registration** with MCP clients. This means you do not need to manually configure a token in your MCP client settings. Instead, a client can request a token on your behalf. When adding the MCP server to an MCP client like Cursor or Claude, a popup requiring your approval will open in your Backstage instance (powered by the auth plugin). + +**Requirements:** + +- The `@backstage/plugin-auth-backend` plugin must be configured. +- The new `@backstage/plugin-auth` frontend plugin must be configured. + +**Installation:** + +1. Install the `@backstage/plugin-auth` frontend plugin: + + ```bash + yarn --cwd packages/app add @backstage/plugin-auth + ``` + +2. If you use [feature discovery](../frontend-system/architecture/10-app.md#feature-discovery) the plugin will be added automatically, if you prefer explicit registration, register the plugin as a feature like this: + + ```tsx title="packages/app/src/App.tsx" + import authPlugin from '@backstage/plugin-auth'; + + const app = createApp({ + features: [ + // ...other features + authPlugin, + ], + }); + ``` + +3. Enable the feature: + + ```yaml title="app-config.yaml" + auth: + experimentalDynamicClientRegistration: + enabled: true + + # Optional: limit valid callback URLs for added security + allowedRedirectUriPatterns: + - cursor://* + ``` + +## Configuring MCP Clients + +The MCP server supports both **Server-Sent Events (SSE)** and **Streamable HTTP** protocols. + +:::warning +The SSE protocol is deprecated and will be removed in a future release. +::: + +### Endpoints + +- **Streamable HTTP:** `http://localhost:7007/api/mcp-actions/v1` +- **SSE (deprecated):** `http://localhost:7007/api/mcp-actions/v1/sse` + +```json +{ + "mcpServers": { + "backstage-actions": { + "url": "http://localhost:7007/api/mcp-actions/v1", + "headers": { + "Authorization": "Bearer ${MCP_TOKEN}" + } + } + } +} +``` + +The `${MCP_TOKEN}` environment variable would be an [external access static token](#external-access-with-static-tokens). + +### Multiple Servers + +When `mcpActions.servers` is configured, each server key becomes part of the URL. For example, with servers named `catalog` and `scaffolder`: + +- `http://localhost:7007/api/mcp-actions/v1/catalog` +- `http://localhost:7007/api/mcp-actions/v1/scaffolder` + +```json +{ + "mcpServers": { + "backstage-catalog": { + "url": "http://localhost:7007/api/mcp-actions/v1/catalog", + "headers": { + "Authorization": "Bearer ${MCP_TOKEN}" + } + }, + "backstage-scaffolder": { + "url": "http://localhost:7007/api/mcp-actions/v1/scaffolder", + "headers": { + "Authorization": "Bearer ${MCP_TOKEN}" + } + } + } +} +``` + +## Metrics + +The MCP Actions Backend emits metrics for the following operations: + +- `mcp.server.operation.duration`: The duration taken to process an individual MCP operation +- `mcp.server.session.duration`: The duration of the MCP session from the perspective of the server + +See the [OpenTelemetry tutorial](../tutorials/setup-opentelemetry.md) to learn how to make these metrics available. diff --git a/docs/ai/well-known-actions.md b/docs/ai/well-known-actions.md new file mode 100644 index 0000000000..6788f93548 --- /dev/null +++ b/docs/ai/well-known-actions.md @@ -0,0 +1,29 @@ +--- +id: well-known-actions +title: Well-known Actions +description: This section lists a number of well known actions that are a part of the action registry. +--- + +This section lists a number of well known [Actions](../backend-system/core-services/actions.md) registered with the [Actions Registry](../../backend-system/core-services/actions-registry.md). + +## Actions + +This is a (non-exhaustive) list of actions that are known to be part of the actions registry. Entires are in the format: "`action-name` (Action Title): Shortened Action Description" + +### Auth + +- `who-am-i` (Who Am I): Returns the catalog entity and user info for the currently authenticated user. This action requires user credentials and cannot be used with service or unauthenticated credentials. + +### Catalog + +- `get-catalog-entity` (Get Catalog Entity): This allows you to get a single entity from the software catalog. +- `query-catalog-entities` (Query Catalog Entities): Query entities from the Backstage Software Catalog using predicate filters. +- `register-entity` (Register entity in the Catalog): Registers one or more entities in the Backstage catalog by creating a Location entity that points to a remote `catalog-info.yaml` file. +- `unregister-entity` (Unregister entity from the Catalog): Unregisters a Location entity and all entities it owns from the Backstage catalog. +- `validate-entity` (Validate Catalog Entity): This action can be used to validate `catalog-info.yaml` file contents meant to be used with the software catalog. + +### Scaffolder + +- `dry-run-template` (Dry Run Scaffolder Template): Dry-runs a scaffolder template to validate it without making changes. Returns success with execution logs, or errors for validation failures. +- `list-scaffolder-actions` (List Scaffolder Actions): Lists all installed Scaffolder actions. +- `list-scaffolder-tasks` (List Scaffolder Tasks): This allows you to list scaffolder tasks that have been created. diff --git a/microsite/sidebars.ts b/microsite/sidebars.ts index 7e4e41591b..f6e5b23b29 100644 --- a/microsite/sidebars.ts +++ b/microsite/sidebars.ts @@ -113,6 +113,14 @@ export default { description: 'Features powering the core of Backstage.', }, [ + sidebarElementWithIndex( + { + label: 'AI', + description: + 'Features in Backstage you can leverage with your AI tools', + }, + ['ai/index', 'ai/well-known-actions'], + ), sidebarElementWithIndex( { label: 'Auth and Identity', From 5abb339d5705755b0f1139c1bb2c7b7bec1fd39f Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Fri, 13 Mar 2026 16:42:16 -0500 Subject: [PATCH 2/9] Fixed typo Signed-off-by: Andre Wanlin --- docs/ai/well-known-actions.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ai/well-known-actions.md b/docs/ai/well-known-actions.md index 6788f93548..eda490c77c 100644 --- a/docs/ai/well-known-actions.md +++ b/docs/ai/well-known-actions.md @@ -8,7 +8,7 @@ This section lists a number of well known [Actions](../backend-system/core-servi ## Actions -This is a (non-exhaustive) list of actions that are known to be part of the actions registry. Entires are in the format: "`action-name` (Action Title): Shortened Action Description" +This is a (non-exhaustive) list of actions that are known to be part of the actions registry. Entries are in the format: "`action-name` (Action Title): Shortened Action Description" ### Auth From f3a91009324c24f574041ec60b4285bb45465ba1 Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Fri, 13 Mar 2026 16:47:40 -0500 Subject: [PATCH 3/9] Feedback corrections Signed-off-by: Andre Wanlin --- docs/ai/index.md | 16 ++++++++-------- docs/ai/well-known-actions.md | 2 +- microsite/sidebars.ts | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/ai/index.md b/docs/ai/index.md index f8ac68c438..b6f87e22cd 100644 --- a/docs/ai/index.md +++ b/docs/ai/index.md @@ -4,7 +4,7 @@ title: MCP Actions Backend description: The MCP Actions Backend exposes actions registered with the Actions Registry as MCP tools. --- -The MCP Actions Backend exposes [Actions](../backend-system/core-services/actions.md) registered with the [Actions Registry](../../backend-system/core-services/actions-registry.md) as MCP tools. +The MCP Actions Backend exposes [Actions](../backend-system/core-services/actions.md) registered with the [Actions Registry](../backend-system/core-services/actions-registry.md) as MCP tools. ## Installation @@ -38,11 +38,11 @@ backend: For details on filtering actions, see the [Filtering actions documentation](../backend-system/core-services/actions.md#filtering-actions). -## Single MCP Sever Name & Description +## Single MCP Server Name & Description -You can configure the name and description of the MCP Actions server with the following config for a single server, see Multiple MCP Server: +You can configure the name and description of the MCP Actions server with the following config for a single server: -```yaml title="app-config.yaml +```yaml title="app-config.yaml" mcpActions: name: 'My MCP Server' # defaults to "backstage" description: 'Tools for interacting with My MCP Server' # optional @@ -54,7 +54,7 @@ By default, MCP tool names include the plugin ID prefix to avoid collisions acro You can disable this if you need the short names for backward compatibility: -```yaml title="app-config.yaml +```yaml title="app-config.yaml" mcpActions: namespacedToolNames: false ``` @@ -63,7 +63,7 @@ mcpActions: By default, the plugin serves a single MCP server at `/api/mcp-actions/v1` that exposes all available actions. You can split actions into multiple focused servers by configuring `mcpActions.servers`, where each key becomes a separate MCP server endpoint. -```yaml title="app-config.yaml +```yaml title="app-config.yaml" mcpActions: servers: catalog: @@ -93,7 +93,7 @@ When `mcpActions.servers` is not configured, the plugin behaves exactly as befor Include and exclude filter rules support glob patterns on action IDs and attribute matching. Exclude rules take precedence over include rules. When include rules are specified, actions must match at least one include rule to be exposed. -```yaml title="app-config.yaml +```yaml title="app-config.yaml" mcpActions: servers: catalog: @@ -118,7 +118,7 @@ This is meant to be a temporary workaround until device authentication is comple Configure external access with static tokens in your app configuration: -```yaml title="app-config.yaml +```yaml title="app-config.yaml" backend: auth: externalAccess: diff --git a/docs/ai/well-known-actions.md b/docs/ai/well-known-actions.md index eda490c77c..50a5d6404c 100644 --- a/docs/ai/well-known-actions.md +++ b/docs/ai/well-known-actions.md @@ -4,7 +4,7 @@ title: Well-known Actions description: This section lists a number of well known actions that are a part of the action registry. --- -This section lists a number of well known [Actions](../backend-system/core-services/actions.md) registered with the [Actions Registry](../../backend-system/core-services/actions-registry.md). +This section lists a number of well known [Actions](../backend-system/core-services/actions.md) registered with the [Actions Registry](../backend-system/core-services/actions-registry.md). ## Actions diff --git a/microsite/sidebars.ts b/microsite/sidebars.ts index f6e5b23b29..25e470f949 100644 --- a/microsite/sidebars.ts +++ b/microsite/sidebars.ts @@ -117,7 +117,7 @@ export default { { label: 'AI', description: - 'Features in Backstage you can leverage with your AI tools', + 'Features in Backstage you can leverage with your AI tools.', }, ['ai/index', 'ai/well-known-actions'], ), From 8aebd31e345e8c75f89918016f4944bc8d91fb27 Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Fri, 13 Mar 2026 17:02:42 -0500 Subject: [PATCH 4/9] Minor adjustments Signed-off-by: Andre Wanlin --- docs/ai/well-known-actions.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/ai/well-known-actions.md b/docs/ai/well-known-actions.md index 50a5d6404c..14039214d4 100644 --- a/docs/ai/well-known-actions.md +++ b/docs/ai/well-known-actions.md @@ -1,29 +1,29 @@ --- id: well-known-actions title: Well-known Actions -description: This section lists a number of well known actions that are a part of the action registry. +description: This section lists a number of well-known actions that are part of the Actions Registry. --- -This section lists a number of well known [Actions](../backend-system/core-services/actions.md) registered with the [Actions Registry](../backend-system/core-services/actions-registry.md). +This section lists a number of well-known [Actions](../backend-system/core-services/actions.md) registered with the [Actions Registry](../backend-system/core-services/actions-registry.md). ## Actions -This is a (non-exhaustive) list of actions that are known to be part of the actions registry. Entries are in the format: "`action-name` (Action Title): Shortened Action Description" +This is a (non-exhaustive) list of actions that are known to be part of the Actions Registry. Entries are in the format: "`action-name` (Action Title): Shortened Action Description" ### Auth -- `who-am-i` (Who Am I): Returns the catalog entity and user info for the currently authenticated user. This action requires user credentials and cannot be used with service or unauthenticated credentials. +- `auth.who-am-i` (Who Am I): Returns the catalog entity and user info for the currently authenticated user. This action requires user credentials and cannot be used with service or unauthenticated credentials. ### Catalog -- `get-catalog-entity` (Get Catalog Entity): This allows you to get a single entity from the software catalog. -- `query-catalog-entities` (Query Catalog Entities): Query entities from the Backstage Software Catalog using predicate filters. -- `register-entity` (Register entity in the Catalog): Registers one or more entities in the Backstage catalog by creating a Location entity that points to a remote `catalog-info.yaml` file. -- `unregister-entity` (Unregister entity from the Catalog): Unregisters a Location entity and all entities it owns from the Backstage catalog. -- `validate-entity` (Validate Catalog Entity): This action can be used to validate `catalog-info.yaml` file contents meant to be used with the software catalog. +- `catalog.get-catalog-entity` (Get Catalog Entity): This allows you to get a single entity from the software catalog. +- `catalog.query-catalog-entities` (Query Catalog Entities): Query entities from the Backstage Software Catalog using predicate filters. +- `catalog.register-entity` (Register entity in the Catalog): Registers one or more entities in the Backstage catalog by creating a Location entity that points to a remote `catalog-info.yaml` file. +- `catalog.unregister-entity` (Unregister entity from the Catalog): Unregisters a Location entity and all entities it owns from the Backstage catalog. +- `catalog.validate-entity` (Validate Catalog Entity): This action can be used to validate `catalog-info.yaml` file contents meant to be used with the software catalog. ### Scaffolder -- `dry-run-template` (Dry Run Scaffolder Template): Dry-runs a scaffolder template to validate it without making changes. Returns success with execution logs, or errors for validation failures. -- `list-scaffolder-actions` (List Scaffolder Actions): Lists all installed Scaffolder actions. -- `list-scaffolder-tasks` (List Scaffolder Tasks): This allows you to list scaffolder tasks that have been created. +- `scaffolder.dry-run-template` (Dry Run Scaffolder Template): Dry-runs a scaffolder template to validate it without making changes. Returns success with execution logs, or errors for validation failures. +- `scaffolder.list-scaffolder-actions` (List Scaffolder Actions): Lists all installed Scaffolder actions. +- `scaffolder.list-scaffolder-tasks` (List Scaffolder Tasks): This allows you to list scaffolder tasks that have been created. From 8c19ddbadfda49d4098e45e3dec9c673caa88763 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Fri, 13 Mar 2026 17:56:04 -0500 Subject: [PATCH 5/9] Update docs/ai/index.md Co-authored-by: Aramis Sennyey <159921952+aramissennyeydd@users.noreply.github.com> Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- docs/ai/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ai/index.md b/docs/ai/index.md index b6f87e22cd..535a322f4a 100644 --- a/docs/ai/index.md +++ b/docs/ai/index.md @@ -36,7 +36,7 @@ backend: - 'my-custom-plugin' ``` -For details on filtering actions, see the [Filtering actions documentation](../backend-system/core-services/actions.md#filtering-actions). +For details on filtering actions, see the [filtering actions documentation](../backend-system/core-services/actions.md#filtering-actions). ## Single MCP Server Name & Description From 34d53159918293f6a19de52bd5d93966e0723cb2 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Fri, 13 Mar 2026 17:56:30 -0500 Subject: [PATCH 6/9] Update docs/ai/index.md Co-authored-by: Aramis Sennyey <159921952+aramissennyeydd@users.noreply.github.com> Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- docs/ai/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ai/index.md b/docs/ai/index.md index 535a322f4a..d45b0f9ba8 100644 --- a/docs/ai/index.md +++ b/docs/ai/index.md @@ -26,7 +26,7 @@ backend.start(); ## Actions Configuration -Make sure to provide the list of plugins from which you want exposed as MCP tools by populating the `pluginSources` configuration: +Populate the `pluginSources` configuration with the list of plugins you want exposed as MCP tools like so: ```yaml backend: From a148a319df2a961c811af66d855b191e0121d2f0 Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Fri, 13 Mar 2026 17:56:43 -0500 Subject: [PATCH 7/9] Update docs/ai/index.md Co-authored-by: Aramis Sennyey <159921952+aramissennyeydd@users.noreply.github.com> Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- docs/ai/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ai/index.md b/docs/ai/index.md index d45b0f9ba8..111f11d265 100644 --- a/docs/ai/index.md +++ b/docs/ai/index.md @@ -14,7 +14,7 @@ This plugin is installed via the `@backstage/plugin-mcp-actions-backend` package yarn --cwd packages/backend add @backstage/plugin-mcp-actions-backend ``` -Then add the plugin to your backend: +Then, add the plugin to your backend: ```ts title="packages/backend/src/index.ts" const backend = createBackend(); From e4cd6aad707b8a91c82e824f25bc46e4b7d864bb Mon Sep 17 00:00:00 2001 From: Andre Wanlin <67169551+awanlin@users.noreply.github.com> Date: Fri, 13 Mar 2026 17:57:09 -0500 Subject: [PATCH 8/9] Update docs/ai/index.md Co-authored-by: Aramis Sennyey <159921952+aramissennyeydd@users.noreply.github.com> Signed-off-by: Andre Wanlin <67169551+awanlin@users.noreply.github.com> --- docs/ai/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/ai/index.md b/docs/ai/index.md index 111f11d265..e973456988 100644 --- a/docs/ai/index.md +++ b/docs/ai/index.md @@ -40,7 +40,7 @@ For details on filtering actions, see the [filtering actions documentation](../b ## Single MCP Server Name & Description -You can configure the name and description of the MCP Actions server with the following config for a single server: +You can configure the name and description of your Backstage MCP server with the following config: ```yaml title="app-config.yaml" mcpActions: From 52fba1c57e5516ba22ba521494201a7a560b6a9b Mon Sep 17 00:00:00 2001 From: Andre Wanlin Date: Fri, 13 Mar 2026 17:59:21 -0500 Subject: [PATCH 9/9] Review feedback Signed-off-by: Andre Wanlin --- docs/ai/{index.md => mcp-actions.md} | 2 +- microsite/sidebars.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename docs/ai/{index.md => mcp-actions.md} (99%) diff --git a/docs/ai/index.md b/docs/ai/mcp-actions.md similarity index 99% rename from docs/ai/index.md rename to docs/ai/mcp-actions.md index e973456988..498cd42df2 100644 --- a/docs/ai/index.md +++ b/docs/ai/mcp-actions.md @@ -1,5 +1,5 @@ --- -id: index +id: mcp-actions title: MCP Actions Backend description: The MCP Actions Backend exposes actions registered with the Actions Registry as MCP tools. --- diff --git a/microsite/sidebars.ts b/microsite/sidebars.ts index 25e470f949..9e56faac21 100644 --- a/microsite/sidebars.ts +++ b/microsite/sidebars.ts @@ -119,7 +119,7 @@ export default { description: 'Features in Backstage you can leverage with your AI tools.', }, - ['ai/index', 'ai/well-known-actions'], + ['ai/mcp-actions', 'ai/well-known-actions'], ), sidebarElementWithIndex( {