使用说明
Figma MCP服务器
一个模型上下文协议(MCP)服务器,通过Claude和其他兼容MCP的客户端提供与Figma的API的集成。目前支持对Figma文件和项目的只读访问,服务器端架构能够支持更高级的设计令牌和主题管理功能(等待Figma API增强或插件开发)。
项目状态
进展
- ✅ 核心实施:已按照模型上下文协议(MCP)成功构建TypeScript服务器
- ✅ Claude桌面集成:使用Claude Desktop进行测试并正常工作
- ✅ 读取操作:工作
get-file和list-filesFigma文件访问工具 - ✅ 服务器架构:已实施缓存系统、错误处理和统计监控
- ✅ 传输协议:支持stdio和SSE传输机制
潜在的完整功能
服务器的设计代码支持以下功能(目前受API限制):
- 变量管理:创建、读取、更新和删除设计标记(变量)
- 参考资料处理:创建和验证令牌之间的关系
- 主题管理:创建具有多种模式的主题(例如,亮/暗)
- 相关性分析:检测并防止循环引用
- 批量操作:对变量和主题执行批量操作
随着Figma插件开发或扩展API访问,这些功能可以完全启用。
特性
- 🔑 使用Figma API进行安全身份验证
- 📁 文件操作(读取、列表)
- 🎨 设计系统管理
- 变量创建和管理
- 主题创建和配置
- 参考处理和验证
- 🚀 性能优化
- LRU缓存
- 费率限制处理
- 连接池
- 📊 综合监控
- 健康检查
- 使用统计
- 误差跟踪
先决条件
- Node.js 18.x或更高版本
- 具有适当权限的Figma访问令牌
- 对MCP(模型上下文协议)的基本理解
安装
npm install figma-mcp-server
配置
- 创建一个
.env文件基于.env.example:
# Figma API Access Token
FIGMA_ACCESS_TOKEN=your_figma_token
# Server Configuration
MCP_SERVER_PORT=3000
# Debug Configuration
DEBUG=figma-mcp:*
- 对于Claude Desktop集成:
服务器可以在Claude Desktop配置文件中配置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"figma": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/figma-mcp-server/dist/index.js"],
"env": {
"FIGMA_ACCESS_TOKEN": "your_token_here"
}
}
}
}
重要提示:
- 使用绝对路径,而不是相对路径
- 在Windows上,在路径中使用双反斜杠(\\)
- 更改配置后重新启动Claude Desktop
用法
基本用法
import { startServer } from 'figma-mcp-server';
const server = await startServer(process.env.FIGMA_ACCESS_TOKEN);
可用工具
-
获取文件
- 检索Figma文件详细信息
{ "name": "get-file", "arguments": { "fileKey": "your_file_key" } } -
列出文件
- 列出Figma项目中的文件
{ "name": "list-files", "arguments": { "projectId": "your_project_id" } } -
创建变量
- 创建设计系统变量
{ "name": "create-variables", "arguments": { "fileKey": "your_file_key", "variables": [ { "name": "primary-color", "type": "COLOR", "value": "#0066FF" } ] } } -
创建主题
- 创建和配置主题
{ "name": "create-theme", "arguments": { "fileKey": "your_file_key", "name": "Dark Theme", "modes": [ { "name": "dark", "variables": [ { "variableId": "123", "value": "#000000" } ] } ] } }
API文档
服务器方法
startServer(figmaToken: string, debug?: boolean, port?: number)- 初始化并启动MCP服务器
- 返回:Promise
工具架构
所有工具输入都使用Zod模式进行验证:
const CreateVariablesSchema = z.object({
fileKey: z.string(),
variables: z.array(z.object({
name: z.string(),
type: z.enum(['COLOR', 'FLOAT', 'STRING']),
value: z.string(),
scope: z.enum(['LOCAL', 'ALL_FRAMES'])
}))
});
错误处理
服务器提供详细的错误消息和正确的错误代码:
- 无效令牌:403,带有特定错误消息
- 速率限制:429,带重置时间
- 验证错误:400个,包含特定字段的详细信息
- 服务器错误:500,错误跟踪
限制和已知问题
API限制
-
只读操作
- 受限于Figma API限制的只读操作
- 个人访问令牌仅支持读取操作,不支持写入操作
- 无法使用个人令牌通过REST API修改变量、组件或样式
- 写操作需要Figma插件开发
-
速率限制
- 遵循Figma API费率限制
- 实施指数回退以获得更好的处理
-
缓存管理
- 默认5分钟TTL
- 仅限500个条目
- 考虑实现缓存失效挂钩
-
认证
- 仅支持个人访问令牌
- 不支持团队级权限或协作编辑
- 未来计划实施OAuth
-
技术实现
- 配置中需要绝对路径
- 执行前必须编译TypeScript文件
- 需要同时处理本地和全局模块解析
贡献
- 分叉存储库
- 创建要素分支
- 通过测试进行更改
- 提交拉取请求
请遵循我们的编码标准:
- TypeScript严格模式
- ESLint配置
- Jest用于测试
- 全面的错误处理
许可证
MIT许可证-有关详细信息,请参阅许可证文件
故障排除
看 故障排除.md 获取全面的故障排除指南。
常见问题
-
JSON连接错误
- 在Claude Desktop配置中使用绝对路径
- 确保服务器已构建(
npm run build) - 验证是否已设置所有环境变量
-
身份验证问题
- 验证您的Figma访问令牌是否有效
- 检查令牌是否具有所需权限
- 确保在配置中正确设置了令牌
-
服务器未启动
- 检查Node.js版本(需要18.x+)
- 验证构建是否存在(
dist/index.js) - 检查克劳德桌面日志:
- macOS:
~/Library/Logs/Claude/mcp*.log - 窗户:
%APPDATA%\Claude\logs\mcp*.log
- macOS:
有关更详细的调试步骤和解决方案,请参阅故障排除指南。