feat(mcp-actions): Add the ability to configure different plugins for different servers (#33235)

* feat: split MCP actions into per-plugin servers

Add mcpActions.servers config to create multiple MCP server endpoints
scoped by plugin source, with per-server include/exclude filtering.
Add mcpActions.tools for global tool description overrides.

Signed-off-by: benjdlambert <ben@blam.sh>

* feat: namespace tool names, use filter rules for server scoping

- Tool names now use action ID (plugin:name) by default, opt out
  via mcpActions.namespacedToolNames
- Removed pluginSources from server config, use filter.include
  with id glob patterns instead
- Removed tool description overrides (deferred to followup)
- Added server key validation for route safety

Signed-off-by: benjdlambert <ben@blam.sh>

* docs: update README for filter-based server scoping

Signed-off-by: benjdlambert <ben@blam.sh>

* feat: drop SSE routes for split servers

Signed-off-by: benjdlambert <ben@blam.sh>

* fix: handle empty servers config, fix test name

Signed-off-by: benjdlambert <ben@blam.sh>

---------

Signed-off-by: benjdlambert <ben@blam.sh>
This commit is contained in:
Ben Lambert
2026-03-10 11:28:31 +01:00
committed by GitHub
parent 64073a4290
commit c74b69788e
12 changed files with 881 additions and 39 deletions
+2
View File
@@ -6272,6 +6272,7 @@ __metadata:
"@backstage/backend-test-utils": "workspace:^"
"@backstage/catalog-client": "workspace:^"
"@backstage/cli": "workspace:^"
"@backstage/config": "workspace:^"
"@backstage/errors": "workspace:^"
"@backstage/plugin-catalog-node": "workspace:^"
"@backstage/types": "workspace:^"
@@ -6281,6 +6282,7 @@ __metadata:
"@types/supertest": "npm:^2.0.8"
express: "npm:^4.22.0"
express-promise-router: "npm:^4.1.0"
minimatch: "npm:^10.2.1"
supertest: "npm:^7.0.0"
zod: "npm:^3.25.76"
languageName: unknown