设计转代码MCP服务器

一个模块化的TypeScript MCP服务器,封装了Google Stitch的设计生成API,提供36种工具,涵盖从代码生成到设计分析和导出等功能,适用于设计转代码的工作流程。

  • by mattferry
  • TypeScript
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 oogleyskr/stitch-mcp-server

使用说明

缝合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

贡献

添加新工具

  1. 选择正确的模块 --选择与类别匹配的工具文件,或创建一个新的工具文件
  2. 定义工具 --添加a ToolDefinition 到模块的定义数组
  3. 实现处理程序 --编写一个返回的异步函数 McpToolResult
  4. 在调度员处登记 --添加a case 到模块的switch语句
  5. 连接到index.ts --如果这是一个新模块,请将其导入并添加到路由逻辑中
  6. 添加到工具_需求_项目 --如果工具需要 projectId
  7. 构建和测试 --快跑 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 --欢迎捐款。