mcp-developer-portal
Provides tools for querying the service catalog, fetching TechDocs, looking up ownership, exploring dependency graphs, and scaffolding new services from golden-path templates via Backstage.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-developer-portalsearch catalog for payment-service"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-developer-portal
MCP server wrapping Backstage — query service catalog, fetch TechDocs, and scaffold services via AI agents.
Overview
mcp-developer-portal is a Model Context Protocol server that exposes your
Backstage internal developer portal to AI agents. It enables LLMs to query
the service catalog, fetch TechDocs documentation, look up ownership, explore
dependency graphs, and scaffold new services from golden-path templates.
Built for platform engineering teams in regulated financial services and manufacturing who use Backstage as their engineering system of record.
Related MCP server: jt-mcp-server
Tools exposed
Tool | Description |
| Search the Backstage catalog by name, kind, or owner |
| Get full details for a catalog entity |
| Fetch TechDocs documentation for an entity |
| Look up who owns a service or component |
| Get upstream and downstream dependencies |
| Create a new service from a golden-path template |
| List available scaffolding templates |
Quick start
pip install mcp-developer-portal
export BACKSTAGE_URL=https://your-backstage.example.com
export BACKSTAGE_TOKEN=your_backstage_token
mcp-developer-portalConfiguration
Variable | Description | Required |
| Backstage instance URL | Yes |
| Backstage API token | No |
| Industry context (fintech/manufacturing) | No |
Contributing
See CONTRIBUTING.md.
License
Apache 2.0 — see LICENSE.
Available Tools
7 toolsget_dependencies_toolB
Get upstream and downstream dependencies for a service.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| kind | No | Component |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description carries full burden. Only states what it does, not behaviors like read-only nature, error handling, or data freshness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with key action, no unnecessary words. Appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite output schema existing, description lacks usage context, parameter details, and behavioral notes, making it under-informative for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage; description explains 'name' implicitly but does not clarify 'kind' parameter or its default value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the action (get), resource (dependencies), and scope (upstream and downstream for a service). Distinguishes from sibling tools that handle entities, ownership, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites or exclusion criteria mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entity_toolC
Get full details for a catalog entity.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| kind | No | Component | |
| namespace | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description does not disclose any behavioral traits beyond a basic read operation. It omits details on authentication, rate limits, or any side effects, leaving the agent with minimal guidance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, but it is under-specified rather than concise. It does not efficiently convey necessary information, making it inadequate for an agent to fully understand the tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema, the description lacks crucial context about required parameters, the meaning of 'full details', and how it fits among sibling tools. The information provided is insufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 3 parameters with 0% description coverage, and the description does not explain any of them. Despite the baseline for 0 params being 4, parameters exist and must be clarified. The description adds no value beyond the schema's property names and types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Get full details for a catalog entity' clearly states the verb (Get) and resource (full details for a catalog entity). It is specific but does not distinguish itself from sibling tools like get_dependencies_tool or get_ownership_tool, which also operate on catalog entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description lacks any context about prerequisites, exclusions, or scenarios where this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ownership_toolC
Look up who owns a service or component.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| kind | No | Component |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states 'look up' implying read-only, but does not disclose any behavioral traits such as whether the tool returns a single owner or list, or requires specific permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence, which is concise but too brief. It provides the basic purpose but lacks supporting details that could help an agent, resulting in under-specification rather than efficient conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 2 parameters, no annotations, and an output schema (whose structure is unknown to us), the description is insufficient. It covers only the basic purpose and leaves out behavioral context and usage scenarios, making it incomplete for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description should compensate. It mentions 'service or component', which aligns with the 'kind' parameter, but does not elaborate on allowed values or format for either parameter. The parameter names themselves are clear, but the description adds minimal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Look up' and the resource 'ownership of a service or component', which gives a clear purpose. However, it does not differentiate from sibling tools like get_entity_tool, which might also provide ownership info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, exclusions, or context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_techdocs_toolB
Fetch TechDocs documentation for a catalog entity.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| kind | No | Component | |
| namespace | No | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for behavioral disclosure. However, it only states the core function without mentioning any side effects, error conditions, permissions, or limitations (e.g., what happens if the entity does not exist or has no TechDocs). This is insufficient for safe usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that immediately conveys the tool's purpose. It is front-loaded and contains no unnecessary words or structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a minimal but adequate statement of the tool's function. Given the existence of an output schema, the description does not need to detail return values. However, it lacks explanation of parameter roles and defaults (e.g., 'kind' defaults to 'Component'), which is important for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, meaning the schema itself provides no explanations. The description does not elaborate on the parameters; it only implies that the 'catalog entity' is identified by the parameters. The agent cannot infer the meaning of 'name', 'kind', or 'namespace' or their defaults from the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Fetch TechDocs documentation for a catalog entity' clearly states the action (Fetch), the resource (TechDocs documentation), and the target (catalog entity). It is specific and distinguishes this tool from siblings like get_entity_tool or search_catalog_tool, which deal with different aspects of catalog entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no mentions of prerequisites or conditions, and no exclusions. The agent is left without context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_templates_toolA
List available golden-path scaffolding templates.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, and the description does not disclose any behavioral traits (e.g., read-only, network calls). The minimal description leaves the agent unaware of safety implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise—single sentence with no wasted words. Front-loaded with the purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple list tool with no parameters and an output schema, but lacks usage context relative to siblings and any behavioral detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the schema fully covers them. Description adds no extra meaning, but baseline for 0 parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'golden-path scaffolding templates', distinguishing it from siblings like search_catalog_tool and scaffold_service_tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like search_catalog_tool, and no mention of prerequisites or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scaffold_service_toolC
Scaffold a new service from a golden-path template.
| Name | Required | Description | Default |
|---|---|---|---|
| template_name | Yes | ||
| service_name | Yes | ||
| owner | Yes | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description must disclose behavioral traits like side effects, permissions, or rate limits. It only says 'scaffold a new service' without explaining what that entails (e.g., file creation, configuration). Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that identifies the main action. It is appropriately front-loaded and not verbose, though it sacrifices detail for brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and 0% schema coverage, the description leaves out critical context such as return values, prerequisites (e.g., template existence), and post-conditions. An output schema exists but is not leveraged by the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds no meaning to the parameters. The four parameters (template_name, service_name, owner, description) are not explained beyond their names. The description's mention of 'golden-path template' only hints at template_name.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (scaffold) and the resource (new service), specifying it's from a golden-path template. This is a specific verb+resource combination that distinguishes it from sibling tools like get_dependencies or list_templates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, prerequisites, or when not to use it. The description only states what it does, leaving the agent with no context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_catalog_toolC
Search the Backstage service catalog by name, kind, or owner.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| kind | No | ||
| owner | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral transparency. It does not disclose whether the tool is read-only, requires authentication, supports pagination, or handles partial matches. The description is too brief to inform an AI agent about side effects or safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that quickly conveys the tool's purpose. However, it lacks structured details (e.g., bullet points for parameters) that would enhance readability without increasing length much.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three optional parameters and an output schema, the description fails to explain search behavior (e.g., whether query is fuzzy, if filters combine with AND/OR). It does not mention the output format or any constraints, leaving significant gaps for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions searching by 'name, kind, or owner,' but the actual parameter 'query' is not explicitly linked to 'name.' The mapping between description terms and schema parameters is incomplete and potentially misleading. Schema coverage is 0%, so the description should clarify each parameter's role, but it does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches the Backstage service catalog, specifying three searchable fields. It distinguishes itself from sibling tools like get_entity_tool (single entity retrieval) but does not explicitly contrast with other search-like tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_entity_tool for single entity lookup, get_ownership_tool for ownership queries). There are no when-not-to-use instructions or prerequisite conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a uniquely defined purpose: dependencies, entity details, ownership, techdocs, templates, scaffolding, and catalog search. No two tools overlap in functionality.
All tool names follow a consistent verb_noun pattern (e.g., get_dependencies_tool, list_templates_tool, scaffold_service_tool), with verbs like get, list, search, and scaffold clearly indicating the action.
Seven tools is a well-scoped set for a developer portal. They cover key operations without being excessive or insufficient for the intended domain.
The tool surface covers essential read operations (get, list, search) and a key write operation (scaffold). Minor gaps exist, such as missing create/update for entities beyond scaffolding, but the core developer portal workflow is well-supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides comprehensive Backstage framework knowledge and development assistance through an MCP server. Enables plugin development, API reference access, code scaffolding, and community resource discovery for Backstage customization.7642MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that equips AI agents with dev workflow tools including GitHub project management, conventional commits, visual regression testing, Jira/Confluence integration, and a persistent memory knowledge graph.21MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that gives LLMs access to up-to-date mobile SDK documentation, package registry info, and GitHub issues.12MIT
- FlicenseNot gradedqualityBmaintenanceMCP server for AI DevTool workflow, exposing tools and resources for code review, repository chat, and repository operations.1
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/brianpelow/mcp-developer-portal'
If you have feedback or need assistance with the MCP directory API, please join our Discord server