使用说明
缝合MCP服务器
最全面的MCP服务器 谷歌拼接 --36个用于设计到编码工作流程的工具。
一个模块化的TypeScript MCP(模型上下文协议)服务器,将Google Stitch的设计生成API与9个类别的36个工具包装在一起,从上游代理和代码生成到设计分析、导出和项目管理。
通过结合以下优点而构建 davideast/缝合mcp 和 GreenSheep01201/缝mcp自动,然后扩展了高级设计到代码实用程序。
特性
核心
- 完整上游代理 --直接访问所有Google Stitch MCP工具
- 工作空间管理 --通过以下方式保持每个目录的项目关联
.stitch-project.json - 自动项目解析 --工具会自动从会话、工作区或参数中检测活动项目
设计智能
- 设计上下文提取 --从任何屏幕中提取颜色、排版、间距和组件图案
- 设计系统验证 --根据批准的令牌检查屏幕以进行合规性评分
- 暗模式生成 --自动生成具有可配置对比度的深色变体
- 响应式变体 --通过布局策略调整移动设备、平板电脑和台式机的屏幕
- 组件变体 --为a/B测试生成组件的多种视觉样式
代码生成
- 屏幕反应 --使用键入的props和Tailwind类将Stitch HTML转换为TSX
- 屏幕切换到顺风配置 --提取完整
tailwind.config.ts从一个设计 - 屏幕到CSS变量 --生成语义
:root具有可选暗模式块的自定义属性 - 设计代币 --导出为CSS变量、Tailwind配置、SCSS或JSON
分析与导出
- 可访问性审计 --WCAG 2.1合规性检查,并进行严重性评分
- 设计比较 --两个屏幕的并排差异(颜色、排版、布局、组件)
- 设计差异 --用于跟踪迭代的结构化元素/样式/文本/类差异
- 大容量导出 --从项目导出所有屏幕(HTML+屏幕截图)
- 风格指南生成 --屏幕上的视觉或标记设计文档
- 项目摘要 --高级概述,包括一致性评分和建议
整合
- PM问题生成 --从屏幕设计为Plane、Linear、Jira创建结构化问题数据
- 模板库 --10个预定义的UI模板(仪表板、登录、看板、聊天等)
- 时尚设计 --应用现代设计趋势(玻璃形态、便当网格、极光渐变等)
快速开始
# 1. Clone and install
git clone https://github.com/oogleyskr/stitch-mcp-server.git
cd stitch-mcp-server
npm install
# 2. Build
npm run build
# 3. Set authentication (pick one)
export STITCH_API_KEY="your-api-key"
# OR
export STITCH_ACCESS_TOKEN="your-access-token"
# OR have gcloud CLI configured
认证
支持三种方法,按优先级顺序检查:
| 优先级 | 方法 | 环境变量 | HTTP标头 |
|---|---|---|---|
| 1 | API密钥 | STITCH_API_KEY |
X-Goog-Api-Key: <key> |
| 2 | 访问令牌 | STITCH_ACCESS_TOKEN |
Authorization: Bearer <token> |
| 3 | gcloud命令行界面 | (自动检测) | Authorization: Bearer <token> |
方法1:API密钥(推荐)
export STITCH_API_KEY="AIza..."
方法2:访问令牌
export STITCH_ACCESS_TOKEN="ya29...."
export GOOGLE_CLOUD_PROJECT="my-project-id" # optional, for billing
方法3:gcloud命令行界面
gcloud auth login
gcloud auth application-default login
export GOOGLE_CLOUD_PROJECT="my-project-id" # optional
服务器自动运行 gcloud auth print-access-token 并验证令牌格式。
完整的工具参考
上游缝合工具(7)
工具直接代理到谷歌的Stitch MCP端点。
| 工具 | 说明 | 必需参数 |
|---|---|---|
list_projects |
列出所有可访问的Stitch项目 | -- |
get_project |
获取项目详细信息 | projectId |
list_screens |
列出项目中的屏幕 | projectId |
get_screen |
通过下载URL获取屏幕详细信息 | projectId, screenId |
generate_screen_from_text |
从文本提示生成屏幕 | projectId, prompt |
edit_screens |
使用文本指令编辑现有屏幕 | projectId, screenIds[], prompt |
generate_variants |
生成屏幕的设计变体 | projectId, screenId |
代码和构建工具(4)
| 工具 | 说明 | 必需参数 | 可选 |
|---|---|---|---|
get_screen_code |
获取屏幕的原始HTML代码 | projectId, screenId |
— |
get_screen_image |
以base64 PNG格式获取屏幕截图 | projectId, screenId |
— |
build_site |
将屏幕映射到路线,获取所有HTML | projectId, routes[] |
— |
list_tools |
列出所有具有架构的可用工具 | -- | -- |
工作空间工具(3)
| 工具 | 说明 | 必需参数 |
|---|---|---|
get_workspace_project |
检查工作区是否有链接的项目 | -- |
set_workspace_project |
将项目链接到当前工作区 | projectId |
clear_workspace_project |
删除工作区项目链接 | -- |
设计工具(6)
| 工具 | 说明 | 必需参数 | 可选 |
|---|---|---|---|
extract_design_context |
提取颜色、排版、间距、组件 | projectId, screenId |
includeComponents, includeTypography, includeColors, includeSpacing |
apply_design_context |
使用提取的设计上下文生成屏幕 | projectId, designContext, prompt |
deviceType |
generate_design_tokens |
生成CSS变量/尾风/SCSS/JSON令牌 | projectId, screenId |
format, includeSemanticNames |
generate_responsive_variant |
为不同视口创建响应版本 | projectId, screenId, targetDevice |
adaptationStrategy |
batch_generate_screens |
一致地生成多个相关屏幕 | projectId, screens[] |
sharedDesignContext, deviceType |
generate_from_template |
从10个预定义的UI模板生成 | projectId, template |
customization, deviceType, style |
可用模板: dashboard, settings, login, profile, pricing, landing-hero, data-table, kanban-board, chat-interface, file-manager
可用样式: modern, minimal, corporate, playful, elegant
分析工具(4)
| 工具 | 说明 | 必需参数 | 可选 |
|---|---|---|---|
analyze_accessibility |
WCAG 2.1可访问性分析 | projectId, screenId |
level (A/AA/AAA), includeRecommendations |
compare_designs |
比较两个屏幕的设计不一致性 | projectId, screenId1, screenId2 |
compareAspects[] |
extract_components |
提取可重用的UI组件 | projectId, screenId |
componentTypes[], outputFormat (json/react/html/vue) |
design_diff |
两个屏幕之间的结构化差异 | projectId, screenId1, screenId2 |
includeStyleDiff, includeTextDiff |
导出工具(4)
| 工具 | 说明 | 必需参数 | 可选 |
|---|---|---|---|
generate_style_guide |
从屏幕生成视觉风格指南 | projectId, screenId |
sections[], format (视觉/文件/两者) |
export_design_system |
导出完整的设计系统包 | projectId |
screenIds[], includeTokens, includeComponents, tokenFormat, componentFormat |
suggest_trending_design |
将现代设计趋势应用于提示 | projectId, prompt, trends[] |
intensity, deviceType |
export_all_screens |
批量导出所有屏幕(HTML+屏幕截图) | projectId |
includeHtml, includeScreenshots, maxScreens |
可用趋势: glassmorphism, bento-grid, gradient-mesh, aurora-gradients, 3d-elements, micro-interactions, dark-mode, minimalist, brutalist, neomorphism, retro-futurism, organic-shapes, bold-typography
编码工具(1)
| 工具 | 说明 | 必需参数 | 可选 |
|---|---|---|---|
screen_to_react |
使用Tailwind CSS将屏幕转换为React/TSX | projectId, screenId |
componentName, includeResponsive |
集成工具(1)
| 工具 | 说明 | 必需参数 | 可选 |
|---|---|---|---|
screen_to_plane_issue |
从屏幕生成PM问题数据 | projectId, screenId |
screenName, workspaceSlug, planeProjectId, priority, additionalContext |
高级工具(6)
| 工具 | 说明 | 必需参数 | 可选 |
|---|---|---|---|
screen_to_tailwind_config |
提取完成 tailwind.config.ts |
projectId, screenId |
prefix, includePlugins |
screen_to_css_variables |
提取具有语义名称的CSS自定义属性 | projectId, screenId |
includeDarkMode, namespace |
validate_design_system |
根据设计标记检查屏幕合规性 | projectId, screenId |
approvedColors[], approvedFonts[], approvedSpacing[], approvedRadii[], strictMode |
generate_dark_mode |
生成屏幕的暗模式变体 | projectId, screenId |
preserveAccents, contrast, deviceType |
generate_component_variants |
生成组件的视觉变体 | projectId, screenId, componentType |
variantCount, variantStyles[], deviceType |
project_summary |
具有一致性得分的高级项目概述 | projectId |
analyzeConsistency, maxScreensToAnalyze |
建筑
src/
├── index.ts # Entry point — MCP server setup, tool routing, project resolution
├── auth.ts # Authentication (API key, access token, gcloud CLI fallback)
├── stitch-client.ts # JSON-RPC client, download helpers, screen list parser
├── types.ts # TypeScript interfaces (auth, RPC, tools, design context)
└── tools/
├── helpers.ts # Shared utilities (extractUnique, extractCssValues, validators)
├── upstream.ts # Proxy to upstream Stitch tools (7 tools)
├── code.ts # Screen code/image retrieval, site building (4 tools)
├── workspace.ts # Workspace project management (3 tools)
├── design.ts # Design context, tokens, responsive, batch, templates (6 tools)
├── analysis.ts # Accessibility, comparison, components, design diff (4 tools)
├── export.ts # Style guides, design system export, trends, bulk export (4 tools)
├── codegen.ts # Screen-to-React conversion (1 tool)
├── integration.ts # Screen-to-PM-issue bridge (1 tool)
└── advanced.ts # Tailwind config, CSS vars, validation, dark mode, variants, summary (6 tools)
关键设计决策
- 模块化工具文件 --每个类别都有自己的文件,其中包含定义和处理程序
- 共享助手 --常见的HTML提取功能集中在
helpers.ts - 输入验证 --所有必需的参数均已验证
requireString/requireNonEmptyArray - 自动项目解析 --三层查找:参数>会话缓存>
.stitch-project.json - 超时保护 --所有HTTP请求(RPC、下载)都有可配置的超时
- 不可变模式 --工具定义如下
readonly,args被传播(从不突变)
整合
克劳德代码/克劳德桌面
添加到MCP配置文件(.mcp.json 或克劳德桌面设置):
{
"mcpServers": {
"stitch": {
"command": "node",
"args": ["/path/to/stitch-mcp-server/dist/index.js"],
"env": {
"STITCH_API_KEY": "your-api-key"
}
}
}
}
MCPJungle
{
"name": "stitch",
"command": "node",
"args": ["/path/to/stitch-mcp-server/dist/index.js"],
"env": {
"STITCH_API_KEY": "your-api-key"
},
"tags": ["design", "ui", "stitch", "google"]
}
光标
添加 .cursor/mcp.json 在您的项目中:
{
"mcpServers": {
"stitch": {
"command": "node",
"args": ["/path/to/stitch-mcp-server/dist/index.js"],
"env": {
"STITCH_API_KEY": "your-api-key"
}
}
}
}
VS代码(副驾驶MCP)
添加到您的VS代码设置中:
{
"mcp.servers": {
"stitch": {
"command": "node",
"args": ["/path/to/stitch-mcp-server/dist/index.js"],
"env": {
"STITCH_API_KEY": "your-api-key"
}
}
}
}
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
STITCH_API_KEY |
三选一 | 用于Stitch访问的Google API密钥 |
STITCH_ACCESS_TOKEN |
三个 | OAuth2访问令牌中的一个 |
GOOGLE_CLOUD_PROJECT |
可选 | 用于计费的GCP项目ID(承载身份验证) |
GCLOUD_PROJECT |
可选 | 别名 GOOGLE_CLOUD_PROJECT |
STITCH_HOST |
可选 | 覆盖缝合API端点URL(默认值: https://stitch.googleapis.com/mcp) |
例子
1.从设计到编码的工作流
User: "Generate a dashboard screen and convert it to React"
1. generate_screen_from_text → Creates the design in Stitch
2. get_screen_code → Fetches the HTML
3. screen_to_react → Converts to a React/TSX component with Tailwind
4. screen_to_tailwind_config → Extracts a matching tailwind.config.ts
2.设计体系审核
User: "Check if our screens follow the design system"
1. project_summary → Overview of all screens with consistency score
2. validate_design_system → Check each screen against approved tokens
3. compare_designs → Compare inconsistent screens side-by-side
4. export_design_system → Export the corrected design system for handoff
3.暗模式生成
User: "Create a dark mode version of our app"
1. list_screens → Find all screens in the project
2. extract_design_context → Extract the current design DNA
3. generate_dark_mode → Generate dark variants for each screen
4. screen_to_css_variables → Export CSS vars with dark-mode overrides
4.组件库构建
User: "Build a component library from our designs"
1. extract_components → Pull buttons, cards, forms, nav from a screen
2. generate_component_variants → Create 3-5 visual variants of each component
3. screen_to_react → Convert each variant to React
4. generate_style_guide → Create visual documentation
5.大宗项目出口
User: "Export everything from this project for handoff"
1. project_summary → Get the full project overview
2. export_all_screens → Bulk export all HTML + screenshots
3. export_design_system → Export tokens, components, and documentation
4. generate_design_tokens → Generate CSS variables and Tailwind config
6.使用模板进行快速原型制作
User: "Create a SaaS app prototype"
1. generate_from_template → "dashboard" with "dark theme, analytics focus"
2. generate_from_template → "settings" with "minimal style, dark theme"
3. generate_from_template → "pricing" with "3 tiers, annual toggle"
4. generate_from_template → "login" with "social auth, dark background"
5. build_site → Map all screens to routes
贡献
添加新工具
- 选择正确的模块 --选择与类别匹配的工具文件,或创建一个新的工具文件
- 定义工具 --添加a
ToolDefinition到模块的定义数组 - 实现处理程序 --编写一个返回的异步函数
McpToolResult - 在调度员处登记 --添加a
case到模块的switch语句 - 连接到index.ts --如果这是一个新模块,请将其导入并添加到路由逻辑中
- 添加到工具_需求_项目 --如果工具需要
projectId - 构建和测试 --快跑
npm run build并验证该工具是否出现在list_tools
工具处理程序模式
async function handleMyNewTool(
args: Record<string, unknown>,
creds: AuthCredentials,
projectId?: string
): Promise<McpToolResult> {
// 1. Validate inputs
const pid = requireString(args.projectId, "projectId");
// 2. Fetch data
const html = await fetchScreenHtml(pid, screenId, creds, projectId);
// 3. Process
const result = analyzeHtml(html);
// 4. Return structured result
return {
content: [{
type: "text",
text: JSON.stringify({ success: true, ...result }, null, 2),
}],
};
}
许可证
阿帕奇-2.0 --欢迎捐款。
