dsh-figma-mcp-oauth:用 OAuth 把 Figma MCP 接入 DeepSeek Harness

前言

在 DeepSeek Harness(DSH)里,智能体要通过 MCP 读写设计上下文,通常要面对两件事:远程 Figma MCP 需要授权,且工具要在 Harness 里以统一命名暴露给 agent。自己拼 HTTP 客户端、保管 token、再把工具注册进 ctx.tools,步骤多且容易和官方桥接行为不一致。

dsh-figma-mcp-oauth 由社区维护者 lcf2212dev 发布,分类为工作流。它把 Figma 官方 MCP 端点(https://mcp.figma.com/mcp)用 OAuth 2.1(授权码 + PKCE S256 + 动态客户端注册)连到 Harness,授权完成后将服务端工具以 mcp__figma__<tool> 形式注册;token 落在 Harness 凭证库,不写进配置文件。插件为 Host-only bundle:无 Client 半部、无自有 UI。

这是什么

一句话:连接 Figma MCP Server 并完成 OAuth,再把设计相关 MCP 工具桥接进 DSH agent。

核心功能

下面按 README 中已列出的能力说明;未在资料中出现的工具名或接口不写。

登录与连接管理

入口 作用
figma_login(工具) 启动或续接 OAuth;默认返回授权 URL、不阻塞;wait: true 时等待回调
figma_status(工具) 已连接 / 未连接、mcp__figma__* 工具数量、待处理 URL
figma_logout(工具) 删除本地 grant 并注销已注册的服务端工具
/figma-login(Composer 命令) 与 figma_login 相同,但阻塞直到回调(适合人在屏幕前操作)

另:ctx.authorization 中注册同名 Figma MCP 流程,供日后需要渲染授权流的界面使用。

授权后的 MCP 工具

授权成功后连接 https://mcp.figma.com/mcp,发现工具列表并注册到当前 generation 的 ctx.tools。对外名称为 mcp__figma__*(默认 serverName 为 figma)。README 提及的能力包括设计上下文、截图、写入画布等,具体以 Figma MCP 服务端当前工具列表为准。

插件还会把 MCP 服务端的 instructions 写入 system prompt(位置与官方 bridge 一致),并在相关服务存在时注册 ctx.mcpResources 上的资源操作。

OAuth 流程概要

  1. figma_login 在 127.0.0.1:<redirectPort>/callback 监听本机回环。
  2. MCP SDK 发现元数据:https://mcp.figma.com/.well-known/oauth-protected-resource → https://api.figma.com/.well-known/oauth-authorization-server。
  3. 无缓存注册信息时,在 https://api.figma.com/v1/oauth/mcp/register 做动态客户端注册(RFC 7591),使用配置的 clientName。
  4. 拼装 https://www.figma.com/oauth/mcp(PKCE S256、一次性 state、resource=https://mcp.figma.com/mcp),按配置尝试打开浏览器。
  5. 浏览器回到本地 callback;校验 state 后换 token(Figma code 约 30 秒内过期,插件侧要求在 30 秒内完成交换)。
  6. 带 Authorization: Bearer … 连接 MCP,注册工具。
  7. 401 时自动 refresh 并重试;refresh 失败则提示再次 figma_login。

安装与启用

资料中的安装方式为向 Harness profile 安装 bundle(安装器会 pnpm add <directory> 并以 link: 依赖注册;peer 依赖由 DSH 环境解析,bundle 本身不从 npm 拉取依赖):

plugin_manager action=install_bundle target=/absolute/path/dsh-figma-mcp-oauth

请将 target 换成本机 clone 或解压后的绝对路径。插件在 DSH 进程权限下运行,安装前应自行查看源码与 MIT 许可证,确认可接受其 OAuth 与命名策略。

启用后,配置写在 bundle 的 cordis.patch.yml 里 figma-mcp 行,常见字段如下(默认值以 README 为准):

字段 默认值 含义
url https://mcp.figma.com/mcp Figma MCP Streamable HTTP 端点
serverName figma 工具命名空间:mcp__<serverName>__<rawName>
authMode oauth 桌面 MCP 可设为 none
clientName Claude Code (DSH) 动态注册时的 client_name(见下文策略说明)
scope mcp:connect Figma AS 当前公布的 scope
redirectPort 3846 本机回调端口;需保持稳定(redirect_uri 逐字节比对)
loginTimeoutMs 180000 单次等待回调上限
toolCallTimeoutMs 60000 单次 tools/call 超时
autoConnect true 已有 grant 时加载即连接
openBrowser true 是否尝试在宿主机打开授权 URL

修改 clientName 会使缓存的客户端注册失效,下次 figma_login 需重新注册。修改 url / redirectPort 后需先 figma_logout 再 figma_login。当前仅支持动态注册(DCR),无预注册 OAuth client 配置项;若未来支持,密钥只从凭证库读取,不写入 cordis.patch.yml。

典型用法

远程 MCP + OAuth(默认)

  1. 安装 bundle 并加载 profile。
  2. 在 Composer 或 agent 中调用 figma_login,或执行阻塞式命令 /figma-login。
  3. 在浏览器完成 Figma 授权;成功后用 figma_status 确认已连接及工具数量。
  4. 在对话中让 agent 调用 mcp__figma__* 工具(名称以 figma_status / 工具列表为准)。

桌面模式(免 OAuth)

适用本机 Figma 桌面端 MCP(需更新版桌面应用、打开设计文件、Dev Mode 下启用 desktop MCP server;README 要求付费计划上的 Dev/Full seat)。配置示例:

- id: figma-mcp
  name: '@dsh-burn-plugins/dsh-figma-mcp-oauth'
  config:
    url: http://127.0.0.1:3845/mcp
    authMode: none
    autoConnect: true

README 说明:该路径无远程服务端的 write-to-canvas 与设计生成类工具。

适用场景与注意

适合谁

  • 希望在 DSH agent 中直接使用 Figma 官方远程 MCP 能力、且愿意走浏览器 OAuth 的开发者。
  • 已有 Figma 桌面 MCP、只需本机 authMode: none 桥接的团队。

clientName: 'Claude Code (DSH)' 与 Figma 策略

Figma 远程 MCP 的动态注册不接受任意 client_name:需符合其 MCP 目录中的客户端前缀(如 Claude Code / Claude Desktop)或恰好为 Codex,否则可能得到 403 Forbidden。本插件使用该名称作为显式兼容选项,是资料记载的、第三方客户端当前能连远程服务的路径之一。后果包括:同意页展示的是目录客户端品牌(如「Figma MCP in Claude Code」),而非 DeepSeek Harness;属于 Figma beta 期访问限制上的变通,若 Figma 收紧校验可能失效。合法替代包括:申请 Figma MCP 目录 waitlist、改用上述桌面模式,或待 Figma 开放第三方客户端后再演进配置。

安全与凭证

  • Grant(客户端信息、token、code verifier、state、发现状态)存在 Harness 凭证库记录 figma-mcp/oauth,不在 patch 文件里。
  • 回调仅监听 127.0.0.1;figma_logout 删除本地记录并断开连接。README 注明:本地注销后,Figma 账户侧会话仍可能保留直至过期或被撤销。

排错提示(资料摘录)

登录时出现与 catalog 相关的 403 Forbidden,多与 clientName 不在允许列表或 Figma 调整门槛有关,可按 README 调整 clientName 或改用 waitlist / 桌面模式。

结尾

dsh-figma-mcp-oauth 把 Figma MCP 的 OAuth、工具注册与 Harness 凭证管理收成一条工作流插件路径,减少自建桥接的成本。进一步了解实现与配置,见 GitHub 仓库 README 与 SkillHub 目录页。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜