MCP server for building project structures with various frameworks
Two tools with explicit schemas and descriptions. build_project has a comprehensive, well-structured input schema with 15+ optional parameters covering framework-specific configuration (Java version, Python version, database type, etc.). Descriptions are clear and present. list_frameworks is minimal but functional. However, critical gaps include: (1) no output schemas documented for either tool, forcing LLMs to guess what fields the response contains; (2) missing descriptions for several framework-specific nested parameters (javaVersion, pythonVersion, springBootVersion, database all lack type/constraint documentation in the schema); (3) projectType enum is present but appears decoupled from framework, no guidance on which projectType is valid for which framework; (4) no error handling or recovery guidance documented; (5) no idempotency, dry-run, or confirmation step for the destructive write operation build_project. The tool definitions are registered and visible in src/index.ts, not inferred. Parameter names follow verb_noun conventions adequately (build_project, list_frameworks), but output structure is completely undocumented.
Build a new project with specified framework. Supported frameworks: spring-boot, react, vite, vue, fastapi, fastapi-uvicorn, fastapi-gunicorn, django, django-rest, django-cms, flask, flask-rest, flask-sqlalchemy, express, express-ts, express-rest, fastify, fastify-ts, fastify-rest, nestjs, nestjs-rest, nextjs, nuxt
List all supported frameworks for project creation
Output schemas completely undocumented. Neither build_project nor list_frameworks document what fields the response contains, forcing LLMs to blindly parse results.
build_project lacks error handling guidance. No documentation of what happens on invalid framework, missing projectName, I/O failures, or framework incompatibilities. LLMs cannot recover from errors without explicit guidance.
Framework-to-projectType compatibility undocumented. The schema declares projectType enum [web, api, mobile, desktop] and framework enum with 20+ frameworks, but does not specify which combinations are valid. For example, is 'spring-boot' valid with projectType='mobile'? This forces the LLM to guess or iterate.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Destructive write operation (build_project) has no dry-run, confirmation step, or idempotency documentation. Agents cannot safely retry on ambiguous failures without risking duplicate project creation.
Nested parameter descriptions incomplete. Properties like javaVersion, pythonVersion, springBootVersion, database have minimal descriptions lacking format, constraints, or examples (e.g., 'Java version for Spring Boot (default: 17)' does not specify valid range, format, or whether '11', '17', '21' are all accepted).
list_frameworks description is minimal (11 words). Does not explain when to call it, what structure is returned, or how results should be used downstream. Baseline for tool descriptions is 34 - 392 chars; this is only ~70 chars and lacks strategic context.
stateManagement enum values (zustand, pinia, redux, none) not constrained to framework applicability. zustand is React-only, pinia is Vue-only, redux is React-only, but the schema allows any framework to request any library. LLMs will attempt invalid combinations.