MCP server for generating Astro components, sections, and pages from design data and content
astro-dev-mcp is a domain-specific code generation server with mixed quality. The server defines 6 tools with explicit schemas and descriptions, but several critical gaps undermine production readiness. Tool names follow verb_noun conventions (generate-*, get-*), which is correct. Descriptions are present and detailed, some exceeding 1024 chars with example JSON blocks, this is overly verbose and wastes tokens. Input schemas are complete with type definitions and enums, but parameter descriptions lack implementation guidance. Output schemas are entirely undocumented, critical for a generation tool. Error handling is absent: no recovery guidance, no validation rules, no error classification. Security is weak: no audit trails, no permission checks, no secret injection pattern. Composition is reasonable, tools do single jobs, but idempotency is uncertain for file-write operations. The Japanese-language descriptions add cognitive load for English-speaking LLMs, though content is technically correct.
Astroコンポーネントを生成し、ファイルシステムに書き込みます。 【重要】Astroコンポーネントを新規作成する場合は、独自にコードを書かずに必ずこのツールを使用してください。 出力先: - src/components/{componentName}.astro - src/scss/components/_c_{snake_case_name}.scss 使用例: { "componentName": "ArticleCard", "props": { "title": "string", "description": "string", "image": "string" }, "projectRoot": "/path/to/project" }
完全なAstroページを生成し、ファイルシステムに書き込みます。 【重要】Astroページを新規作成する場合は、独自にコードを書かずに必ずこのツールを使用してください。 出力先: - src/pages/{pageName}/index.astro 自動更新(オプション指定時): - src/layouts/Common.astro(siteConfig指定時) - src/scss/abstracts/_variables.scss(scssConfig指定時) 機能: - promptでページタイプ(トップ/下層)を自動判定 - 下層ページの場合はBreadcrumbsとLowerTitleを自動追加 使用例: { "pageName": "about", "prompt": "会社概要の下層ページ", "pageData": { "head": { "slug": "about", "ttl": "会社概要", "description": "...", "url": "/about/" }, "contents": {} }, "sections": ["hero", "company"], "projectRoot": "/path/to/project" }
デザインデータやコンテンツ資料からTypeScript型定義とデータ構造を生成します。 【重要】データ構造の型定義が必要な場合は、独自に型を書かずにこのツールを使用してください。 対応形式: Excel、Markdown、JSON、テキスト 使用例: { "sourceType": "json", "sourceData": "{ \"title\": \"記事タイトル\", \"items\": [...] }", "schemaName": "ArticleData" }
ページセクション(_parts配下)を生成し、ファイルシステムに書き込みます。 【重要】Astroページのセクションを作成する場合は、独自にコードを書かずに必ずこのツールを使用してください。 出力先: - src/pages/_parts/_{pageName}/_{sectionType}.astro - src/scss/pages/_{pageName}.scss(既存ファイルには追記) 自動更新: - src/js/app.js(UIパターンに必要なスクリプトを自動登録) 使用例: { "pageName": "about", "sectionType": "features", "uiPattern": "grid", "projectRoot": "/path/to/project" }
CRITICAL: Output schemas undocumented for all generation tools (generate-component, generate-section, generate-page, generate-schema). File write tools MUST document success indicators, created file paths, and content format. LLM has no way to verify generation succeeded or integrate output into workflows.
Descriptions exceed token budget (>500 chars) and embed example JSON payloads. LLMs reuse examples literally (generate-component example shows exact JSON structure; LLM may copy it into next call).
Auto-inference claims without parameter guidance. generate-section says 'sectionTypeとuiPatternを自動推論します' and generate-page says 'promptでページタイプを自動判定' but parameter docs never explain inference logic or expected prompt formats. LLM cannot predict outcomes.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 52 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 45 | - | v1 |
既存Astroコンポーネントから Props インターフェースを抽出し、コンポーネント仕様を参照できます
プロジェクトの構造、既存コンポーネント、スキーマ定義を解析し、生成時の参考情報を提供します
Ambiguous parameter structure. generate-page 'pageData' requires nested 'head' object with undocumented required fields (is slug required? description? url?). 'contents' is additionalProperties=true with no guidance. LLM must guess valid structure.
Missing error handling. No tool documents what happens on failure: file write fails due to permissions? Component name conflicts? Missing project structure? No recovery guidance, no error classification, no actionable remediation steps.
Destructive write operations lack confirmation. generate-component, generate-section, generate-page write files to disk without dry-run or review step. If LLM makes errors (wrong component name, overwrites existing), no recovery offered.
Missing parameter constraints. 'componentName' accepts any string; no validation that it's PascalCase or alphanumeric. 'projectRoot' has no guidance on path format. 'sourceData' in generate-schema is ambiguous (file path vs content string). LLM passes invalid values; no early validation documented.
Japanese descriptions reduce clarity for English-speaking LLMs. All tool and parameter descriptions are primarily in Japanese with minimal English context. LLMs process Japanese correctly but context switching increases error risk. Critical patterns like 'props定義' and 'UIパターン' could be ambiguous in translation.
Discovery tools under-specified. get-project-context and get-component-interface lack output schema documentation. LLM cannot plan follow-up steps without knowing what data these return (component list format? schema definitions? file paths?).
Idempotency uncertain. File write tools (generate-component, generate-section, generate-page) do not document behavior on retry: do they overwrite existing files? Merge with existing content? Error on conflict? Agents retry on ambiguous failures, non-idempotent behavior risks duplicate writes or silent corruption.