MCP server for Backstage platform integration, enabling template listing and project creation
This MCP server exposes only 2 tools with minimal schema documentation and generic descriptions. Both tools lack proper parameter descriptions, output schemas are undocumented, and error handling guidance is absent. Tool naming follows basic conventions (verb_noun) but descriptions are too terse to guide LLM selection. The implementation appears to be a proof-of-concept rather than production-ready.
Create a backstage project using a template
List backstage templates
listTemplates has empty input schema {} with no documentation of output structure. LLMs cannot plan downstream tool calls without knowing what fields will be returned (e.g., will it include template IDs, descriptions, categories?).
Tool descriptions are extremely terse (14-27 chars). 'List backstage templates' and 'Create a backstage project using a template' lack critical context: When should LLMs call these vs alternatives? What are prerequisites? What does the output look like? Baselines show descriptions should be 34-392 chars for context. Current descriptions fall well below the p10 baseline.
createProject parameters 'templateName' and 'valuesFile' have descriptions that are too generic ('Template name', 'Path to parameters file'). Missing: What format is 'valuesFile'? YAML? JSON? TOML? Is it required? What are valid template names? Should the LLM discover them via listTemplates first? These ambiguities force LLMs to guess.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 31 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 32 | - | v1 |
createProject has input schema with basic type info ({'templateName': string, 'valuesFile': string}) but lacks critical constraints: Are these required or optional? What is the maximum length? Are there enums for template names? No minimum/maximum bounds documented. Baselines show 100% of A+ tools have documented constraints.
No output schema documented for either tool. LLMs cannot reason about downstream actions. Does listTemplates return an array? What fields? Does createProject return a project_id, project_name, status? Without documented output structure, agents cannot chain tools or extract needed data.
No error handling guidance. If createProject fails because the template doesn't exist or the valuesFile is malformed, what should the LLM do next? Retry? Call listTemplates? Ask the user? No recovery paths are documented.
createProject modifies state (creates a project) but the description does not explicitly say so. LLMs need to know this is a destructive, non-idempotent operation that may have side effects. Add language like 'This action creates a new project and is not idempotent; repeated calls with the same inputs will create duplicate projects.'