Skip to main content
Glama
Halil-KAPLAN

Figma Bridge MCP

by Halil-KAPLAN

Figma Bridge MCP

Figma Bridge MCP 是一个本地 Model Context Protocol (MCP) 服务器,它将兼容 MCP 的 AI 客户端连接到 Figma 桌面应用。它允许 AI 助手检查当前的 Figma 或 FigJam 文档、导出节点,并通过 Figma Plugin API 进行受控更改。

插件预览

Figma Bridge plugin showing an active connection

插件窗口显示桥接连接状态、最近的连接事件以及手动重新连接按钮。当你的 MCP 客户端正在使用 Figma 时,请保持此窗口打开。

Related MCP server: Figma Native MCP

功能特性

  • 检查当前页面、选中的图层、单个节点、本地样式、变量和组件。

  • 将 Figma 节点直接导出为 PNG、SVG 或 PDF 到磁盘。

  • 更新文本和纯色填充颜色。

  • 创建、移动、调整大小和删除节点。

  • 通过 Figma Plugin API 运行高级 JavaScript。

  • 使用从 Figma URL 复制的节点 ID,格式为 1:231-23

  • 通过共享的本地桥接服务器连接多个 MCP 客户端进程。

  • 从原生 Windows 或 WSL2 中运行的 AI 代理使用 Windows Figma 桌面应用。

  • 与任何支持 stdio 服务器的 MCP 客户端配合使用,包括 Codex、Claude Code 和 VS Code 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    │
└──────────────────────────────┘

第一个获取端口 3055server.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

Windows,除非代理被明确配置为使用 WSL

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

微软在 Accessing network applications with WSL 中记录了通过 localhost 从 Windows 访问 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 tutorial

当桥接在 WSL 中运行时,你可以从 Windows 使用以下命令测试访问:

Test-NetConnection localhost -Port 3055

TcpTestSucceeded 应为 True

将代理和 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's development plugin guide

为每个会话运行插件

  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 执行请求的操作,并通过同一连接将结果返回给代理。然后,代理可以检查结果、继续使用另一个工具,或解释它所做的更改。

将 Figma Bridge MCP 添加到 AI 应用程序

Figma Bridge MCP 是一个本地 stdio MCP 服务器。AI 应用程序使用以下命令启动它:

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

该路径必须在 AI 应用程序运行的环境中有效。你通常不需要单独运行 npm start,因为 MCP 客户端会自行启动和管理 server.js

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 设置在 WSL 内运行 Codex:

"chatgpt.runCodexInWindowsSubsystemForLinux": true

启用该设置后,在 WSL 内安装 Node.js 和 Figma Bridge MCP,并在 Codex MCP 配置中使用 WSL 路径。在 VS Code Remote - WSL 窗口中,Codex 已经随 WSL 项目环境运行。

有关 MCP 配置,请参阅官方 Codex MCP documentation;有关 WSL 工作流程,请参阅 Codex WSL documentation

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 documentationClaude Code VS Code documentation

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 ServersToolsIntegrations 设置,并添加具有以下配置的服务器:

  • 名称: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"]
    }
  }
}

确切的配置文件名和顶级键(mcpServersservers)取决于客户端。终端应用程序遵循相同的环境规则:当应用程序在 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 来自 Figma URL(例如 node-id=2057-6604)时,你可以将 2057-66042057:6604 传递给桥接。

AI 代理会根据你的请求决定调用哪些 MCP 工具。当你需要特定操作时,也可以显式指定工具名称,例如 figma_get_selectionfigma_export_nodefigma_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,可选 formatscaleoutputPath

将节点导出为 PNGSVGPDF,写入文件并返回其路径

默认导出格式为 PNG,默认缩放比例为 1scale 仅适用于 PNGPDF;SVG 导出不受缩放约束,并会忽略该参数。

导出结果会写入磁盘,而不是以内联 base64 形式返回——一张普通的 PNG 就有数百 KB 的 base64 数据,对 AI 客户端来说携带在上下文中成本很高,而且无法作为图片使用。因此该工具改为返回文件路径。

outputPath 可以是完整文件路径,也可以是用于写入的目录。如果未提供,文件会落在相对于 MCP 客户端进程工作目录的 ./figma-exports/ 下;可通过设置 FIGMA_BRIDGE_EXPORT_DIR 来更改该默认值。生成的文件名会结合图层名称与节点 ID,例如 hero-banner-5005-2330.svg

不超过 16 KB 的 SVG 导出还会以内联源码形式返回,因此图标无需再次读取即可使用。更大的 SVG 则仅通过路径引用。

编辑

工具

输入

描述

figma_set_text

nodeIdtext

替换文本节点的内容

figma_set_fill

nodeIdhex

用一种纯色十六进制颜色替换节点的填充

figma_create_frame

namewidthheight,可选 x、可选 y

在当前页面上创建画框

figma_create_text

text,可选 x、可选 y、可选 fontSize、可选 parentId

在当前页面或父节点中创建 Inter Regular 文本节点

figma_delete_node

nodeId

删除节点

figma_move_node

nodeIdxy

更改节点的位置

figma_resize_node

nodeIdwidthheight

更改节点的尺寸

高级

工具

输入

描述

figma_run_js

code

运行可访问 figma 插件 API 对象的 JavaScript

figma_run_js 用于执行专用工具未覆盖的操作。提供的代码在 Figma 插件沙箱内运行,可以修改当前打开的文档。

代码片段在运行前会被包裹在一个异步函数中,因此 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 文件。

  • 运行 插件 → 开发 → Figma 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 是在 WSL 内部运行的,而不是仅在 Windows 上运行。

不要将插件 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.jsplugin/ui.htmlplugin/manifest.json 中一致地更改端口。

命令超时

  • 确认插件仍然打开且已连接。

  • 确认目标文档在 Figma 中仍然打开。

  • 检查节点 ID 是否存在于当前文档中。

  • 重新连接插件后重试请求。桥接请求在 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