Jiang's Tech Journal

Jiang's Tech Journal

首页
分类
关于
Login →
Jiang's Tech Journal

Jiang's Tech Journal

首页 分类 关于
Login
  1. Home
  2. 前端
  3. OpenCode 接入 Figma MCP:无需安装 fork 的 OAuth 解决办法

OpenCode 接入 Figma MCP:无需安装 fork 的 OAuth 解决办法

0
  • 前端
  • Published at 2026-06-29
  • Read 1 times
Jiang
Jiang
Table of Contents
No Table of Contents

在 OpenCode 中接入 Figma 的远程 MCP 服务时,如果 OAuth 授权流程无法正常完成,可以通过手动注册一个 Figma MCP OAuth 客户端来绕过问题。这个方法不需要安装第三方 fork,核心思路是:

  1. 向 Figma 的 MCP OAuth 注册接口申请客户端凭据。
  2. 把返回的 client_id 和 client_secret 写入 opencode.json。
  3. 清理 OpenCode 中已有的 Figma MCP 授权缓存。
  4. 重新运行 opencode mcp auth figma 完成浏览器授权。

本文整理自 GitHub issue 评论,并将原评论中的伪配置改写为更适合直接发布和复制的 Markdown 文档。

适用场景

这个方案适合下面几类情况:

  • 你正在使用 OpenCode。
  • 你想连接 Figma 官方 MCP 服务:https://mcp.figma.com/mcp。
  • opencode mcp auth figma 无法直接完成授权。
  • 你不想为了修复 OAuth 问题去安装 fork 版本。

需要注意的是,OAuth 的 redirect_uri 必须和 OpenCode 实际使用的回调地址一致。原评论中给出的 OpenCode 默认地址是:

http://127.0.0.1:19876/mcp/oauth/callback

如果你的 OpenCode 或 MCP 客户端使用了不同端口或不同回调路径,需要在下面的注册请求和配置文件里同步修改。

第一步:注册 Figma MCP OAuth 客户端

执行下面的命令,向 Figma 注册一个用于 OpenCode 的 OAuth 客户端:

curl -sS -X POST "https://api.figma.com/v1/oauth/mcp/register" \
  -H "Content-Type: application/json" \
  --data '{
    "client_name": "OpenCode Figma MCP",
    "redirect_uris": ["http://127.0.0.1:19876/mcp/oauth/callback"],
    "grant_types": ["authorization_code", "refresh_token"],
    "response_types": ["code"],
    "token_endpoint_auth_method": "none"
  }'

如果请求成功,接口会返回一组客户端凭据。重点记录下面两个字段:

{
  "client_id": "这里是接口返回的 client_id",
  "client_secret": "这里是接口返回的 client_secret"
}

后续配置 OpenCode 时会用到它们。

第二步:配置 opencode.json

打开你的 OpenCode 配置文件。常见文件名包括:

  • opencode.json
  • opencode.jsonc
  • config.json

在 MCP 配置中加入 Figma 远程服务:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "servers": {
      "figma": {
        "type": "remote",
        "url": "https://mcp.figma.com/mcp",
        "oauth": {
          "client_id": "填写第一步返回的 client_id",
          "client_secret": "填写第一步返回的 client_secret",
          "redirect_uri": "http://127.0.0.1:19876/mcp/oauth/callback"
        }
      }
    }
  }
}

如果你的项目里已经有 mcp.servers,不要覆盖整个配置,只需要把 figma 这一段合并进去即可。

版本提示:原 GitHub 评论中的配置示例使用了 clientId 和 clientSecret 这种写法;较新的 OpenCode 配置类型中对应字段是 client_id 和 client_secret。如果你的版本校验不通过,请以当前安装版本的配置 schema 为准。

第三步:清理旧的 Figma 授权缓存

如果之前已经尝试过授权,OpenCode 本地可能已经保存了一份失败或过期的 Figma MCP 授权记录。需要先把它清掉,再重新授权。

原评论中提到的认证缓存文件位置是:

~/.local/share/opencode/mcp-auth.json

打开这个文件,删除其中的 figma 条目。建议只删除 figma 相关内容,不要直接清空整个文件,避免影响其他 MCP 服务的授权信息。

macOS 或 Linux 可以这样打开:

$EDITOR ~/.local/share/opencode/mcp-auth.json

Windows 用户可以在 OpenCode 的本地数据目录中查找 mcp-auth.json,如果路径不同,以你的实际安装位置为准。

第四步:重新执行授权

清理缓存后,重新运行:

opencode mcp auth figma

命令执行后,OpenCode 会打开浏览器并进入 Figma OAuth 授权流程。按浏览器页面提示确认授权,完成后回到 OpenCode。

如果授权成功,OpenCode 就可以通过 Figma MCP 服务访问对应的 Figma 能力。

常见问题

1. 提示 redirect_uri 不匹配

检查三个地方是否一致:

  • 注册客户端时传入的 redirect_uris。
  • opencode.json 中的 oauth.redirect_uri。
  • OpenCode 实际监听的 OAuth callback 地址。

只要其中一个不一致,Figma 都可能拒绝授权。

2. 重新授权后仍然失败

确认 mcp-auth.json 里的旧 figma 记录已经删除,然后再次运行:

opencode mcp auth figma

如果仍然失败,可以重新执行第一步,生成新的 client_id 和 client_secret,再更新配置文件。

3. 配置文件校验失败

优先检查 JSON 格式是否正确:

  • key 必须使用双引号。
  • 字符串值必须使用双引号。
  • 末尾不要多写逗号,除非你的文件是 jsonc 且 OpenCode 允许尾逗号。
  • mcp.servers.figma.oauth 中的字段名要和你的 OpenCode 版本匹配。

4. 是否可以把 client_secret 提交到仓库

不建议。即使这是本地 OAuth 客户端凭据,也应按敏感信息处理。更稳妥的做法是把个人配置放在全局 OpenCode 配置里,或者确保项目配置文件不会被提交到公共仓库。

总结

这个解决办法的关键点并不复杂:手动向 Figma 注册 OAuth 客户端,把返回的凭据交给 OpenCode,然后删除旧授权缓存并重新走一遍授权流程。

当问题出在默认 OAuth 客户端或授权缓存上时,这个方法可以让 OpenCode 继续使用 Figma 官方 MCP 服务,而不需要切换到 fork 版本。

参考来源

  • GitHub 评论:https://github.com/anomalyco/opencode/issues/988#issuecomment-4022520800
  • OpenCode MCP 配置类型:https://github.com/anomalyco/opencode/blob/dev/packages/core/src/config/mcp.ts
Tags: #opencode 1 #figma 1 #mcp 1
Related Posts

OpenCode 接入 Figma MCP:无需安装 fork 的 OAuth 解决办法

在 OpenCode 中接入 Figma 的远程 MCP 服务时,如果 OAuth 授权流程无法正常完成,可以通过手动注册一个 Figma MCP OAuth 客户端来绕过问题。这个方法不需要安装第三方 fork,核心思路是: 向 Figma 的 MCP OAuth 注册接口申请客户端凭据。 把返回

【Vue】VueUse 中 createReusableTemplate 的妙用

在 Vue 3 开发中,虽然推荐使用模板语法,但在封装高阶组件或使用特定 UI 库(如 Naive UI、Element Plus、Ant Design Vue)的表格组件时,我们往往需要编写 Render 函数(h 函数)或使用 JSX/TSX 来处理复杂的自定义列渲染。 对于不熟悉渲染函数 AP

【Vue】 组件内模板复用技巧:createReusableTemplate

在 Vue 组件开发中,我们经常遇到部分模板内容需要在同一组件内多次复用的场景。传统的解决方案如提取子组件、v-for 循环或直接复制粘贴,在某些简单场景下可能显得过于繁琐或冗余。 本文介绍一种利用 Vue 3 组合式 API 和渲染函数特性实现的“局部模板复用”技巧,类似于模板引擎中的“宏(Mac

【Vue】组件二次封装技巧

日常任务开发过程中避免不了进行 UI 组件库部分组件的二次封装使用,记录下长期开发过程中积累的一些经验和网络学习的新技巧,组件二次封装需要解决的无非就是属性 props 如何透传出去,如何复用原有组件的插槽,以及如何调用原组件暴露的方法,这里以比较热门的 UI 框架 Element Plus 为例。

【vue-admin-kit】配置驱动的 Vue 3 后台管理组件工具套件

📖 在线文档:https://vue-admin-kit.jiang.in/ 前言 在企业级后台管理系统开发中,CRUD 页面占据了大量的开发工作。搜索表单、数据表格、新增/编辑弹窗、详情展示……这些重复性的工作不仅耗时,还容易产生不一致的代码风格。 vue-admin-kit 正是为解决这一痛点

[CSS] 移除元素焦点状态

padding: '0' - 移除内边距 border: 'none' - 移除边框 outline: 'none' - 移除焦点时的轮廓线(这是关键!) boxShadow: 'none' - 移除可能的阴影效果

Table of Contents
No Table of Contents
Copyright © 2024 your company All Rights Reserved. Powered by Halo.