Skip to main content
Portal plugin developers can expose their plugin’s capabilities as MCP tools by registering them with the Actions Registry. Once registered, tools are automatically available to any connected AI agent (AiKA, Claude Code, Cursor, etc.) through the MCP Actions Backend.

How to register a tool

Step 1: Register with the Actions Registry

In your plugin backend, inject the actionsRegistry service and register your tool during initialization:
plugins/my-plugin-backend/src/plugin.ts

Step 2: Add your plugin to the configuration

Navigate to App Settings > Actions > Plugin sources to configure the plugin sources for loading your actions.
Custom Tools in Plugins
That’s it. The MCP Actions Backend discovers your registered tools and exposes them to agents.

Writing effective tool descriptions

AI agents select tools based on their name and description. Good descriptions are critical:
  • Be specific. “Retrieve detailed information about a specific entity in the software catalog” is better than “Get entity”.
  • Describe what it returns, not just what it does. Agents need to know if a tool will answer their question.
  • Use plain language. Descriptions are read by LLMs, not parsed by machines.
  • Describe parameter schemas clearly. Use .describe() on Zod fields so agents know what to pass.

Permissions

The Actions Registry does not automatically enforce permissions. Each tool is responsible for checking authorization in its action handler:
Write tools must include permission checks. Read tools should include them if the data is access-controlled. See the Backstage Permissions documentation for details on defining and enforcing permissions.

Error handling

Use errors from @backstage/errors so agents receive meaningful feedback:
  • NotAllowedError — permission denied
  • NotFoundError — resource not found
  • InputError — invalid parameters