使用说明
Astro发电机MCP服务器
数据驱动Astro自动生成项目MCP(Model Context Protocol)服务器
概要
这MCP服务器从设计数据、线框、内容资料中Astro自动生成组件、节和页面模板。
主要功能
- ✅ 组件生成: Props定义可重复使用Astro生成组件
- ✅ 节生成:从内容数据
_parts生成下属节- 新: SCSS自动生成(astro-dev mixinに准据)
- 新: app.js自动更新(Tab/Accordion等脚本登录)
- ✅ 页面生成:批量生成整个页面结构
- ✅ 架构生成: Excel/Markdown/JSON从TypeScript自动生成类型定义
v0.2.0主要改善点
astro-dev项目实际使用经验解决了以下问题:
- ✅ 利用现有脚本: Tab.ts、Accordion.ts等的astro-dev使用现有脚本
- ✅ Mixin使用:
@include mq()、@include hover()使用SCSS生成 - ✅ .contentInner二重设定の防止:灵活的容器控制
- ✅ 样式分隔符: Astro不是文件SCSS分离到文件
了解更多信息 改进.md 来修改标记元素的显示属性。
安装
方法1:npx直接运行(建议)
npx astro-dev-mcp
方法2:全局安装
npm install -g astro-dev-mcp
方法3:本地开发
git clone https://github.com/YoshiokaY/astro-dev-mcp.git
cd astro-dev-mcp
npm install
npm run build
npm link
Claude Desktop设定
~/Library/Application Support/Claude/claude_desktop_config.json 添加:
npx使用时
{
"mcpServers": {
"astro-generator": {
"command": "npx",
"args": ["astro-dev-mcp"]
}
}
}
全局安装
{
"mcpServers": {
"astro-generator": {
"command": "astro-dev-mcp"
}
}
}
对于本地开发
{
"mcpServers": {
"astro-generator": {
"command": "node",
"args": ["/absolute/path/to/astro-dev-mcp/dist/index.js"]
}
}
}
用法
1.生成组件
提示示例:
ArticleCardコンポーネントを生成してください。
Props:
- ttl: タイトル(文字列)
- desc: 説明文(文字列)
- date: 投稿日(文字列)
- category: カテゴリ(文字列)
- img: 画像パス(文字列)
- imgAlt: 画像の代替テキスト(文字列)
デザイン:
- プライマリカラー: #0ea5e9
- レイアウト: grid
- フォントサイズ: 1.6rem
执行MCP工具:
{
"name": "generate-component",
"arguments": {
"componentName": "ArticleCard",
"props": {
"ttl": { "type": "string", "description": "タイトル" },
"desc": { "type": "string", "description": "説明文" },
"date": { "type": "string", "description": "投稿日" },
"category": { "type": "string", "description": "カテゴリ" },
"img": { "type": "string", "description": "画像パス" },
"imgAlt": { "type": "string", "description": "画像の代替テキスト" }
},
"design": {
"colors": { "primary": "#0ea5e9" },
"layout": "grid",
"typography": { "size": "1.6rem" }
},
"accessibility": true
}
}
出力:
src/components/ArticleCard.astrosrc/scss/components/_c_article_card.scss
2.章节生成(改进版)
提示示例:
recruitページでQ&Aをアコーディオンで実装してください。
执行MCP工具:
{
"name": "generate-section",
"arguments": {
"prompt": "Q&Aをアコーディオンで実装",
"pageName": "recruit",
"content": {
"ttl": "よくある質問",
"items": [
{ "ttl": "質問1", "content": "回答1" },
{ "ttl": "質問2", "content": "回答2" }
]
},
"generateScss": true,
"scssOptions": {
"spacing": {
"sectionPadding": "6rem 0",
"itemGap": "1.6rem"
}
}
}
}
出力:
src/pages/_parts/_recruit/_qa.astro(Astro组件)- SCSS代码(
src/scss/pages/_recruit.scss),模板名称将采用不同的格式 src/js/app.js自动更新(Accordion.tsを追加)
生成代码的特征:
✅ 使用现有脚本: astro-dev的,之Accordion.ts利用率
✅ Mixin使用: @include mq()、@include hover()、@include fontsize()
✅ 容器控制: .contentInner防止双重设定
✅ 样式分隔符: SCSS分离到文件(在Astro文件中<style>无)
3.生成整个页面
提示示例:
blogページを生成してください。
ページ情報:
- slug: blog
- タイトル: 技術ブログ
- 説明: Web開発に関する最新情報
- URL: /blog/
セクション構成:
1. hero(ヒーローセクション)
2. articles(記事一覧)
3. categories(カテゴリー)
4. qa(よくある質問)
パンくずリスト:
- ホーム > 技術ブログ
执行MCP工具:
{
"name": "generate-page",
"arguments": {
"pageName": "blog",
"pageData": {
"head": {
"slug": "blog",
"ttl": "技術ブログ",
"description": "Web開発に関する最新情報",
"url": "/blog/"
},
"breadcrumbs": [
{ "text": "ホーム", "link": "/" },
{ "text": "技術ブログ", "link": "/blog/" }
],
"contents": {
"hero": { "ttl": "Tech Blog", "subtitle": "最新の技術情報を発信" },
"articles": { "ttl": "最新記事", "items": [] },
"categories": { "ttl": "カテゴリー", "items": [] },
"qa": { "ttl": "よくある質問", "items": [] }
}
},
"sections": ["hero", "articles", "categories", "qa"]
}
}
出力:
src/pages/blog/index.astro
4. Excel从模式生成
提示示例:
以下のExcelデータからPageData型を生成してください。
| セクション種類 | タイトル | 説明文 | 投稿日 | カテゴリ |
|--------------|---------|--------|--------|---------|
| articles | 記事1 | 説明1 | 2025-01-01 | フロントエンド |
| articles | 記事2 | 説明2 | 2025-01-02 | バックエンド |
执行MCP工具:
{
"name": "generate-schema",
"arguments": {
"sourceType": "excel",
"sourceData": "/path/to/data.xlsx",
"schemaName": "PageData"
}
}
出力:
export interface PageData {
head: {
slug: string;
ttl: string;
description: string;
url: string;
};
contents: {
articles: {
ttl: string;
items: {
タイトル: string;
説明文: string;
投稿日: string;
カテゴリ: string;
}[];
};
};
}
实践工作流示例
案例1:从设计渐变LPmake
1. デザインカンプのスクリーンショットをアップロード
「このデザインからヒーローセクションを生成してください」
2. MCPがセクションを生成
3. 「同じデザインで、特徴セクションも生成してください」
4. 「これらのセクションを組み合わせて、LPページ全体を生成してください」
案例2:Excel从内容资料自动生成
1. Excelファイルのパスを指定
「このExcelからブログページのデータ構造を生成してください」
2. スキーマ生成
3. 「生成されたスキーマに基づいて、ページ全体を生成してください」
开発
构建
npm run build
开发模式(监视)
npm run dev
MCP Inspector(调试)
npm run inspector
项目结构
astro-mcp/
├── src/
│ ├── index.ts # MCPサーバーエントリーポイント
│ ├── tools/ # MCPツール実装
│ │ ├── generateComponent.ts
│ │ ├── generateSection.ts
│ │ ├── generatePage.ts
│ │ └── generateSchema.ts
│ ├── generators/ # コード生成ロジック
│ │ ├── astroGenerator.ts
│ │ ├── scssGenerator.ts
│ │ └── typeGenerator.ts
│ ├── templates/ # テンプレート
│ │ ├── sectionTemplates.ts
│ │ └── pageTemplates.ts
│ ├── parsers/ # データパーサー
│ │ ├── excelParser.ts
│ │ └── markdownParser.ts
│ └── utils/ # ユーティリティ
│ └── formatter.ts
├── package.json
├── tsconfig.json
└── README.md
支持UI模式
交互模式(脚本协作)
tab:选项卡UI(Tab.ts协作)- 自动
app.js的Tab.ts注册 - ARIA支持属性和键盘操作
- 自动
accordion:折叠UI(Accordion.ts协作)- 自动
app.js的Accordion.ts注册 - 高度动画焦点管理
- 自动
modal:模式画廊(Modal.ts协作)- 自动
app.js的Modal.ts注册 - 视频/图片/自定义dialog应对
- 自动
静态模式
grid:网格布局- 响应列数控制
- 图像支持(支持图形组件)
carousel:卡塞尔- Swiper.js连携想定
- 自动播放选项
list:简单列表- 基本信息显示
节类型
hero:英雄部分articles:记事一覧categories:类别列表qa:问答/常见问题features:特征・机能绍介tech:技术栈concept:概念说明videos:视频内容custom:自定义分项
路线图
Phase 1: 原型(完成)
- [x] 基本的MCP服务器构建
- [x] 组件生成功能
- [x] 节生成功能
- [x] 页面生成功能
- [x] 架构生成功能
Phase 2: 扩张机能(次期)
- [ ] Figma API协作(设计令牌自动提取)
- []图像OCR支持(设计渐变分析)
- []响应SCSS自动生成
- []辅助功能检查功能
Phase 3: AI強化(将来)
- []直接从自然语言生成
- []设计系统学习功能
- []组件库管理
许可证
麻省理工学院
貢献
Issue、Pull Request欢迎光临。
联系我们
有关项目的问题GitHub的,之Issue那就拜托了。
