在 OpenCode 中接入 Figma 的远程 MCP 服务时,如果 OAuth 授权流程无法正常完成,可以通过手动注册一个 Figma MCP OAuth 客户端来绕过问题。这个方法不需要安装第三方 fork,核心思路是:
- 向 Figma 的 MCP OAuth 注册接口申请客户端凭据。
- 把返回的
client_id和client_secret写入opencode.json。 - 清理 OpenCode 中已有的 Figma MCP 授权缓存。
- 重新运行
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.jsonopencode.jsoncconfig.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 版本。