dc-lanhu-mcp-server

蓝湖 MCP Server — 让 AI 编程工具直接读取蓝湖设计稿数据,实现 Design to Code


Keywords
mcp, model-context-protocol, lanhu, design-to-code, claude, cursor, ai
License
MIT
Install
npm install dc-lanhu-mcp-server@1.3.0

Documentation

蓝湖 MCP Server

让 AI 编程工具(Claude Code / Cursor / Cline 等)直接读取蓝湖设计稿数据,实现 Design to Code 自动化。

功能

  • 项目浏览 — 列出团队项目、设计稿列表、分区信息
  • 精确设计数据 — 获取完整图层树(@1x 绝对坐标、全量样式 fill/border/shadow/typography)
  • DDS 语义化组件树 — 获取蓝湖 AI 识别的 UI 组件结构(NavBar / Avatar / Input / ImageText 等),包含 row/col 布局和精确样式
  • 代码生成 — 基于 DDS 语义数据生成 Vue 3 SFC 或纯 HTML 代码
  • 一键下载 — 通过 Puppeteer 从 DDS 页面提取官方 HTML/CSS 代码 + 下载所有切图并替换为本地路径
  • Design Tokens — 自动提取颜色、字体、间距、圆角等设计变量
  • 资源下载 — 封面图、切图、导出图片下载

安装

npm install -g dc-lanhu-mcp-server

或免安装直接使用:

npx dc-lanhu-mcp-server

30 秒接入指南

全局安装后,按你使用的 AI 编程工具复制对应配置即可:

Claude Code(CLI)

claude mcp add lanhu-mcp \
  -e LANHU_COOKIE="你的cookie" \
  -e LANHU_AUTHORIZATION="你的token" \
  -- dc-lanhu-mcp-server

Cursor

在项目根目录创建 .cursor/mcp.json

{
  "mcpServers": {
    "lanhu-mcp": {
      "command": "dc-lanhu-mcp-server",
      "env": {
        "LANHU_COOKIE": "你的cookie",
        "LANHU_AUTHORIZATION": "你的token"
      }
    }
  }
}

Codex(OpenAI)

codex mcp add lanhu-mcp \
  -e LANHU_COOKIE="你的cookie" \
  -e LANHU_AUTHORIZATION="你的token" \
  -- dc-lanhu-mcp-server

Windsurf

~/.codeium/windsurf/mcp_config.json 添加:

{
  "mcpServers": {
    "lanhu-mcp": {
      "command": "dc-lanhu-mcp-server",
      "env": {
        "LANHU_COOKIE": "你的cookie",
        "LANHU_AUTHORIZATION": "你的token"
      }
    }
  }
}

VSCode Copilot Chat

在项目 .vscode/mcp.json 添加:

{
  "servers": {
    "lanhu-mcp": {
      "command": "dc-lanhu-mcp-server",
      "env": {
        "LANHU_COOKIE": "你的cookie",
        "LANHU_AUTHORIZATION": "你的token"
      }
    }
  }
}

Cline(VSCode 扩展)

在 VSCode settings.json 添加:

{
  "cline.mcpServers": {
    "lanhu-mcp": {
      "command": "dc-lanhu-mcp-server",
      "env": {
        "LANHU_COOKIE": "你的cookie",
        "LANHU_AUTHORIZATION": "你的token"
      }
    }
  }
}

Cherry Studio / 其他 GUI 客户端

设置 → MCP Servers → 添加:

  • Type: stdio
  • Command: dc-lanhu-mcp-server
  • Env: LANHU_COOKIE=xxx, LANHU_AUTHORIZATION=xxx

验证接入

在任意 agent 中输入:"列出我的蓝湖项目" → 返回项目列表即接入成功 ✅


⚠️ 安全须知

重要LANHU_COOKIELANHU_AUTHORIZATION 是你的蓝湖账号凭证,等同于密码。

  • .env 文件已自动设置 chmod 600(仅文件所有者可读写)
  • 务必.env.mcp.json 加入 .gitignore切勿提交到代码仓库
  • 若凭证泄露,请立即在蓝湖网页端退出登录使 Cookie 失效
  • Docker 环境下请通过环境变量注入凭证,不要挂载含凭证的配置文件到镜像中
  • Puppeteer 默认启用沙箱保护;如需在 Docker 中关闭,设置 LANHU_PUPPETEER_NO_SANDBOX=1

配置方式

只需 2 个字段LANHU_COOKIE + LANHU_AUTHORIZATIONtenantId 自动发现为 "0"(已验证可用),projectId 通过 lanhu_set_project 从 URL 自动提取,或在工具参数中直接传入。

5 种配置方式总览

# 方式 优先级 配置位置 适用场景
环境变量 最高 process.env CI/CD、Docker、临时测试
.mcp.json 项目根目录 团队协作,配置随代码走
.env 包安装目录 本地开发,不提交 git
settings.json ~/.claude/settings.json 个人开发者,全局生效
交互引导 兜底 运行时输入 首次使用,零配置启动
优先级:① > ② > ③ > ④ > ⑤(高优先级覆盖低优先级)

① 环境变量(优先级最高)

通过进程环境变量注入,适用于 CI/CD、Docker 容器或临时测试:

# 方式 A:export 后启动
export LANHU_COOKIE="你的cookie"
export LANHU_AUTHORIZATION="你的token"
npx dc-lanhu-mcp-server

# 方式 B:一行命令
LANHU_COOKIE="你的cookie" LANHU_AUTHORIZATION="你的token" npx dc-lanhu-mcp-server

# 方式 C:Docker / CI 环境变量
# 在 Dockerfile 或 CI 配置中设置 LANHU_COOKIE 和 LANHU_AUTHORIZATION

会覆盖所有配置文件中的值。


.mcp.json 项目级配置(推荐团队使用)

在项目根目录创建 .mcp.json,配置随代码走,可提交到 git:

{
  "mcpServers": {
    "lanhu-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["dc-lanhu-mcp-server"],
      "env": {
        "LANHU_COOKIE": "你的cookie",
        "LANHU_AUTHORIZATION": "你的token"
      }
    }
  }
}

优势:

  • ✅ 只需 2 个字段,tenantId/projectId 自动发现
  • ✅ 配置跟随项目,新成员 clone 后即可使用
  • ✅ 可加入 .gitignore 保护敏感信息

支持路径:

  • .mcp.json(标准,Claude Code / Cursor 通用)
  • .cursor/mcp.json(Cursor 专用)

.env 本地文件

dc-lanhu-mcp-server 包安装目录下创建 .env 文件:

LANHU_COOKIE=你的cookie
LANHU_AUTHORIZATION=你的token

文件权限自动设为 600(仅所有者可读写)。

适用:本地开发,不想污染全局配置。


settings.json 全局配置(推荐个人使用)

通过 Claude Code CLI 注册,配置写入 ~/.claude/settings.json,所有项目通用:

# 注册
claude mcp add lanhu-mcp \
  -e LANHU_COOKIE="你的cookie" \
  -e LANHU_AUTHORIZATION="你的token" \
  -- npx dc-lanhu-mcp-server

# 验证
claude mcp list

# 使用本地安装路径(更快启动)
claude mcp add lanhu-mcp \
  -e LANHU_COOKIE="你的cookie" \
  -e LANHU_AUTHORIZATION="你的token" \
  -- node /path/to/dc-lanhu-mcp-server/dist/index.js

也支持手动编辑 ~/.claude/settings.json

{
  "mcpServers": {
    "lanhu-mcp": {
      "command": "npx",
      "args": ["dc-lanhu-mcp-server"],
      "env": {
        "LANHU_COOKIE": "你的cookie",
        "LANHU_AUTHORIZATION": "你的token"
      }
    }
  }
}

⑤ 交互引导(首次兜底)

无任何配置时,首次运行自动进入交互引导:

npx dc-lanhu-mcp-server

引导流程:

  1. 提示输入 LANHU_COOKIE
  2. 提示输入 LANHU_AUTHORIZATION(可选,直接回车跳过)
  3. 提示输入 tenantId(可选,直接回车跳过 → 自动发现)
  4. 粘贴蓝湖项目 URL(可选,直接回车跳过 → 通过 lanhu_set_project 设置)
  5. 选择写入位置(.env / settings.json / 两者)
  6. 自动保存,下次启动无需重复输入

配置优先级

多个配置源共存时,按以下优先级加载(局部 > 全局):

process.env → .mcp.json → .env → settings.json → 交互引导
     ↑            ↑          ↑         ↑             ↑
  环境变量     项目级配置   本地env   Claude全局    首次兜底

示例:

  • 同时有 .mcp.json.env → 使用 .mcp.json
  • 同时有环境变量和配置文件 → 使用环境变量
  • 只有 settings.json → 自动回填 .env

获取蓝湖凭证

  1. 登录 蓝湖网页版
  2. F12 打开开发者工具
  3. 进入 Network 标签
  4. 刷新页面,选择任意 Fetch/XHR 请求
  5. Request Headers 中复制:
    • CookieLANHU_COOKIE(必需)
    • AuthorizationLANHU_AUTHORIZATION(推荐,部分接口需要)

只需这 2 个凭证,tenantIdprojectId 不需要手动获取。

使用流程

配置凭证(2 个字段)→ 设置项目(URL 自动提取)→ 获取设计数据

第一步:配置凭证 — 选择上述 5 种方式之一,只需 LANHU_COOKIE + LANHU_AUTHORIZATION

第二步:设置项目 — 两种方式任选:

  • 调用 lanhu_set_project 传入蓝湖 URL,自动提取 projectId(推荐)
  • 或在每个工具调用中直接传 projectId 参数

第三步:获取设计数据 — 调用 lanhu_get_design_document 等工具

# 示例:在 Claude Code 中对话

> "从这个蓝湖链接获取设计稿并生成 Vue 组件:
>  https://lanhuapp.com/web/#/item/project/detailDetach?pid=xxx&project_id=xxx&image_id=yyy"

# MCP Server 自动完成:
# 1. 从 URL 提取 projectId 和 imageId
# 2. autoDiscover() 设置 tenantId = "0"
# 3. 调用 getDesignDocument(imageId, projectId)
# 4. 返回完整设计数据(图层树 + 样式 + Design Tokens)

MCP Tools

Tool 说明
lanhu_set_project 从蓝湖 URL 中提取并设置默认 projectId(设置后后续工具免传)
lanhu_list_projects 列出团队项目/文件夹
lanhu_get_designs 获取项目下的设计稿列表
lanhu_get_design_detail 获取设计稿详情(尺寸、预览图、版本)
lanhu_get_design_document 获取完整精确结构化设计数据(核心)
lanhu_get_annotations 获取标注数据(图层树)
lanhu_get_preview 获取预览图 URL
lanhu_get_tokens 提取 Design Tokens
lanhu_get_sectors 获取项目分区信息
lanhu_get_dds_schema 获取 DDS 语义化 UI 组件树
lanhu_generate_code 基于 DDS 数据生成 Vue / HTML 代码
lanhu_download_design 一键下载设计稿(DDS 代码 + 切图)
lanhu_download_cover 下载设计稿封面图
lanhu_download_image 下载任意图片到本地

环境变量

变量 必需 说明
LANHU_COOKIE 蓝湖登录 Cookie
LANHU_AUTHORIZATION Authorization Token(部分接口需要)
LANHU_TENANT_ID 租户 ID(不配置则自动发现,默认 "0" 已验证可用)
LANHU_PROJECT_ID 默认项目 ID(不配置则通过工具参数传入,或使用 lanhu_set_project 设置)
CHROME_PATH Chrome 路径(lanhu_download_design 需要,默认自动检测)

测试

方式一:MCP Inspector(推荐)

MCP Inspector 是官方调试工具,提供 Web UI 可以直接调用 Tools:

# 设置环境变量
export LANHU_COOKIE="你的cookie"
export LANHU_AUTHORIZATION="你的token"

# 启动 Inspector
npx @modelcontextprotocol/inspector node dist/index.js

浏览器会打开 http://localhost:5173,可以:

  • 查看所有注册的 Tools
  • 手动调用每个 Tool 并查看返回结果
  • 调试输入参数

方式二:直接在 Claude Code 中测试

# 1. 添加 MCP Server
claude mcp add lanhu-mcp -e LANHU_COOKIE="你的cookie" -- node $(pwd)/dist/index.js

# 2. 启动 Claude Code,直接对话测试
claude

# 然后在对话中说:
# "列出我的蓝湖项目"
# "获取设计稿 xxx 的数据"

使用流程

  1. 配置凭证.mcp.json 中只需 LANHU_COOKIE + LANHU_AUTHORIZATION
  2. 设置项目(二选一):
    • 调用 lanhu_set_project 传入蓝湖 URL,自动提取 projectId
    • 或在每个工具调用中直接传 projectId 参数
  3. 获取设计数据 — 调用 lanhu_get_design_document 等工具
# 示例对话流程:
> "从这个蓝湖链接获取设计稿:https://lanhuapp.com/web/#/item/project/detailDetach?pid=xxx&project_id=xxx&image_id=yyy"

# MCP Server 自动:
# 1. 提取 projectId 和 imageId
# 2. 调用 getDesignDocument(imageId, projectId)
# 3. 返回完整设计数据

方式三:命令行快速验证

# 确认 Server 能正常启动(会等待 stdio 输入)
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0.1.0"}}}' | LANHU_COOKIE="你的cookie" node dist/index.js

方式四:开发模式 + Inspector

# 使用 tsx 直接运行,改代码无需重新构建
npx @modelcontextprotocol/inspector npx tsx src/index.ts

错误日志

Server 会自动捕获所有异常并记录到日志文件,方便排查问题。

日志位置:

~/.lanhu-mcp/error.log

监控内容:

  • TOOL_ERROR — Tool 调用失败(含工具名、参数、完整堆栈)
  • UNCAUGHT_EXCEPTION — 未捕获异常
  • UNHANDLED_REJECTION — 未处理的 Promise 拒绝
  • SIGTERM / SIGINT — 进程退出信号

常用命令:

# 实时查看(推荐,调试时开一个终端窗口常驻)
tail -f ~/.lanhu-mcp/error.log

# 查看全部内容
cat ~/.lanhu-mcp/error.log

# 只看最后 50 行
tail -50 ~/.lanhu-mcp/error.log

# 分页查看(按 q 退出,/ 搜索)
less ~/.lanhu-mcp/error.log

# 只查某个工具的错误
grep "lanhu_download_design" ~/.lanhu-mcp/error.log

# 统计错误次数
grep -c "TOOL_ERROR" ~/.lanhu-mcp/error.log

# 清空日志
> ~/.lanhu-mcp/error.log

# 用编辑器打开
code ~/.lanhu-mcp/error.log   # VSCode / Cursor

日志格式:

[2026-07-15T02:02:50.582Z] TOOL_ERROR [lanhu_get_design_document]: 获取详情失败: Image not exist
Error: 获取详情失败: Image not exist
    at LanhuClient.getDesignDetail (...)
    at ...
Args: {
  "imageId": "invalid-image-id-12345",
  "projectId": "b27d22f6-..."
}
────────────────────────────────────────────────────────────────────────────────

每条日志包含:时间戳 / 类型 / 工具名 / 错误信息 / 调用堆栈 / 调用参数。

项目结构

src/
├── index.ts          # MCP Server 入口(首次配置引导 + stdio 启动)
├── client.ts         # 蓝湖 API 客户端(图层解析、DDS、下载)
├── tools.ts          # MCP Tools 注册
├── dds-codegen.ts    # DDS → Vue / HTML 代码生成器
├── dds-puppeteer.ts  # Puppeteer 提取 DDS 官方代码 + 切图下载
└── types.ts          # 类型定义

参考