基于MCP协议构建智能设计上下文工具,打通AI与蓝湖设计协作
2026/5/5 17:38:34 网站建设 项目流程

1. 项目概述:一个专为设计协作提效的智能上下文工具

最近在和一些UI/UX设计师朋友交流时,发现一个高频痛点:设计稿评审和交付环节的“信息断层”问题。设计师在蓝湖、Figma等平台上交付了设计稿,但开发、产品、测试同学在查看时,往往需要反复询问“这个按钮的交互逻辑是什么?”、“这个状态异常时显示什么?”、“这里的文案最终定稿了吗?”。这些散落在聊天记录、会议纪要、产品文档里的“上下文信息”,无法与设计稿本身强关联,导致沟通成本巨大,版本管理混乱。

我关注的这个名为refinist/lanhu-context-mcp的项目,正是瞄准了这个痛点。从名字拆解来看,“lanhu-context”直指蓝湖设计平台的上下文,“MCP”则很可能指的是“Model Context Protocol”,这是一个新兴的、用于为大型语言模型(LLM)提供结构化上下文数据的协议标准。简单来说,这个项目很可能是一个桥梁工具:它能够从蓝湖这类设计协作平台中,提取设计稿相关的结构化上下文信息(如标注说明、版本历史、关联任务、评审评论等),并通过MCP标准协议,提供给像ChatGPT、Claude等AI助手使用。

想象一下这个场景:开发同学在编码时,可以直接问AI助手:“根据PRD和最新评审意见,这个登录页面的‘忘记密码’按钮在点击后应该跳转到哪个页面?”AI助手通过这个MCP工具,能实时获取到附着在该设计稿元素上的所有最新信息,并给出准确答案。这不仅仅是简单的信息查询,更是将设计交付物变成了一个活的、充满上下文的“知识节点”,极大地提升了团队协作的效率和准确性。对于设计师、产品经理、开发工程师乃至测试人员,这都意味着工作流的一次潜在革新。

2. 核心设计思路与MCP协议的价值

2.1 为何选择MCP作为技术核心?

在解决“设计上下文孤岛”问题上,其实有多个技术路径可选。比如开发一个浏览器插件,直接抓取蓝湖页面数据;或者做一个中间件API,同步数据到内部Wiki。但lanhu-context-mcp选择了基于Model Context Protocol来构建,这是一个非常具有前瞻性的决策。

MCP协议的核心思想是标准化。它定义了一套统一的方式,让任何数据源(如数据库、API、本地文件系统,乃至像蓝湖这样的SaaS平台)都能以“工具(Tools)”和“资源(Resources)”的形式,将自己的能力暴露给AI助手。AI助手通过MCP服务端(Server)来调用这些工具和访问资源,无需关心底层数据源的具体实现。这带来了几个关键优势:

  1. 解耦与通用性:项目无需为每个AI助手(Claude Desktop、Cursor、Windmill等)单独开发适配插件。只要这些助手实现了MCP客户端(Client)标准,就能无缝接入本项目提供的蓝湖上下文服务。一次开发,多处使用。
  2. 能力标准化:通过MCP,项目可以将复杂的设计平台操作,抽象成几个简单的、语义化的“工具”。例如,一个叫get_design_comment的工具,用于获取某设计稿的评审意见;一个叫search_design_spec的工具,用于搜索包含特定关键词的设计标注。AI助手只需调用这些工具名,并传入参数(如设计稿URL或ID),就能获得结构化结果。
  3. 上下文动态注入:这是MCP相较于简单API查询更强大的地方。AI助手在对话中,可以根据当前讨论的主题,动态地将相关的设计资源(如某张具体的界面标注图、一段产品需求描述文本)作为上下文注入到对话中。这使得AI的回答不再是基于陈旧的训练数据,而是基于团队实时、权威的设计资产。

因此,选择MCP,意味着项目定位不是一个简单的信息爬虫,而是一个旨在融入下一代AI原生工作流的“智能上下文服务”。

2.2 项目核心功能模块拆解

基于MCP的架构,我们可以推断lanhu-context-mcp至少包含以下核心模块:

  1. 认证与连接器(Authenticator & Connector):负责与蓝湖平台API进行安全认证(通常是OAuth 2.0)和建立连接。这部分需要处理令牌的获取、刷新,以及模拟用户会话以访问有权限的设计项目和数据。
  2. 数据模型映射器(Data Model Mapper):蓝湖API返回的数据有其自身的结构。此模块需要将这些原始数据,映射、清洗、转换为符合项目内部定义的、更通用的“设计上下文数据模型”。例如,将蓝湖的“标注点”、“评论”、“版本”等,统一转换为DesignElementCommentRevision等对象。
  3. MCP服务器实现(MCP Server Implementation):这是项目的核心。它需要实现MCP协议规定的Server接口,至少包括:
    • 工具(Tools)暴露:声明并提供一系列工具函数。例如:
      • get_design_details(design_url):获取设计稿基本信息及元素树。
      • list_comments(design_id, element_id=None):列出设计稿或特定元素的评论。
      • get_measurements(design_id, element_id):获取某个元素的详细标注(尺寸、颜色、字体等)。
      • search_design_text(keyword, project_id):在全项目设计稿中搜索文本内容。
    • 资源(Resources)声明:声明一些可通过URI访问的资源。例如:lanhu://design/{id}/spec可以指向一个渲染好的、包含所有标注的设计规范图。
  4. 缓存与同步机制(Cache & Sync):为了避免对蓝湖API的频繁请求导致限流或响应慢,需要实现缓存层。同时,对于“评论更新”这类实时性要求高的数据,可能需要Webhook或轮询机制进行同步,确保AI助手获取的上下文是最新的。

注意:实现此类工具时,严格遵守数据安全和个人隐私规范至关重要。必须明确告知用户该工具会访问其设计平台数据,且所有数据处理应在用户授权范围内进行,避免缓存敏感信息。

3. 实操部署与核心配置详解

要让lanhu-context-mcp运行起来,并接入你的AI助手,需要完成以下几个关键步骤。以下操作基于常见的开发环境(如Node.js/Python实现)进行推演。

3.1 环境准备与依赖安装

首先,你需要一个能够运行JavaScript/TypeScript或Python的环境。假设项目使用Node.js(这是实现MCP服务器的常见选择)。

# 1. 克隆项目仓库 git clone https://github.com/refinist/lanhu-context-mcp.git cd lanhu-context-mcp # 2. 安装项目依赖 npm install # 或 pnpm install / yarn install # 3. 检查项目结构 # 通常你会看到类似如下的目录: # - src/ # 源代码 # - server.ts # MCP服务器主文件 # - lanhu/ # 蓝湖API客户端封装 # - tools/ # MCP工具实现 # - config/ # 配置文件 # - .env.example # 环境变量示例文件

3.2 蓝湖API凭证配置

这是最关键的一步。项目需要凭据来访问你的蓝湖数据。切勿将凭证直接硬编码在代码中。

  1. 获取蓝湖API凭证:登录蓝湖企业版,通常可以在“企业设置” -> “开放平台”或“API管理”中创建应用,获取Client IDClient Secret。部分企业可能需管理员开通。
  2. 配置环境变量:复制项目根目录下的.env.example文件为.env,并填写你的凭证。
# .env 文件内容示例 LANHU_CLIENT_ID=your_client_id_here LANHU_CLIENT_SECRET=your_client_secret_here LANHU_REDIRECT_URI=http://localhost:3000/oauth/callback # OAuth回调地址,本地开发常用 LANHU_ENTERPRISE_DOMAIN=your-company.lanhuapp.com # 你的企业蓝湖域名

实操心得:如果项目支持OAuth,首次运行时会引导你打开浏览器完成授权。授权后获得的access_tokenrefresh_token通常会被工具自动管理并存储在当前用户目录的安全位置(如~/.config/lanhu-mcp/tokens.json)。确保这个存储文件有适当的权限保护。

3.3 启动MCP服务器并连接AI客户端

MCP服务器可以以独立进程运行,并通过标准输入输出(stdio)或SSE(Server-Sent Events)与客户端通信。以Claude Desktop为例,你需要修改其配置文件来添加本地的MCP服务器。

  1. 启动MCP服务器(开发模式)

    npm run dev

    服务器启动后,通常会监听某个端口(如3000),并打印出可用的工具列表。

  2. 配置Claude Desktop: 找到Claude Desktop的配置文件夹(macOS通常在~/Library/Application Support/Claude/,Windows在%APPDATA%\Claude\)。 编辑或创建claude_desktop_config.json文件,添加你的MCP服务器配置。

    { "mcpServers": { "lanhu-design-context": { "command": "node", "args": [ "/ABSOLUTE/PATH/TO/your/lanhu-context-mcp/build/server.js" // 指向你编译后的服务器入口文件 ], "env": { "LANHU_CLIENT_ID": "your_client_id_here", "LANHU_CLIENT_SECRET": "your_client_secret_here" } } } }

    关键点commandargs必须指向你项目编译后的可执行文件或脚本。开发时可以用tsxnodemon,但生产配置需要稳定的执行路径。配置完成后,重启Claude Desktop。

  3. 验证连接:重启后,在Claude的输入框中,你可以尝试输入“你能用哪些工具?”或直接询问关于设计稿的问题,例如:“帮我看看链接为https://lanhuapp.com/xxx的这个设计稿最近有哪些评审评论?” 如果配置成功,Claude应该能识别出lanhu-context-mcp提供的工具,并调用它来获取信息。

3.4 核心工具的使用示例与参数解析

成功连接后,你就可以在对话中自然地使用这些工具了。以下是一些典型的使用场景和背后的参数解析:

  • 场景一:查询设计稿标注

    • 用户提问:“这个登录按钮的尺寸和颜色值是多少?”(同时附上设计稿链接)
    • AI助手行为:AI识别出问题关联设计稿,自动调用get_measurements工具,参数为从链接中解析出的design_idelement_id(可能是按钮的图层名或ID)。工具返回结构化数据:{“width”: 120, “height”: 44, “backgroundColor”: “#1677ff”, “fontSize”: 16, ...}。AI再组织成自然语言回复你。
  • 场景二:追溯设计决策

    • 用户提问:“为什么这个模态框的确认按钮放在了左边?有相关的讨论记录吗?”
    • AI助手行为:AI可能先调用get_design_details获取元素信息,再调用list_comments,并筛选出与该模态框元素相关的评论。它会将评论内容、评论人、时间作为上下文,总结出设计决策的原因。
  • 场景三:跨设计稿搜索

    • 用户提问:“我们产品里所有用到‘危险操作’的红色按钮样式,能给我看看吗?”
    • AI助手行为:这需要更复杂的工具支持。理想情况下,项目应提供search_design_by_property工具,允许按颜色值、文本内容、组件名等属性进行搜索。AI会调用此工具,传入color: “#ff4d4f”text: “删除”等参数,返回匹配的设计元素列表及所属页面链接。

参数设计背后的逻辑:工具的参数设计应尽可能与设计师、开发者的自然语言查询对齐。design_id通常可以从蓝湖的URL中提取。element_id的获取是个难点,因为蓝湖前端的图层ID在API中可能不直接暴露。一个可行的方案是,工具内部利用蓝湖的“标注点”数据,或通过图层名称、位置进行模糊匹配。这就要求工具在设计上具备一定的容错和智能检索能力。

4. 深入原理:数据流与上下文管理

4.1 从蓝湖到AI对话的完整数据流

理解数据如何流动,有助于排查问题和进行高级定制。一个完整的请求流程如下:

  1. 用户提问:用户在AI助手界面提出一个涉及设计稿的问题。
  2. 意图识别与工具选择:AI助手的本地模型(或云端模型)解析用户意图,判断需要调用哪个MCP工具。例如,识别到“标注”、“尺寸”等关键词,选择get_measurements工具。
  3. MCP协议通信:AI助手(MCP客户端)通过stdio或SSE通道,向lanhu-context-mcp服务器发送一个格式化的JSON-RPC请求,包含tool_namearguments
  4. 服务器处理lanhu-context-mcp服务器收到请求,路由到对应的工具处理函数。
  5. 调用蓝湖API:工具函数使用配置的OAuth令牌,向蓝湖的官方API发起HTTPS请求(例如,获取特定设计稿标注的API端点)。
  6. 数据转换与增强:收到蓝湖API的响应后,工具函数进行数据清洗、转换和增强。例如,将像素值转换为dp/pt单位,将颜色RGBA值转换为十六进制和CSS变量名(如果项目有设计系统映射)。
  7. MCP协议返回:处理后的结构化数据被包装成MCP协议规定的响应格式,通过同一通道返回给AI助手。
  8. 上下文注入与回复生成:AI助手将获取到的精确数据作为当前对话的上下文,生成最终的自然语言回复,呈现给用户。

这个过程中,步骤5和6是性能与准确性的关键。蓝湖API可能有速率限制,因此需要在服务器端实现请求队列和缓存。数据转换的规则也需要根据团队的设计规范进行定制。

4.2 上下文的高效管理与缓存策略

MCP协议支持“资源(Resources)”概念,这对于管理设计上下文非常高效。与其每次问答都重新获取全部数据,不如将常用的、静态的数据声明为资源。

  • 静态资源:例如,一份已定稿的设计规范图(Spec)。可以声明一个资源URI如lanhu://design/123/spec。当AI助手认为需要参考该规范时,可以直接在后台“加载”此资源内容到上下文窗口,用户无需显式请求。
  • 动态工具:对于评论、最新版本等动态信息,则通过工具调用实时获取。

缓存策略建议

  • 设计稿元数据缓存:项目信息、设计稿列表、页面结构等不常变化的数据,可以设置较长的缓存时间(如1小时)。
  • 标注与样式缓存:设计元素的详细标注信息,在设计师未更新版本前相对稳定,可缓存30分钟。
  • 评论与动态信息缓存:评论、任务状态等实时性要求高,缓存时间应很短(如1-2分钟),或通过监听Webhook实现即时失效。
  • 缓存存储:简单的可以存储在内存中(如LRU Cache),对于需要持久化或分布式部署的场景,可以使用Redis。

一个健壮的缓存实现,能减少90%以上的蓝湖API调用,极大提升响应速度并避免触发限流。

5. 常见问题排查与实战技巧

在实际部署和使用lanhu-context-mcp的过程中,你可能会遇到以下典型问题。这里提供我的排查思路和解决经验。

5.1 认证失败与令牌问题

问题现象:AI助手提示“无法连接到设计上下文服务”或“认证失败”。

排查步骤

  1. 检查环境变量:首先确认.env文件中的LANHU_CLIENT_IDLANHU_CLIENT_SECRET是否正确无误,且没有多余的空格。可以尝试在项目根目录运行node -e “console.log(process.env.LANHU_CLIENT_ID)”来验证环境变量是否被正确加载。
  2. 检查令牌文件:找到工具存储令牌的文件(如~/.config/lanhu-mcp/tokens.json)。检查其内容是否有效,或直接删除该文件,让工具重新走一遍OAuth授权流程。有时令牌过期或损坏会导致问题。
  3. 验证API权限:登录蓝湖开放平台,确认你创建的应用是否已申请并获得了必要的API权限范围(Scopes),例如design:readcomment:read等。权限不足会导致访问某些接口时被拒。
  4. 网络与代理:如果你在公司网络中使用,可能需要配置HTTP代理。在启动命令前设置环境变量HTTP_PROXYHTTPS_PROXY

5.2 MCP服务器连接失败

问题现象:Claude Desktop重启后,无法识别新添加的工具,或在日志中看到连接错误。

排查步骤

  1. 确认服务器可独立运行:在终端直接运行node /path/to/server.js,看服务器是否能正常启动并打印日志,而不是立即退出。确保所有依赖都已安装。
  2. 检查配置文件路径这是最常见的问题claude_desktop_config.json中的commandargs必须是绝对路径。确保node的路径也是全路径(在终端输入which node获取)。对于打包成单一可执行文件的项目,command就是该文件的路径。
  3. 检查配置文件格式:JSON文件必须格式正确,不能有注释(除非客户端支持)。可以使用在线JSON校验工具检查。
  4. 查看客户端日志:Claude Desktop通常有日志文件。在macOS上,可以在~/Library/Logs/Claude/找到;Windows则在%APPDATA%\Claude\logs\。查看日志中是否有关于加载MCP服务器的错误信息。

5.3 工具调用无响应或返回空数据

问题现象:AI助手尝试调用工具,但长时间无反应,或返回的结果为空。

排查步骤

  1. 启用详细日志:在启动MCP服务器时,设置调试环境变量,如DEBUG=mcp:*或查看项目是否支持--verbose标志。这能让你看到详细的请求和响应日志。
  2. 手动测试工具:如果项目提供了简单的测试脚本或示例,尝试直接用curl或Node.js脚本调用本地服务器,模拟工具调用,看是否能得到预期响应。这能隔离AI客户端的问题。
  3. 检查设计稿权限:确保当前用于认证的蓝湖账号,有权限访问你所查询的设计稿。尝试在浏览器中直接打开该设计稿链接,确认可访问。
  4. 参数格式问题:仔细阅读项目文档,确认工具所需的参数格式。例如,design_id可能不是URL,而是蓝湖内部的一串数字ID,需要从URL中解析。

5.4 性能优化与稳定性提升技巧

  • 为常用项目预热缓存:可以写一个简单的脚本,在服务器启动后,自动调用工具获取你团队核心项目的设计稿列表和基础信息,提前加载到缓存中。
  • 实现健康检查端点:如果以HTTP服务器模式运行,可以增加一个/health端点,返回服务器状态和蓝湖API连接状态,方便监控。
  • 处理蓝湖API限流:在代码中实现指数退避重试机制。当遇到429(Too Many Requests)状态码时,等待一段时间再重试,避免雪崩。
  • 结构化错误信息:确保工具函数返回的错误信息是结构化的,这样AI助手能更好地理解错误原因(如“权限不足”、“设计稿不存在”),并给出更友好的用户提示。

6. 扩展应用场景与未来展望

lanhu-context-mcp的价值远不止于简单的问答。当设计上下文能够被AI无缝理解和调用时,可以衍生出许多强大的应用场景:

  1. 自动化生成开发文档:AI可以基于完整的设计稿上下文(标注、评论、PRD链接),自动生成一份结构清晰的开发说明文档,包含界面描述、交互逻辑、视觉规范、待澄清问题列表等。
  2. 设计系统一致性检查:AI可以遍历项目中的设计稿,检查组件使用是否符合设计系统规范(如按钮圆角、字体层级、间距基准),并生成检查报告。
  3. 智能代码片段生成:结合具体的组件标注和设计系统Token,AI可以为前端开发生成更精准的样式代码片段(CSS-in-JS、Tailwind CSS等)。
  4. 多模态设计搜索:未来结合图像识别,可以通过“画个草图”或“描述一个样式”来搜索历史设计稿中类似的界面或组件,提升设计素材的复用率。
  5. 融入CI/CD流程:在代码审查阶段,AI可以自动关联改动所涉及的设计稿,并将最新的设计上下文提供给评审者,确保实现与设计保持一致。

这个项目的真正潜力在于,它试图将“设计资产”从静态的图片文件,转变为动态的、可查询的、富含知识图谱的“数字产品原型”。它不仅是效率工具,更是团队知识管理和传承的枢纽。当然,实现这些远景需要项目持续迭代,包括更精细的数据模型、更智能的工具抽象,以及对更多设计平台(如Figma、MasterGo)的适配。但起点已经非常明确:通过MCP这个开放协议,让AI成为团队设计上下文的超级连接者和解释者。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询