Skip to main content
Glama

get_plugin_development_guide

Access detailed guides for developing Backstage plugins, covering setup, structure, APIs, testing, and best practices to build custom extensions.

Instructions

Get detailed guide for developing Backstage plugins including setup, structure, and best practices

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
topicNoSpecific topic to retrieve (optional)

Implementation Reference

  • The core handler function that implements the 'get_plugin_development_guide' tool logic. It fetches the relevant content from the plugin development knowledge base based on the optional topic parameter and returns it as a MCP-formatted text response containing JSON.
    private getPluginDevelopmentGuide(topic?: string) { const content = topic ? this.knowledgeBase.pluginDev.content[topic] : this.knowledgeBase.pluginDev.content; return { content: [ { type: 'text', text: JSON.stringify(content, null, 2), }, ], }; }
  • src/index.ts:64-77 (registration)
    Tool registration in the ListTools response, defining the tool's name, description, and input schema.
    { name: 'get_plugin_development_guide', description: 'Get detailed guide for developing Backstage plugins including setup, structure, and best practices', inputSchema: { type: 'object', properties: { topic: { type: 'string', description: 'Specific topic to retrieve (optional)', enum: ['overview', 'gettingStarted', 'pluginStructure', 'commonPatterns', 'apis', 'testing', 'deployment', 'bestPractices'] } } } },
  • Input schema for the tool, defining the optional 'topic' parameter with allowed values.
    inputSchema: { type: 'object', properties: { topic: { type: 'string', description: 'Specific topic to retrieve (optional)', enum: ['overview', 'gettingStarted', 'pluginStructure', 'commonPatterns', 'apis', 'testing', 'deployment', 'bestPractices'] } } }
  • Helper data structure providing the content for the plugin development guide, referenced by the handler as this.knowledgeBase.pluginDev.
    export const pluginDevelopment = { title: "Backstage Plugin Development Guide", description: "Complete guide for developing custom Backstage plugins", content: { overview: { definition: "Plugins are the primary way to extend Backstage functionality", architecture: "Frontend and backend components that integrate seamlessly with Backstage core", types: ["Frontend plugins", "Backend plugins", "Full-stack plugins", "Common libraries"] }, gettingStarted: { prerequisites: [ "Node.js 18+ and Yarn", "Basic knowledge of React and TypeScript", "Understanding of Backstage architecture", "Access to Backstage development environment" ], scaffolding: { command: "yarn create @backstage/plugin", options: [ "--backend (for backend plugins)", "--frontend (for frontend plugins)", "--common (for shared libraries)" ] } }, pluginStructure: { frontend: { structure: [ "src/components/ - React components", "src/hooks/ - Custom React hooks", "src/api/ - API client definitions", "src/routes.ts - Plugin routes", "src/plugin.ts - Plugin definition" ], key_files: { "plugin.ts": "Main plugin definition and registration", "routes.ts": "Route definitions for the plugin", "index.ts": "Public API exports" } }, backend: { structure: [ "src/service/ - Business logic", "src/database/ - Database interactions", "src/api/ - REST API endpoints", "src/plugin.ts - Plugin registration" ], key_files: { "plugin.ts": "Backend plugin definition", "router.ts": "Express router configuration", "database.ts": "Database schema and operations" } } }, commonPatterns: { entityProvider: "For adding entities to the software catalog", processor: "For processing catalog entities", scaffolder_actions: "For custom scaffolding actions", search_collators: "For indexing content in Backstage search", permission_policies: "For custom authorization rules" }, apis: { catalog_api: "Access and modify catalog entities", scaffolder_api: "Trigger and manage scaffolding operations", techdocs_api: "Access documentation", auth_api: "Handle authentication and authorization", config_api: "Access configuration values" }, testing: { unit_tests: "Jest for component and service testing", integration_tests: "Testing with Backstage test utilities", e2e_tests: "Playwright for end-to-end testing" }, deployment: { local_development: "yarn dev for local testing", packaging: "npm publish for distribution", installation: "yarn add in target Backstage instance" }, bestPractices: [ "Follow Backstage design system", "Use TypeScript for type safety", "Implement proper error handling", "Add comprehensive documentation", "Follow semantic versioning", "Include unit and integration tests", "Use Backstage APIs consistently", "Handle permissions properly" ] } };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/PawelWaj/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server