Figma Context MCP
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
作者による説明(英語の原文)
Let Claude create and edit fully editable vector nodes on the Figma canvas.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
FVMCP_CHANNEL, FVMCP_PORT必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"figma-vector": {
"command": "npx",
"args": [
"-y",
"figma-vector-mcp"
],
"env": {
"FVMCP_CHANNEL": "your-value",
"FVMCP_PORT": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add figma-vector --env FVMCP_CHANNEL=your-value --env FVMCP_PORT=your-value -- npx -y figma-vector-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"figma-vector": {
"command": "npx",
"args": [
"-y",
"figma-vector-mcp"
],
"env": {
"FVMCP_CHANNEL": "your-value",
"FVMCP_PORT": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"figma-vector": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"figma-vector-mcp"
],
"env": {
"FVMCP_CHANNEL": "your-value",
"FVMCP_PORT": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
FVMCP_CHANNEL envFVMCP_PORT envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント workingmodel で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.3.3)がレジストリに届いたのは14 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Figma Context MCP, Claude Real Video, Figma MCP Server
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Give your coding agent access to your Figma data. Implement designs in any framework in one-shot.
Let any LLM watch a video locally — and search everything it has ever watched.
The Figma MCP server brings Figma design context directly into your AI workflow.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
A Figma plugin + MCP server that lets Claude (or any MCP client) create and manipulate fully-editable vector nodes on the Figma canvas — paths, shapes, gradients, text, effects, image fills, and more — via a local WebSocket relay.
Developed by [Working Model Inc](https://workingmodel.co)
Version 0.3.3 — 58 tools across creation, styling, layout, components, effects, pages, and export.
cursor-talk-to-figma-mcp is great for reading Figma state and creating basic primitives, but it has no vector path creation, gradient, effects, or compositing tools. This plugin fills that gap:
| Capability | cursor-talk-to-figma-mcp | figma-vector-mcp |
|---|---|---|
| Create rectangle / ellipse / frame / text | ✅ | ✅ |
| Create from SVG string | ❌ | ✅ |
Create from path d string | ❌ | ✅ |
| Create polyline / polygon | ❌ | ✅ |
| Gradient fills (linear, radial, angular, diamond) | ❌ | ✅ |
| Image fills (base64 → canvas) | ❌ | ✅ |
| Effects (shadow, blur) | ❌ | ✅ |
| Blend modes | ❌ | ✅ |
| Boolean operations (union, subtract, etc.) | ❌ | ✅ |
| Auto-layout | ❌ | ✅ |
| Components + instances | ❌ | ✅ |
| Font discovery | ❌ | ✅ |
| Node search | ❌ | ✅ |
| Multi-page management | ❌ | ✅ |
| Named node registry | ❌ | ✅ |
| Batch commands (single round-trip) | ❌ | ✅ |
| Auto-reconnect + command queue | ❌ | ✅ |
| Export SVG + PNG | ❌ | ✅ |
Claude (MCP client)
↕ stdio (MCP protocol) server.ts (MCP server) ↕ WebSocket (ws://localhost:3055) socket.ts (relay — channel-based routing) ↕ WebSocket Figma plugin (ui.html ↔ code.js) ↕ postMessage Figma Plugin API → canvas
The socket relay runs locally. The Figma plugin connects and joins a named channel. The MCP server joins the same channel and sends commands. Results flow back the same path.
For AI agents (Claude Code, Cursor, etc.) — the recommended call sequence to start any session:
1. health_check → confirm plugin is connected
Color convention: All RGB values are 0–1 throughout (matching Figma's internal format). r: 1, g: 0, b: 0 = red. Never use 0–255.
Gradient workflow:
1. create_frame({ width, height }) → get frameId
Image fill workflow (with generative AI):
1. Generate image via Replicate/fal.ai → get base64 PNG
Batch compositions — use $prev.id to chain commands without extra round-trips:
{ "commands": [
{ "command": "create_frame", "params": { "width": 400, "height": 300, "name": "Card" } }, { "command": "set_gradient_fill", "params": { "nodeId": "$prev.id", "type": "LINEAR", "stops": [{"color":{"r":0.1,"g":0.1,"b":0.9},"position":0}, {"color":{"r":0.8,"g":0.2,"b":0.5},"position":1}] } }, { "command": "create_text", "params": { "parentId": "$results.0.id", "text": "Hello", "fontSize": 32, "x": 24, "y": 24 } } ]}
Known SVG limits: figma.createNodeFromSvg() strips , gradients, filters, masks, and animations. Use set_gradient_fill for gradients instead of SVG .
Reconnection: If the plugin disconnects, it auto-reconnects with exponential backoff (1s→30s max) and replays queued commands (up to 30s old). No manual intervention needed for short interruptions.
src/figma-plugin/manifest.jsonnpm install -g figma-vector-mcp
bun run socket
Listens on ws://localhost:3055. Auto-start on login (macOS):
./scripts/setup.sh --launchd
# Auto-detect Claude Code / Cursor and write config:
./scripts/setup.sh
./scripts/setup.sh --local
./scripts/setup.sh --hooks
Manual config (~/.claude/settings.json or ~/.cursor/mcp.json):
{
"mcpServers": { "FigmaVectorMCP": { "command": "bunx", "args": ["figma-vector-mcp@latest"], "env": { "FVMCP_CHANNEL": "figma-vector-mcp" } } } }
ws://localhost:3055) → Connectfigma-vector-mcp) → JoinThe plugin saves your last URL and channel — pre-filled on next open. Keep the plugin panel open during your session — closing it terminates the WebSocket connection.
health_check → { "status": "ok", "version": "0.3.3", "currentPage": { ... } }
| Variable | Default | Description |
|---|---|---|
FVMCP_PORT | 3055 | Socket relay port |
FVMCP_CHANNEL | figma-vector-mcp | Channel name — must match the plugin |
FVMCP_TIMEOUT_MS | 10000 | Default command timeout (ms) |
Per-tool timeout overrides: health_check → 3s, export_node_as_png → 30s, export_node_as_svg → 15s, create_batch → 60s.
| Tool | Description | Key Params |
|---|---|---|
health_check | Ping plugin; confirm connectivity | — |
join_channel | Join a named channel | channel |
| Tool | Description | Key Params |
|---|---|---|
create_vector_from_svg | Place editable vector from SVG string | svg, x, y, name, parentId |
create_path | Vector from SVG d path string | d, x, y, fillColor, strokeColor, strokeWeight |
create_polyline | Vector from x,y point pairs | points, closed, strokeColor, strokeWeight |
| Tool | Description | Key Params |
|---|---|---|
create_frame | Container frame | width, height, x, y, fillColor |
create_rectangle | Rectangle | width, height, x, y, fillColor |
create_ellipse | Ellipse / circle | width, height, x, y, fillColor |
create_text | Text node with optional fixed-width column | text, fontSize, fontFamily, fontStyle, fillColor, width, height, textAutoResize |
| Tool | Description | Key Params |
|---|---|---|
set_fill_color | Solid RGBA fill (0–1) | nodeId, r, g, b, a |
set_gradient_fill | Gradient fill — LINEAR, RADIAL, ANGULAR, DIAMOND | nodeId, type, stops, angle, center, gradientTransform |
set_image_fill | Base64 image as fill | nodeId, base64, scaleMode, opacity |
| Tool | Description | Key Params |
|---|---|---|
set_stroke | Full stroke control | nodeId, color, weight, position, dashPattern, lineCap, lineJoin |
set_stroke_color | Quick stroke colour + weight | nodeId, r, g, b, a, weight |
| Tool | Description | Key Params | |
|---|---|---|---|
set_effect | Drop shadow, inner shadow, blur, background blur | nodeId, effects[] (type, color, offset, blur, spread), mode (REPLACE \ | APPEND) |
set_blend_mode | Layer blend mode | nodeId, mode (NORMAL, MULTIPLY, SCREEN, OVERLAY…) |
| Tool | Description | Key Params |
|---|---|---|
set_corner_radius | Corner radius — uniform or per-corner | nodeId, radius or topLeft, topRight, bottomLeft, bottomRight |
set_opacity | Opacity 0–1 | nodeId, opacity |
set_text_style | Modify text properties + text box size | nodeId, fontSize, fontFamily, fontStyle, letterSpacing, lineHeight, textAlign, fillColor, width, height, textAutoResize |
rename_node | Rename a node | nodeId, name |
set_visibility | Show or hide a node | nodeId, visible |
reorder_node | Change Z-order within parent | nodeId, action (BRING_TO_FRONT / SEND_TO_BACK / BRING_FORWARD / SEND_BACKWARD) or index |
move_node | Reposition | nodeId, x, y |
resize_node | Resize | nodeId, width, height |
delete_node | Remove from canvas | nodeId |
clone_node | Duplicate, optionally reposition | nodeId, x, y, parentId |
group_nodes | Group nodes | nodeIds[], name, parentId |
ungroup_nodes | Ungroup | nodeId |
boolean_operation | Union, subtract, intersect, exclude | nodeIds[], operation, name |
create_mask | Clip mask — maskNode clips targetNode | maskNodeId, targetNodeId, name |
| Tool | Description | Key Params |
|---|---|---|
set_auto_layout | Enable / configure auto-layout | nodeId, direction, spacing, padding, primaryAxisAlign, counterAxisAlign, primaryAxisSizingMode, counterAxisSizingMode, wrap |
set_layout_grid | Column / row / grid guides on a frame | nodeId, grids[] (pattern, count, gutterSize, sectionSize, alignment, color) |
batch_set_properties | Bulk update fill/stroke/opacity/position/size | operations[] (nodeId + any subset of properties) |
| Tool | Description | Key Params |
|---|---|---|
create_component | Convert frame/group to component | nodeId, name |
create_instance | Place component instance | componentId, x, y, parentId |
get_components | List all local components | — |
get_library_components | Search local components by name | query |
| Tool | Description | Key Params |
|---|---|---|
get_document_info | Document name, pages, current page children | — |
get_selection | Currently selected nodes | — |
get_node_info | Full node detail: fills, strokes, layout, text, constraints | nodeId |
set_focus | Scroll viewport to node and select it | nodeId |
find_nodes | Search by name and/or type | query, type, pageId, recursive |
get_page_list | All pages | — |
switch_page | Activate a page | pageId or pageName |
create_page | Create a new page | name |
duplicate_frame_to_page | Copy node to another page | nodeId, targetPageId, x, y |
| Tool | Description | Key Params |
|---|---|---|
register_node | Save named alias for a node ID (persists in document) | alias, nodeId |
resolve_node | Look up node ID by alias | alias |
| Tool | Description | Key Params |
|---|---|---|
register_color | Save a named color to the document palette (0–1) | alias, r, g, b, a |
resolve_color | Look up a color by alias | alias |
list_colors | List all registered colors in the document | — |
| Tool | Description | Key Params |
|---|---|---|
get_styles | All local paint and text styles | — |
apply_style | Apply document style to node | nodeId, styleId, styleType |
get_available_fonts | List loadable fonts; filter by name | query |
| Tool | Description | Key Params |
|---|---|---|
export_node_as_svg | Export node as SVG string | nodeId |
| export_node_as_png | Export as base64 PNG | nodeId, scale (default 2)
冒頭だけを表示しています。続きはリポジトリで読めます