前言¶
在 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。
这是什么¶
- 仓库: lcf2212dev/dsh-figma-mcp-oauth
- npm 包名:
@dsh-burn-plugins/dsh-figma-mcp-oauth(当前资料中版本 0.1.0,MIT 许可证) - 目录页: SkillHub 插件页(社区目录,与 DeepSeek / 幻方无官方从属关系)
一句话:连接 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 流程概要¶
figma_login在127.0.0.1:<redirectPort>/callback监听本机回环。- MCP SDK 发现元数据:
https://mcp.figma.com/.well-known/oauth-protected-resource→https://api.figma.com/.well-known/oauth-authorization-server。 - 无缓存注册信息时,在
https://api.figma.com/v1/oauth/mcp/register做动态客户端注册(RFC 7591),使用配置的clientName。 - 拼装
https://www.figma.com/oauth/mcp(PKCE S256、一次性state、resource=https://mcp.figma.com/mcp),按配置尝试打开浏览器。 - 浏览器回到本地 callback;校验
state后换 token(Figma code 约 30 秒内过期,插件侧要求在 30 秒内完成交换)。 - 带
Authorization: Bearer …连接 MCP,注册工具。 - 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(默认)¶
- 安装 bundle 并加载 profile。
- 在 Composer 或 agent 中调用
figma_login,或执行阻塞式命令/figma-login。 - 在浏览器完成 Figma 授权;成功后用
figma_status确认已连接及工具数量。 - 在对话中让 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 目录页。