Figma MCP代理服务

一个基于Go的HTTP代理服务器,通过自动添加Figma文件参数和处理工具调用来增强模型上下文协议(MCP)工具调用。

  • by bitovi
  • Go
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 bitovi/figma-mcp-proxy

使用说明

Figma MCP代理

一种基于Go的HTTP代理服务器,通过自动添加Figma文件参数并在处理工具调用时打开Figma设计来增强模型上下文协议(MCP)工具调用。

👉 Bitovi可以帮助您将此集成到您自己的SDLC工作流程中: 软件团队的人工智能

它的作用

此代理充当MCP客户端和MCP服务器之间的中介,提供以下功能:

1.工具模式增强

当客户请求可用工具列表时(tools/list),代理:

  • 识别具有以下功能的工具 nodeId 输入模式中的参数
  • 自动向这些工具添加两个附加参数:
    • fileKey:Figma文件标识符(从URL中提取,如 https://figma.com/design/1234/5678?node-id=1-2)
    • fileName:Figma文件名(从相同的URL格式中提取)
  • 更新工具说明,解释如何从Figma URL中提取这些参数

2.具有智能重试和验证功能的自动Figma设计打开

当处理同时包含这两种情况的工具调用时 fileKey 和 fileName 参数,代理使用优化的验证方法:

  • 第一次尝试:立即转发请求,不打开任何文件(如果文件已打开,则立即响应)
  • 错误检测:监视指示文件未打开的错误的响应(“找不到节点”、“AppStateTsApi为null”等)
  • 自动重试并验证:如果检测到文件未打开错误:
    1. 使用打开设计 figma:// URL 方案
    2. 等待初始延迟(可通过配置 FIGMA_OPEN_INITIAL_DELAY_SECONDS,默认10秒)
    3. 每5秒轮询一次Figma MCP服务器,以验证文件是否实际加载(最多60秒)
    4. 验证后检索原始请求
  • 支持macOS、Windows和Linux操作系统
  • 演出:已打开的文件零延迟,根据实际加载时间切换文件时自适应等待
  • 线程安全:使用互斥体来防止并发文件打开操作

配置

可以使用环境变量配置代理:

  • TARGET_URL:代理请求的MCP服务器(默认值: http://localhost:3845)
  • PORT:运行代理服务器的端口(默认值: 3846)
  • FIGMA_OPEN_INITIAL_DELAY_SECONDS:打开Figma文件后开始验证的初始等待时间(默认值: 10 秒)。如果文件在慢速VM上开始加载需要更长时间,请增加此值。
  • API_KEY:用于身份验证的可选承载令牌(如果设置,则需要 Authorization: Bearer <token> 头球

重新启动服务

建议:使用重启脚本

  1. 远程桌面到Windows服务器
  2. 打开PowerShell并运行:
cd C:\figma-mcp-proxy
& ".\restart.ps1"

这将停止任务,提取最新代码,重建并重新启动。

手动重启(不更新代码)

如果你只需要重新启动而不需要拉取新代码:

Stop-ScheduledTask -TaskName 'FigmaProxy' -ErrorAction SilentlyContinue
Start-ScheduledTask -TaskName 'FigmaProxy'

检查任务状态

Get-ScheduledTask -TaskName 'FigmaProxy' | Get-ScheduledTaskInfo

查看日志

Get-Content C:\figma-mcp-proxy\logs\proxy.log -Tail 50

故障排除

Figma断开RDP后MCP工具失败

问题:一些Figma MCP工具(特别是 get_design_context)断开与RDP会话的连接后停止工作,即使Figma仍在运行。

原因:当您正常关闭RDP时,Windows会将会话标记为“已断开连接”,这将更改桌面/图形上下文的维护方式。Figma继续运行,但需要活动图形会话的工具失败。

解决方案:自动断开连接脚本(推荐)

在断开连接之前,请运行以下脚本,而不是正常关闭RDP窗口:

cd C:\figma-mcp-proxy
& ".\disconnect-rdp.ps1"

这会自动将您的会话转移到控制台,使其保持活动状态。

手动方法

如果脚本失败,您可以手动转移会话:

  1. 以管理员身份打开命令提示符
  2. 运行: query session
  3. 查找您的会话ID(状态=活动)
  4. 运行: tscon <ID> /dest:console (例如。, tscon 2 /dest:console)

用法

启动代理

go run main.go

或者使用自定义配置:

TARGET_URL=http://localhost:3000 PORT=8080 go run main.go