Skip to main content
Glama
Halil-KAPLAN

Figma Bridge MCP

by Halil-KAPLAN

Figma Bridge MCP

Figma Bridge MCP는 MCP 호환 AI 클라이언트를 Figma 데스크톱 앱에 연결하는 로컬 Model Context Protocol (MCP) 서버입니다. AI 어시스턴트가 현재 Figma 또는 FigJam 문서를 검사하고, 노드를 내보내고, Figma Plugin API를 통해 제어된 변경을 수행할 수 있게 해줍니다.

플러그인 미리보기

연결 상태를 표시하는 Figma Bridge 플러그인

플러그인 창에는 브리지 연결 상태, 최근 연결 이벤트, 수동 재연결 버튼이 표시됩니다. MCP 클라이언트가 Figma로 작업하는 동안 이 창을 열어 두세요.

Related MCP server: Figma Native MCP

기능

  • 현재 페이지, 선택된 레이어, 개별 노드, 로컬 스타일, 변수 및 컴포넌트를 검사합니다.

  • Figma 노드를 PNG, SVG 또는 PDF로 디스크에 직접 내보냅니다.

  • 텍스트와 단색 채우기 색상을 업데이트합니다.

  • 노드를 생성, 이동, 크기 조정 및 삭제합니다.

  • Figma Plugin API를 통해 고급 JavaScript를 실행합니다.

  • Figma URL에서 복사한 노드 ID를 1:23 또는 1-23 형식으로 사용합니다.

  • 공유 로컬 브리지 서버를 통해 여러 MCP 클라이언트 프로세스를 연결합니다.

  • Windows 또는 WSL2 내부에서 기본적으로 실행되는 AI 에이전트에서 Windows Figma 데스크톱 앱을 사용합니다.

  • Codex, Claude Code, VS Code MCP 클라이언트를 포함한 stdio 서버를 지원하는 모든 MCP 클라이언트에서 작동합니다.

작동 방식

┌──────────────────────────────┐
│ MCP client                   │
│ Codex, Claude Code, VS Code  │
└──────────────┬───────────────┘
               │ MCP over stdio
┌──────────────▼───────────────┐
│ server.js                    │
│ Node.js MCP/WebSocket bridge │
└──────────────┬───────────────┘
               │ ws://localhost:3055
┌──────────────▼───────────────┐
│ Figma Bridge plugin          │
│ ui.html ↔ code.js            │
└──────────────┬───────────────┘
               │ Figma Plugin API
┌──────────────▼───────────────┐
│ Open Figma or FigJam file    │
└──────────────────────────────┘

포트 3055를 획득한 첫 번째 server.js 프로세스가 기본 브리지가 됩니다. 다른 MCP 클라이언트가 다른 인스턴스를 시작하면 해당 프로세스는 자동으로 프록시 모드로 전환되어 명령을 기본 브리지로 전달합니다. 여러 Figma 플러그인이 연결된 경우 명령은 가장 최근에 연결된 플러그인으로 전송됩니다.

요구 사항

  • Node.js 및 npm. 최신 Node.js LTS 릴리스를 권장합니다.

  • Figma 데스크톱 앱.

  • stdio 서버를 지원하는 MCP 클라이언트.

AI 클라이언트가 MCP 서버를 실행할 동일한 환경에 Node.js를 설치하세요. 네이티브 Windows 클라이언트에는 Windows용 Node.js를, WSL 클라이언트에는 WSL 내부에 Linux용 Node.js를 설치합니다. 서버 자체는 플랫폼에 독립적입니다. start.bat은 선택적 Windows 도우미로만 포함되어 있습니다.

설치

이 저장소를 클론하고 의존성을 설치합니다:

git clone https://github.com/Halil-KAPLAN/figma-bridge-mcp.git
cd figma-bridge-mcp
npm install

저장소를 ZIP 파일로 다운로드하여 압축을 풀고, 압축이 풀린 디렉터리에서 터미널을 열고 npm install을 실행할 수도 있습니다.

Windows 및 WSL2 지원

Figma Bridge MCP는 Windows 네이티브 개발과 WSL2 개발을 모두 지원합니다. Figma는 항상 Windows 데스크톱 애플리케이션으로 실행되며, MCP 서버는 AI 에이전트가 실행되는 동일한 환경에서 실행됩니다.

개발 환경

Node.js와 이 저장소가 실행되는 위치

MCP 구성에 사용되는 경로

Figma 애플리케이션

네이티브 Windows

Windows

C:\path\to\figma-bridge-mcp\server.js

Windows Figma Desktop

WSL2 터미널

WSL2 Linux

/home/user/figma-bridge-mcp/server.js

Windows Figma Desktop

Windows에서 일반적으로 열린 VS Code

에이전트가 명시적으로 WSL을 사용하도록 구성되지 않은 경우 Windows

Windows 경로

Windows Figma Desktop

VS Code Remote - WSL

WSL2 Linux

WSL Linux 경로

Windows Figma Desktop

WSL2 연결 작동 방식

server.js가 WSL2 내부에서 실행되면 포트 3055에 WebSocket 브리지를 엽니다. Windows는 WSL 네트워킹 애플리케이션을 localhost로 전달하므로 Windows Figma 플러그인은 여전히 다음에 연결할 수 있습니다:

ws://localhost:3055

전체 WSL 흐름은 다음과 같습니다:

AI agent in WSL
    → starts server.js in WSL over stdio
    → WSL WebSocket server listens on port 3055
    → Windows exposes the WSL service through localhost:3055
    → Figma Desktop plugin connects from Windows
    → the agent can inspect and edit the open Figma document

Microsoft는 Accessing network applications with WSL에서 localhost를 통한 Windows-to-WSL 액세스를 문서화하고 있습니다.

네이티브 Windows 설정

Windows 파일 시스템에 저장된 저장소를 사용하고 Windows용 Node.js로 의존성을 설치합니다:

git clone https://github.com/Halil-KAPLAN/figma-bridge-mcp.git
cd figma-bridge-mcp
npm install

MCP 명령은 Windows용 Node.js 사본과 server.js의 Windows 경로를 사용해야 합니다.

WSL2 설정

WSL 개발의 경우 저장소를 Linux 파일 시스템에 유지하고 WSL 내부에서 의존성을 설치합니다:

mkdir -p ~/code
cd ~/code
git clone https://github.com/Halil-KAPLAN/figma-bridge-mcp.git
cd figma-bridge-mcp
npm install

다음 명령으로 VS Code에서 WSL 프로젝트를 엽니다:

code .

VS Code의 원격 상태 표시기에 **WSL: <distribution>**이 표시되고 통합 터미널이 /home/user/...와 같은 경로를 사용하는지 확인하세요. Remote - WSL 워크플로에 대한 자세한 내용은 VS Code WSL 튜토리얼을 참조하세요.

브리지가 WSL에서 실행되는 동안 Windows에서 액세스를 테스트할 수 있습니다:

Test-NetConnection localhost -Port 3055

TcpTestSucceededTrue여야 합니다.

에이전트와 MCP 서버를 동일한 환경에 유지

node 명령과 server.js 경로는 AI 에이전트가 실행되는 환경에서 확인됩니다:

  • Windows 네이티브 에이전트는 Windows용 Node.js와 Windows 경로가 필요합니다.

  • WSL에서 실행되는 에이전트는 WSL에 설치된 Node.js와 Linux 경로가 필요합니다.

  • VS Code Remote - WSL 창은 WSL 통합 터미널에서 MCP 서버를 구성해야 합니다.

  • WSL MCP 구성에 C:\... 경로를 사용하거나 네이티브 Windows MCP 구성에 /home/... 경로를 사용하지 마세요.

가장 예측 가능한 동작을 위해 환경당 표준 설치본 하나를 사용하고 해당 환경의 모든 에이전트가 동일한 server.js 파일을 실행하도록 구성하세요. 동일한 환경에서 여러 MCP 프로세스가 지원됩니다. 첫 번째 프로세스가 기본 브리지가 되고 이후 프로세스는 자동으로 이를 통해 프록시됩니다.

Figma에서 Figma Bridge MCP 사용

Figma Bridge MCP에는 로컬 Figma 개발 플러그인이 포함되어 있습니다. Figma Community에서 설치할 필요가 없습니다. 플러그인은 열린 Figma 또는 FigJam 문서 내에서 실행되며 로컬 브리지 서버와 Figma Plugin API 간에 MCP 명령을 중계합니다.

플러그인을 한 번 설치

개발 플러그인은 Figma 데스크톱 앱으로 가져와야 합니다:

  1. macOS 또는 Windows에서 Figma 데스크톱 앱을 엽니다.

  2. Figma Design 또는 FigJam 파일을 만들거나 엽니다.

  3. 왼쪽 상단 모서리의 Figma 메뉴를 엽니다.

  4. **Plugins → Development → Import new plugin from manifest...**를 선택합니다.

  5. 이 저장소를 찾아 plugin/manifest.json을 선택합니다.

  6. Figma가 Figma Bridge를 Plugins 메뉴의 Development 섹션에 추가합니다.

매니페스트는 각 컴퓨터에서 한 번만 가져오면 됩니다. 로컬 플러그인 가져오기에 대한 자세한 내용은 Figma의 개발 플러그인 가이드를 참조하세요.

각 세션마다 플러그인 실행

  1. AI 에이전트가 검사하거나 편집할 Figma Design 또는 FigJam 파일을 엽니다.

  2. 구성된 MCP 클라이언트를 시작하거나 다시 로드합니다. 일반적으로 server.js를 자동으로 실행합니다. 진단 목적으로 npm start를 수동으로 실행할 수 있습니다.

  3. Figma에서 Plugins → Development → Figma Bridge를 선택합니다.

  4. AI 에이전트가 Figma를 사용하는 동안 플러그인 창을 열어 둡니다.

  5. 플러그인에 **Connected to bridge ✓**가 표시될 때까지 기다립니다.

플러그인은 ws://localhost:3055에 연결합니다. MCP 서버가 아직 실행 중이 아니면 플러그인은 Connecting... 상태를 유지하고 자동으로 재시도합니다. 따라서 Figma 플러그인이나 MCP 클라이언트를 먼저 시작할 수 있습니다.

열린 문서가 활성 대상입니다. 문서를 전환하는 경우 에이전트가 사용할 문서에서 플러그인을 실행하세요. figma_get_selection과 같은 명령은 해당 문서에서 현재 선택된 레이어에 대해 작동합니다.

AI 에이전트가 MCP를 통해 Figma를 사용하도록 허용

플러그인에 **Connected to bridge ✓**가 표시된 후, stdio MCP 서버를 지원하는 구성된 AI 에이전트는 Figma Bridge MCP 도구를 검색하고 호출할 수 있습니다. 에이전트는 Figma 계정에 직접 연결하지 않으며 Figma 액세스 토큰이 필요하지 않습니다. 요청은 다음 경로를 따릅니다:

AI agent → MCP tool → server.js → Figma plugin → Figma document

플러그인은 Figma Plugin API를 통해 요청된 작업을 실행하고 동일한 연결을 통해 결과를 에이전트에 반환합니다. 그러면 에이전트는 결과를 검사하고, 다른 도구로 계속하거나, 변경한 내용을 설명할 수 있습니다.

AI 애플리케이션에 Figma Bridge MCP 추가

Figma Bridge MCP는 로컬 stdio MCP 서버입니다. AI 애플리케이션은 다음 명령으로 이를 실행합니다:

node /absolute/path/to/figma-bridge-mcp/server.js

경로는 AI 애플리케이션이 실행되는 환경에서 유효해야 합니다. MCP 클라이언트가 server.js를 직접 시작하고 관리하므로 일반적으로 npm start를 별도로 실행할 필요가 없습니다.

Codex CLI 및 Codex IDE 확장

Windows에서 실행되는 Codex

PowerShell 또는 VS Code Windows 터미널에서 다음 명령을 실행합니다:

codex mcp add figma-bridge-mcp -- node C:\path\to\figma-bridge-mcp\server.js

WSL2에서 실행되는 Codex

WSL 터미널 또는 VS Code Remote - WSL 통합 터미널에서 다음 명령을 실행합니다:

codex mcp add figma-bridge-mcp -- node /home/user/code/figma-bridge-mcp/server.js

구성을 확인합니다:

codex mcp list

Codex 내부에서 /mcp를 사용하여 연결된 서버와 해당 도구를 검사합니다. Codex CLI와 Codex IDE 확장은 동일한 호스트에서 실행될 때 config.toml을 공유하므로 터미널에서 서버를 추가하면 해당 환경의 확장에서도 사용할 수 있습니다.

동등한 Codex 구성은 다음과 같습니다:

[mcp_servers.figma-bridge-mcp]
command = "node"
args = ["/absolute/path/to/figma-bridge-mcp/server.js"]

Windows에서 Codex IDE 확장은 다음 VS Code 설정을 활성화하여 Codex를 WSL 내부에서 실행할 수도 있습니다:

"chatgpt.runCodexInWindowsSubsystemForLinux": true

해당 설정이 활성화되면 WSL 내부에 Node.js와 Figma Bridge MCP를 설치하고 Codex MCP 구성에 WSL 경로를 사용합니다. VS Code Remote - WSL 창에서 Codex는 이미 WSL 프로젝트 환경으로 실행됩니다.

MCP 구성에 대한 공식 Codex MCP 문서와 WSL 워크플로에 대한 Codex WSL 문서를 참조하세요.

Claude Code CLI 및 VS Code 확장

Claude Code MCP 서버는 터미널에서 추가하는 것이 가장 안정적입니다. 그러면 VS Code 확장이 구성된 서버를 관리하고 사용할 수 있습니다.

Windows에서 실행되는 Claude Code

PowerShell 또는 VS Code Windows 터미널에서 다음 명령을 실행합니다:

claude mcp add --transport stdio --scope user figma-bridge-mcp -- node C:\path\to\figma-bridge-mcp\server.js

WSL2에서 실행되는 Claude Code

WSL 터미널 또는 VS Code Remote - WSL 통합 터미널에서 다음 명령을 실행합니다:

claude mcp add --transport stdio --scope user figma-bridge-mcp -- node /home/user/code/figma-bridge-mcp/server.js

구성을 확인합니다:

claude mcp list

Claude Code CLI 또는 VS Code 채팅 패널에서 /mcp를 사용하여 연결 및 사용 가능한 도구를 확인합니다. VS Code가 Remote - WSL을 통해 연결된 경우 WSL 통합 터미널에서 claude mcp add를 실행하여 명령과 Linux 경로가 WSL Claude Code 구성에 저장되도록 합니다.

공식 Claude Code MCP 문서Claude Code VS Code 문서를 참조하세요.

VS Code .vscode/mcp.json

일부 VS Code MCP 클라이언트는 .vscode/mcp.json에서 워크스페이스 서버를 읽습니다. 확장 호스트와 일치하는 구성을 사용하세요.

Windows 네이티브 VS Code:

{
  "servers": {
    "figma-bridge-mcp": {
      "type": "stdio",
      "command": "node",
      "args": ["C:\\path\\to\\figma-bridge-mcp\\server.js"]
    }
  }
}

VS Code Remote - WSL:

{
  "servers": {
    "figma-bridge-mcp": {
      "type": "stdio",
      "command": "node",
      "args": ["/home/user/code/figma-bridge-mcp/server.js"]
    }
  }
}

기타 터미널 및 데스크톱 AI 클라이언트

로컬 stdio MCP 서버를 지원하는 모든 AI 클라이언트는 Figma Bridge MCP를 사용할 수 있습니다. MCP Servers, Tools 또는 Integrations 설정을 찾아 다음으로 서버를 추가하세요:

  • 이름: figma-bridge-mcp

  • 전송: stdio

  • 명령: node

  • 인수: server.js의 절대 경로

일반적인 JSON 형식은 다음과 같습니다:

{
  "mcpServers": {
    "figma-bridge-mcp": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/figma-bridge-mcp/server.js"]
    }
  }
}

정확한 구성 파일 이름과 최상위 키(mcpServers 또는 servers)는 클라이언트에 따라 다릅니다. 터미널 애플리케이션도 동일한 환경 규칙을 따릅니다. 애플리케이션이 Windows에서 실행되면 Windows 경로를, WSL에서 실행되면 Linux 경로를 사용하세요.

AI 에이전트와 함께 사용

Figma 플러그인을 설치하고 MCP 클라이언트를 구성한 후:

  1. Figma 데스크톱 앱에서 대상 문서를 엽니다.

  2. Plugins → Development → Figma Bridge를 실행하고 창을 열어 둡니다.

  3. AI 에이전트를 시작하거나 다시 로드하여 MCP 서버를 실행하고 도구를 검색하게 합니다.

  4. 에이전트에게 연결을 확인하도록 요청합니다. figma_status를 호출하고 플러그인이 연결되었음을 보고해야 합니다.

  5. 에이전트에게 자연어를 사용하여 열린 문서를 검사하거나 수정하도록 요청합니다.

예를 들어:

Check whether the Figma plugin is connected.
Show the structure of the current Figma page.
Get the details of node 2057:6604.
Export node 2057:6604 as a PNG at 2x scale.
Change the selected heading to "Welcome back".
List all local components on the current page.

노드 ID가 node-id=2057-6604와 같은 Figma URL에서 온 경우 2057-6604 또는 2057:6604를 브리지에 전달할 수 있습니다.

AI 에이전트는 사용자의 요청에 따라 호출할 MCP 도구를 결정합니다. 특정 작업이 필요할 때는 figma_get_selection, figma_export_node, figma_set_text와 같은 도구 이름을 명시적으로 지정할 수도 있습니다.

사용 가능한 MCP 도구

연결 및 검사

도구

입력

설명

figma_status

없음

Figma 플러그인이 연결되었는지 보고합니다

figma_get_page

없음

현재 페이지와 그 직계 자식 노드를 반환합니다

figma_get_node

nodeId

노드의 속성과 직계 자식 노드를 반환합니다

figma_get_selection

없음

현재 선택된 노드에 대한 상세 정보를 반환합니다

figma_get_styles

없음

로컬 페인트, 텍스트, 효과 스타일을 나열합니다

figma_get_variables

없음

로컬 변수 컬렉션, 모드, 변수를 나열합니다

figma_get_components

없음

현재 페이지의 컴포넌트를 나열합니다

내보내기

도구

입력

설명

figma_export_node

nodeId, 선택적 format, scale, outputPath

노드를 PNG, SVG 또는 PDF로 내보내고 파일을 작성한 후 경로를 반환합니다

기본 내보내기 형식은 PNG이고 기본 배율은 1입니다. scalePNGPDF에만 적용됩니다. SVG 내보내기는 배율 제약이 없으며 이를 무시합니다.

내보내기는 인라인 base64로 반환되지 않고 디스크에 기록됩니다. 소박한 PNG 하나도 수백 킬로바이트에 달하기 때문에 AI 클라이언트가 컨텍스트에 담기에는 비용이 크고 이미지로도 사용할 수 없기 때문입니다. 대신 도구는 파일 경로를 반환합니다.

outputPath는 전체 파일 경로이거나 파일을 작성할 디렉터리일 수 있습니다. 지정하지 않으면 파일은 MCP 클라이언트 프로세스의 작업 디렉터리를 기준으로 ./figma-exports/에 저장됩니다. 이 기본값을 변경하려면 FIGMA_BRIDGE_EXPORT_DIR을 설정하세요. 생성되는 파일 이름은 레이어 이름과 노드 ID를 결합합니다. 예를 들어 hero-banner-5005-2330.svg와 같습니다.

16KB 이하의 SVG 내보내기는 소스로도 인라인 반환되어, 아이콘을 두 번 읽지 않고 사용할 수 있습니다. 더 큰 SVG는 경로로만 참조됩니다.

편집

도구

입력

설명

figma_set_text

nodeId, text

텍스트 노드의 내용을 교체합니다

figma_set_fill

nodeId, hex

노드의 채우기를 단색 16진수 색상 하나로 교체합니다

figma_create_frame

name, width, height, 선택적 x, 선택적 y

현재 페이지에 프레임을 생성합니다

figma_create_text

text, 선택적 x, 선택적 y, 선택적 fontSize, 선택적 parentId

현재 페이지 또는 상위 노드에 Inter Regular 텍스트 노드를 생성합니다

figma_delete_node

nodeId

노드를 삭제합니다

figma_move_node

nodeId, x, y

노드의 위치를 변경합니다

figma_resize_node

nodeId, width, height

노드의 크기를 변경합니다

고급

도구

입력

설명

figma_run_js

code

figma Plugin API 객체에 접근하여 JavaScript를 실행합니다

figma_run_js는 전용 도구로 처리되지 않는 작업을 위한 것입니다. 제공된 코드는 Figma 플러그인 샌드박스 내에서 실행되며 열려 있는 문서를 수정할 수 있습니다.

코드 조각은 실행 전에 async 함수로 감싸지므로, 전달하는 코드의 최상위 레벨에서 awaitreturn이 모두 작동합니다:

const node = figma.getNodeById("1:2");
await node.exportAsync({ format: "SVG" });
return node.name;

서버 수동 실행

수동 시작은 진단에 유용하지만, MCP 클라이언트가 서버를 실행하도록 구성된 경우에는 필요하지 않습니다.

npm start

Windows에서는 start.bat을 더블클릭할 수도 있습니다.

기본 서버의 예상 로그 출력:

[figma-bridge-mcp] Starting Figma Bridge MCP Server...
[figma-bridge-mcp] PRIMARY mode — listening at ws://localhost:3055
[figma-bridge-mcp] MCP stdio ready

다른 Figma Bridge 프로세스가 이미 포트를 점유하고 있으면 새 프로세스는 프록시 모드로 전환됩니다. 이는 정상적인 동작입니다:

[figma-bridge-mcp] Port is in use; switching to proxy mode...
[figma-bridge-mcp] Connected to the primary server

프로젝트 구조

figma-bridge-mcp/
├── plugin/
│   ├── code.js          # Commands executed in the Figma plugin sandbox
│   ├── ui.html          # Plugin UI and WebSocket client
│   └── manifest.json    # Figma development plugin manifest
├── server.js            # MCP stdio server and WebSocket bridge
├── start.bat            # Optional Windows launcher
├── package.json         # Node.js package metadata and scripts
└── README.md

유일한 런타임 npm 의존성은 ws로, WebSocket 서버와 클라이언트 구현을 제공합니다.

문제 해결

No Figma plugin connected

  • 브라우저 버전이 아닌 Figma 데스크톱 앱을 사용하세요.

  • 작업하려는 Figma 또는 FigJam 파일을 여세요.

  • Plugins → Development → Figma Bridge를 실행하세요.

  • 플러그인 창을 열어 둔 상태로 유지하세요.

  • 플러그인의 자동 재연결 시도를 위해 몇 초간 기다리세요.

  • 플러그인이 **Connected to bridge ✓**를 표시하는지 확인하세요.

플러그인이 Connecting... 상태에 머무름

  • MCP 클라이언트가 server.js를 시작했는지 확인하거나, 진단 목적으로 임시로 npm start를 실행하세요.

  • 포트 3055가 방화벽이나 보안 도구에 의해 차단되지 않았는지 확인하세요.

  • 다른 애플리케이션이 이미 포트 3055를 사용 중인지 확인하세요.

  • 브리지 서버가 시작된 후 플러그인을 다시 로드하세요.

Windows Figma가 WSL2에서 실행 중인 브리지에 연결할 수 없음

서버가 WSL 내부에서 리슨 중인지 확인하세요:

ss -ltnp | grep 3055

그런 다음 Windows PowerShell에서 전달된 포트를 테스트하세요:

Test-NetConnection localhost -Port 3055

TcpTestSucceededFalse인 경우:

  • PowerShell에서 wsl --list --verbose를 사용하여 WSL2를 사용 중인지 확인하세요.

  • wsl --update로 WSL을 업데이트한 다음 wsl --shutdown으로 다시 시작하세요.

  • MCP 클라이언트를 다시 시작하고 Figma 플러그인을 다시 실행하세요.

  • VPN, 방화벽, 엔드포인트 보안 도구 또는 관련 없는 프로세스가 포트 3055를 차단하고 있는지 확인하세요.

  • Node.js와 npm install이 Windows에서만이 아니라 WSL 내부에서 실행되었는지 확인하세요.

플러그인 URL을 WSL 가상 머신 IP로 교체하지 마세요. Windows에서 WSL로의 localhost 전달이 의도된 연결 경로이며, WSL 재시작 후 변경될 수 있는 IP 주소에 의존하지 않도록 해줍니다.

MCP 서버가 감지되지 않음

  • Node.js를 사용할 수 있는지 확인하세요:

    node --version
  • 의존성이 설치되어 있는지 확인하세요:

    npm install
  • server.js에 절대 경로를 사용하세요.

  • JSON에서 Windows 백슬래시를 올바르게 이스케이프하세요.

  • 구성을 변경한 후 MCP 클라이언트를 다시 시작하거나 다시 로드하세요.

  • MCP 클라이언트의 서버 로그에서 Node.js 또는 경로 오류를 확인하세요.

Port is in use; switching to proxy mode...

이 메시지는 다른 Figma Bridge 인스턴스가 이미 실행 중일 때 정상입니다. 프록시가 연결할 수 없는 경우 포트 3055를 사용하는 관련 없는 프로세스를 중지하거나 server.js, plugin/ui.html, plugin/manifest.json에서 포트를 일관되게 변경하세요.

명령 시간 초과

  • 플러그인이 여전히 열려 있고 연결되어 있는지 확인하세요.

  • 대상 문서가 Figma에서 여전히 열려 있는지 확인하세요.

  • 노드 ID가 현재 문서에 존재하는지 확인하세요.

  • 플러그인을 다시 연결한 후 요청을 재시도하세요. Bridge 요청은 30초 후에 시간 초과됩니다.

현재 제한 사항

  • 브리지는 로컬 사용을 위해 설계되었으며 고정 WebSocket 포트 3055를 사용합니다.

  • Figma 개발 플러그인은 세션 중에 열려 있어야 합니다.

  • 여러 플러그인 창이 열려 있을 때 명령은 가장 최근에 연결된 플러그인을 대상으로 합니다.

  • figma_get_page는 전체 문서 트리를 재귀적으로 확장하는 대신 페이지의 직계 자식 노드만 반환합니다. 더 자세한 내용은 figma_get_node를 사용하세요.

  • 내보내기는 호출을 받은 MCP 서버 프로세스에 의해 디스크에 기록되므로, 파일은 기본 브리지가 아닌 요청한 클라이언트 옆에 저장됩니다.

  • 로컬 WebSocket 서버와 플러그인 사이에는 인증 계층이 없습니다.

보안

Figma Bridge MCP는 로컬 개발용으로 설계되었습니다. 포트 3055를 신뢰할 수 없는 네트워크에 노출하지 마세요. 신뢰하는 MCP 클라이언트만 연결하고, 중요한 디자인 파일을 수정하도록 허용하기 전에 명령을 검토하세요.

figma_run_js 도구는 Figma 플러그인 샌드박스에서 임의의 JavaScript를 실행할 수 있습니다. 열려 있는 문서를 검사하거나 수정할 수 있을 만큼 강력하므로, 신뢰할 수 있는 프롬프트와 신뢰할 수 있는 MCP 클라이언트에서만 사용해야 합니다.

개발

의존성을 설치하고 서버를 시작하세요:

npm install
npm start

server.js의 변경 사항은 MCP 서버 프로세스를 다시 시작해야 적용됩니다. plugin/ 아래 파일의 변경 사항은 Figma에서 개발 플러그인을 다시 로드하거나 다시 실행해야 적용됩니다.

라이선스

이 저장소에는 현재 라이선스가 포함되어 있지 않습니다. 배포하거나 타사 기여를 수락하기 전에 LICENSE 파일을 추가하세요.

Available Tools

16 tools
figma_create_frameC

Create a new frame on current page

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
nameYes
widthYes
heightYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It only states the basic purpose without disclosing behavioral traits like side effects, prerequisites (e.g., current page selection), constraints (e.g., duplicate names), or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise and front-loaded, but it under-informs. Conciseness traded for completeness; minimal viable size for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, no behavioral details, and no parameter descriptions. For a creation tool, missing context on return value (e.g., node ID), potential conflicts, and required context (current page existence).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must explain parameters. It does not mention any parameter roles, valid ranges, or relationships (e.g., x,y for positioning). No added meaning beyond schema names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'create', resource 'frame', and context 'on current page'. It distinguishes from sibling tools like figma_create_text by specifying the resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Siblings include creation, deletion, and modification tools, but description offers no context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_create_textD

Create a text node

ParametersJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
textYes
fontSizeNo
parentIdNo

TDQS

D1.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, and the description does not disclose any behavioral traits (e.g., whether it replaces existing nodes, requires a parent, or side effects). 'Create a text node' implies insertion but lacks detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at 4 words, but it under-specifies the tool. Conciseness should not come at the cost of missing critical information; here, brevity hurts usability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, no output schema, no annotations), the description is entirely insufficient. The agent has no idea what creating a 'text node' entails in Figma or how to use the parameters correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description provides zero parameter information. All five parameters are documented only in the schema, with 0% coverage in the description, requiring the agent to infer meaning from parameter names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a text node' clearly states the action and resource, but lacks scope or differentiation from sibling tools like 'figma_set_text' which also deals with text nodes. It is specific but not distinctive.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines provided. The description does not indicate when to use this tool, prerequisites, or alternatives, leaving the agent without decision support.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_delete_nodeC

Delete a node by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description says 'delete' but does not disclose whether deletion is permanent, what happens to child nodes, or if any permissions are required. With no annotations, the description should compensate, but it omits critical behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise, using a single sentence. However, for a simple delete operation, this brevity is acceptable and not wasteful. A bit more context would not hurt.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a single parameter and no output schema, the description is incomplete. It does not explain side effects, error conditions (e.g., node not found), or return value (presumably empty or success). More context is needed for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter (nodeId) lacks description in the schema, and the tool description provides no additional meaning (e.g., expected format like UUID or node path). Schema coverage is 0%, but the description adds nothing beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('delete') and the resource ('node'), which is precise within the Figma context. It distinguishes this tool from sibling tools like figma_create_frame or figma_move_node, as deletion is a unique operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives or when not to use it. There are no prerequisites, restrictions, or mentions of related tools (e.g., figma_get_node to verify existence before deletion).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_export_nodeC

Export a node as PNG/SVG (returns base64)

ParametersJSON Schema
NameRequiredDescriptionDefault
scaleNo
formatNoPNG
nodeIdYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It only notes base64 return, lacking details on side effects, permissions, error handling (e.g., missing node), or whether operation is read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short (1 sentence) but at the expense of missing important details like additional formats and parameter info. Conciseness should not sacrifice necessary clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 3 parameters, no output schema, and no annotations, the description is too minimal. It fails to explain scale, full format options, or output structure, making it inadequate for confident tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 0% and description adds no parameter explanations. Scale, format enum (including hidden PDF), and nodeId are not described. For 3 parameters, this is insufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Export a node' and specifies PNG/SVG formats and base64 output. However, it omits PDF (present in enum), which slightly reduces completeness. Differentiates from sibling tools like figma_get_node by emphasizing export/rendering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs siblings (e.g., figma_get_node for properties vs export for images). The purpose is implied but not explicitly contrasted with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_get_componentsB

Get all local components

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, permissions, or side effects. The tool likely performs a read operation, but this is not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words, achieving high conciseness. However, it is so minimal that some context is sacrificed for brevity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description fails to explain the return format, scope (e.g., current document? page?), or examples. It is too incomplete for a tool that likely returns a list of components.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, and schema coverage is 100%. The description does not need to add parameter-level detail, but it could clarify what 'local components' means. The baseline for zero parameters is 4, which is met.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ('Get all local components'), making the purpose clear. However, it does not distinguish from siblings like figma_get_styles or figma_get_variables, which are similar in structure. The term 'components' could be ambiguous without context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It only states the action, leaving the agent to infer usage context from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_get_nodeB

Get detailed info about a specific node by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
nodeIdYesNode ID (e.g. "1:2" or "1-2")

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully convey behavioral traits. It only states 'Get detailed info' without specifying what that entails (e.g., geometry, properties, children), permissions, rate limits, or whether it's read-only. More detail is needed for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no unnecessary words. It is concise and front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lacks output details (no output schema). Given the complexity of Figma nodes, stating that it returns 'detailed info' is vague. More context about the response (e.g., 'returns node properties, children, geometry') would improve completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description itself adds no additional meaning beyond the schema, but the schema already documents the nodeId parameter with examples. The tool description does not compensate beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'detailed info about a specific node', and the method 'by ID'. It effectively distinguishes from siblings like figma_get_page and figma_get_components.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives (e.g., figma_get_selection for selected nodes, figma_get_page for all nodes on a page). This omission may lead to suboptimal tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_get_pageA

Get all frames/nodes on the current page

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does not disclose behavioral traits such as whether all nested frames are returned, pagination limits, or any destructive actions. The tool name implies a read operation, but this is not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It directly communicates the tool's purpose without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no parameters, the description is adequate but fails to explain the return format (e.g., list of node IDs or full objects). The agent may be uncertain about the structure of the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the schema coverage is trivially 100%. The description does not need to add parameter semantics, achieving the baseline score of 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get all frames/nodes on the current page' uses a clear verb ('Get') and specifies the resource ('all frames/nodes on the current page'). It distinguishes itself from siblings like figma_get_node (single node) and figma_get_selection (selected nodes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not state prerequisites, when not to use, or mention related tools like figma_get_node for single nodes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_get_selectionA

Get currently selected nodes in Figma

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It fails to disclose what happens when no selection exists (empty result vs. error) or whether the selection is live. The description is too minimal for a read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence with no wasted words. It is perfectly concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless tool with no output schema, the description is mostly complete. It could improve by noting behavior when no nodes are selected or indicating that multiple nodes may be returned. Still, it covers the core action adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so schema coverage is 100% trivially. The description adds value by specifying 'currently selected' which implies real-time state, but does not elaborate on return format or node identification.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get currently selected nodes in Figma,' which is a specific verb+resource. It distinguishes from siblings like figma_get_node (which retrieves a specific node by ID) by focusing on the user's current selection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., a selection must exist) or when to use sibling tools like figma_get_node or figma_get_page.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_get_stylesB

Get all local styles (colors, text, effects)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry full behavioral burden. It does not explicitly state that this is a read-only operation, nor does it mention potential side effects, return format, or access requirements. The word 'Get' implies read-only, but detailed transparency is lacking.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded. It is not verbose, but could benefit from slight expansion about return format or read-only nature. Still, it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters, output schema, or annotations, the description covers the basic function. However, it omits context like return type (list of style objects) and whether it is a read operation. For a simple tool, it is minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (no parameters). The description adds no parameter information, but baseline is 3 due to high coverage. No additional value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool gets all local styles and specifies the types (colors, text, effects), making the purpose highly specific. It effectively distinguishes from siblings like figma_get_components and figma_get_variables.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage is implied: use when you need local styles. However, no explicit when-not or alternatives are mentioned, and sibling tools are not compared.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_get_variablesA

Get all local variables and variable collections

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states the basic read operation without disclosing any behavioral traits (e.g., what happens if no variables, whether it returns all collections, side effects, or permissions needed).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no fluff. It is appropriately sized for a zero-parameter tool, though it could be slightly more informative about what constitutes 'local variables'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of an output schema and annotations, the description is minimal. It does not describe the return format or structure, leaving the agent to infer the response. For a tool with no parameters, it is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, and the schema description coverage is 100%. With no parameters, the description does not need to add param semantics, and the baseline score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get all local variables and variable collections', with a specific verb ('Get') and resource ('local variables and variable collections'), distinguishing it from sibling tools like figma_get_components or figma_get_styles.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives like figma_get_components or figma_get_styles. The purpose is implied, but no when-to-use or when-not-to-use context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_move_nodeC

Move a node to new x,y position

ParametersJSON Schema
NameRequiredDescriptionDefault
xYes
yYes
nodeIdYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No behavioral traits disclosed beyond the implied mutation. No mention of side effects, authorization needs, undoability, or return values. Description carries the full burden due to absent annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely short (one sentence) but under-specified. Being concise is positive, but the content is too minimal to be useful; lacks structure and essential details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the sibling tools and lack of output schema, the description is grossly incomplete. No info on coordinates system, error handling, return value, or usage constraints. Inadequate for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for parameter descriptions. The description only reiterates 'new x,y position' without clarifying coordinate meaning (absolute/relative, units) or the role of nodeId. Fails to add value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'move' and the resource 'node', specifying the action to new x,y coordinates. It distinguishes from siblings like figma_resize_node or figma_create_frame, but lacks specificity on the coordinate system or units.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance provided on when to use this tool versus alternatives (e.g., figma_resize_node does not move) or prerequisites (e.g., node must exist, must be on a page). Missing explicit context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_resize_nodeC

Resize a node

ParametersJSON Schema
NameRequiredDescriptionDefault
widthYes
heightYes
nodeIdYes

TDQS

C2.1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose any behavioral traits such as whether the operation is reversible, requires permissions, or triggers side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise at 3 words, but this brevity comes at the cost of missing critical information. It is not appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, and the need to document three parameters, the description is wholly insufficient for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds no meaning to the parameters (nodeId, width, height). It does not explain units, valid ranges, or how parameters affect the resize operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Resize a node' uses a specific verb and resource, clearly indicating the action. It is distinct from sibling tools like figma_move_node or figma_set_fill, though it does not explicitly differentiate them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. There is no context about prerequisites, constraints, or typical use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_run_jsC

Run arbitrary Figma Plugin API JavaScript code (advanced)

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It only states that code is run, but does not mention safety, permissions, side effects, or execution context (e.g., sandboxing). This is insufficient for a code execution tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no extraneous information. It is front-loaded and efficient, though it could benefit from additional context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of running arbitrary code and the absence of an output schema, the description is minimal. It does not explain return values, error handling, or limitations, leaving the agent with insufficient information to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must add meaning to the 'code' parameter. It mentions it is JavaScript code, but provides no syntax, examples, return value, or constraints. This does not adequately compensate for the lack of schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs arbitrary Figma Plugin API JavaScript code, which is a specific action. It distinguishes itself from sibling tools that perform specific operations like creating frames or getting nodes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. While it's implied for cases not covered by sibling tools, there are no explicit conditions, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_set_fillC

Change fill color of a node (hex color)

ParametersJSON Schema
NameRequiredDescriptionDefault
hexYesHex color e.g. "#FF0000"
nodeIdYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries full burden. It indicates a write operation ('change') but does not disclose whether it overwrites existing fills, works on all node types, or is reversible. Missing behavioral context for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise but lacks structure. It could be expanded to include usage guidance without becoming verbose. The brevity leads to omissions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the low schema coverage, no annotations, and no output schema, the description should provide more context. It does not specify the effect on multiple fills, error conditions, or return value, making it incomplete for practical use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (nodeId lacks description). The description only mentions hex color format, which is already in the schema. It does not explain what nodeId represents or how to obtain it, leaving a gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Change fill color') and the resource ('a node') with the hex format specified. It distinguishes from sibling tools that handle different operations (create, delete, move, etc.), but does not explicitly differentiate from other color-related modifications.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites (e.g., node exists, is selected) or exclusions (e.g., for text nodes use figma_set_text).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_set_textB

Change text content of a text node

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes
nodeIdYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description only states the action (change text) without disclosing side effects, reversibility, or what happens on success/failure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no extraneous words, perfectly concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, description fails to explain return values, success/failure indicators, or any constraints (e.g., max text length). Requires significant inference from the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and description adds no meaning to parameters beyond their names (nodeId, text). No guidance on format, constraints, or where to get nodeId.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'change' and resource 'text content of a text node', clearly distinguishing from siblings like figma_create_text (create new) and figma_get_node (read).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance, but intent is obvious from name and description. Lacks alternatives or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

figma_statusA

Check if Figma plugin is connected

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It only states the basic purpose without disclosing the return value, error behavior, or side effects. For a status check, minimal behavioral information is given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that directly states the purpose with no unnecessary words. It is front-loaded and efficiently conveys the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (no parameters, no output schema, no annotations), the description is minimal. It would benefit from specifying what the tool returns (e.g., true/false for connectivity) to fully inform the agent. Currently adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and schema coverage is 100% trivially. According to rubric, 0 parameters yields a baseline of 4. No additional parameter info is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Check if Figma plugin is connected' uses a specific verb and resource, clearly indicating a status check. It distinguishes itself from siblings, which are all about creating, modifying, or retrieving Figma objects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool versus alternatives. It implies usage for verifying connectivity before other Figma operations, but lacks explicit when-not or alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 16 tool updatesv1.0.0
    • First observedfigma_create_frame
    • First observedfigma_create_text
    • First observedfigma_delete_node
    • First observedfigma_export_node
    • First observedfigma_get_components
    • First observedfigma_get_node
    • First observedfigma_get_page
    • First observedfigma_get_selection
    • First observedfigma_get_styles
    • First observedfigma_get_variables
    • First observedfigma_move_node
    • First observedfigma_resize_node
    • First observedfigma_run_js
    • First observedfigma_set_fill
    • First observedfigma_set_text
    • First observedfigma_status

TDQS

B3.2/5.0
Disambiguation5/5

Each tool targets a distinct action on a specific resource (e.g., create_frame vs. create_text, get_node vs. get_page). There is no obvious overlap or ambiguity between tools.

Naming Consistency5/5

All tools follow the consistent pattern of `figma_verb_noun` (e.g., figma_create_frame, figma_delete_node, figma_get_selection). No mixing of styles or irregular names.

Tool Count5/5

With 16 tools, the server covers a broad range of operations without being overwhelming. The count aligns well with the scope of a Figma bridge.

Completeness4/5

The tool surface covers creation, deletion, manipulation (move, resize, fill), reading (node, page, styles, variables), export, and advanced JS execution. Minor gaps like setting strokes or effects are present, but core workflows are well-supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A local MCP server that lets MCP clients inspect and edit the Figma document currently open in the Figma desktop app using a local bridge and development plugin.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server that enables AI tools to read and write Figma designs via a plugin bridge, bypassing the Figma REST API and rate limits.
    31
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Figma MCP server that lets agents execute arbitrary JavaScript inside a running Figma desktop app via a local development plugin, enabling real-time document inspection and manipulation while avoiding REST API rate limits.
    3
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Halil-KAPLAN/figma-bridge-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server