Figma Bridge MCP
Figma Bridge MCP
Figma Bridge MCP は、MCP 互換の AI クライアントを Figma デスクトップアプリに接続するローカル Model Context Protocol (MCP) サーバーです。AI アシスタントが現在の Figma または FigJam ドキュメントを検査し、ノードをエクスポートし、Figma Plugin API を通じて制御された変更を行うことができます。
プラグインプレビュー

プラグインウィンドウには、ブリッジの接続ステータス、最近の接続イベント、手動での再接続ボタンが表示されます。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 |
| Windows 版 Figma デスクトップ |
WSL2 ターミナル | WSL2 Linux |
| Windows 版 Figma デスクトップ |
Windows で通常どおり開かれた VS Code | エージェントが明示的に WSL を使用するように設定されていない限り Windows | Windows パス | Windows 版 Figma デスクトップ |
VS Code Remote - WSL | WSL2 Linux | WSL Linux パス | Windows 版 Figma デスクトップ |
WSL2 接続の仕組み
server.js が WSL2 内で実行されると、ポート 3055 で WebSocket ブリッジを開きます。Windows は WSL ネットワークアプリケーションを localhost に転送するため、Windows 版 Figma プラグインは引き続き以下に接続できます:
ws://localhost:3055WSL の完全なフローは次のとおりです:
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 documentMicrosoft は、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 installMCP コマンドは、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 installVS Code で WSL プロジェクトを開くには:
code .VS Code のリモートステータスインジケーターに WSL: <distribution> と表示され、統合ターミナルが /home/user/... などのパスを使用していることを確認します。Remote - WSL ワークフローについては、VS Code WSL チュートリアル を参照してください。
ブリッジが WSL で実行されている間、Windows からアクセスをテストできます:
Test-NetConnection localhost -Port 3055TcpTestSucceeded が 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/...パスを使用したりしないでください。
最も予測可能な動作を得るには、環境ごとに正規のインストールを 1 つ使用し、その環境のすべてのエージェントが同じ server.js ファイルを起動するように設定します。同じ環境での複数の MCP プロセスがサポートされています。最初のプロセスがプライマリブリッジになり、後続のプロセスは自動的にそれを介してプロキシされます。
Figma で Figma Bridge MCP を使用する
Figma Bridge MCP には、ローカルの Figma 開発プラグインが含まれています。Figma Community からインストールする必要はありません。このプラグインは、開いている Figma または FigJam ドキュメント内で実行され、ローカルブリッジサーバーと Figma Plugin API の間で MCP コマンドを中継します。
プラグインを一度インストールする
開発プラグインは、Figma デスクトップアプリでインポートする必要があります:
macOS または Windows で Figma デスクトップアプリを開きます。
Figma Design または FigJam ファイルを新規作成するか、既存のファイルを開きます。
左上隅の Figma メニューを開きます。
Plugins → Development → Import new plugin from manifest... を選択します。
このリポジトリを参照して
plugin/manifest.jsonを選択します。Figma は Figma Bridge を Plugins メニューの Development セクションに追加します。
マニフェストは各コンピューターで一度だけインポートする必要があります。ローカルプラグインのインポートの詳細については、Figma の開発プラグインガイド を参照してください。
セッションごとにプラグインを実行する
AI エージェントに検査または編集させたい Figma Design または FigJam ファイルを開きます。
設定済みの MCP クライアントを起動または再読み込みします。通常、
server.jsが自動的に起動されます。診断のためにnpm startを手動で実行することもできます。Figma で Plugins → Development → Figma Bridge を選択します。
AI エージェントが Figma を使用している間、プラグインウィンドウを開いたままにします。
プラグインに 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.jsWSL2 で実行されている Codex
WSL ターミナルまたは VS Code Remote - WSL 統合ターミナルで次のコマンドを実行します:
codex mcp add figma-bridge-mcp -- node /home/user/code/figma-bridge-mcp/server.js設定を確認します:
codex mcp listCodex 内で /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.jsWSL2 で実行されている 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 listClaude 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 クライアントを設定した後:
Figma デスクトップアプリでターゲットドキュメントを開きます。
Plugins → Development → Figma Bridge を実行し、ウィンドウを開いたままにします。
AI エージェントを起動または再読み込みして、MCP サーバーを起動し、そのツールを検出させます。
エージェントに接続を確認するよう依頼します。
figma_statusを呼び出して、プラグインが接続されていることを報告するはずです。自然言語を使用して、開いているドキュメントの検査または変更をエージェントに依頼します。
例:
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プラグインが接続されているかどうかを報告します |
| なし | 現在のページとその直接の子要素を返します |
|
| ノードのプロパティと直接の子要素を返します |
| なし | 現在選択されているノードに関する詳細情報を返します |
| なし | ローカルのペイント、テキスト、エフェクトスタイルを一覧表示します |
| なし | ローカルの変数コレクション、モード、変数を一覧表示します |
| なし | 現在のページのコンポーネントを一覧表示します |
エクスポート
ツール | 入力 | 説明 |
|
| ノードを |
デフォルトのエクスポート形式はPNGで、デフォルトのスケールは 1 です。scale は PNG と PDF にのみ適用されます。SVGエクスポートにはスケール制約がなく、その指定は無視されます。
エクスポートは、インラインのbase64として返されるのではなく、ディスクに書き込まれます。控えめなPNGでもbase64にすると数百キロバイトになり、AIクライアントがコンテキストで保持するにはコストがかかり、画像としても利用できません。ツールは代わりにファイルパスを返します。
outputPath には、完全なファイルパスまたは書き込み先のディレクトリを指定できます。指定しない場合、ファイルはMCPクライアントプロセスの作業ディレクトリを基準とした ./figma-exports/ に置かれます。このデフォルトを変更するには FIGMA_BRIDGE_EXPORT_DIR を設定してください。生成されるファイル名はレイヤー名とノードIDを組み合わせたものになります。たとえば hero-banner-5005-2330.svg のようになります。
16 KBまでのSVGエクスポートはソースとしてインラインでも返されるため、アイコンを追加の読み取りなしで使用できます。より大きなSVGはパスのみで参照されます。
編集
ツール | 入力 | 説明 |
|
| テキストノードの内容を置き換えます |
|
| ノードの塗りを1つの単色のhexカラーに置き換えます |
|
| 現在のページにフレームを作成します |
|
| 現在のページまたは親ノード内にInter Regularのテキストノードを作成します |
|
| ノードを削除します |
|
| ノードの位置を変更します |
|
| ノードのサイズを変更します |
高度
ツール | 入力 | 説明 |
|
|
|
figma_run_js は、専用ツールではカバーされない操作を対象としています。指定されたコードはFigmaプラグインのサンドボックス内で実行され、開いているドキュメントを変更できます。
スニペットは実行前にasync関数でラップされるため、渡したコードのトップレベルで await と return の両方が機能します:
const node = figma.getNodeById("1:2");
await node.exportAsync({ format: "SVG" });
return node.name;サーバーを手動で実行する
手動での起動は診断に役立ちますが、MCPクライアントがサーバーを起動するように設定されている場合は必要ありません。
npm startWindowsでは、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依存関係は、WebSocketサーバーとクライアントの実装を提供する ws のみです。
トラブルシューティング
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 3055TcpTestSucceeded が False の場合:
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 installserver.jsへの絶対パスを使用してください。JSON内のWindowsのバックスラッシュを正しくエスケープしてください。
設定を変更した後は、MCPクライアントを再起動またはリロードしてください。
Node.jsまたはパスのエラーがないか、MCPクライアントのサーバーログを確認してください。
Port is in use; switching to proxy mode...
このメッセージは、別のFigma Bridgeインスタンスがすでに実行されている場合には正常です。プロキシが接続できない場合は、ポート 3055 を使用している無関係なプロセスを停止するか、server.js、plugin/ui.html、plugin/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 startserver.js への変更には、MCPサーバープロセスの再起動が必要です。plugin/ 配下のファイルへの変更には、Figmaで開発プラグインのリロードまたは再実行が必要です。
ライセンス
このリポジトリには現在ライセンスが含まれていません。配布したり、サードパーティからの貢献を受け入れたりする前に、LICENSE ファイルを追加してください。
Available Tools
16 toolsfigma_create_frameC
Create a new frame on current page
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| name | Yes | ||
| width | Yes | ||
| height | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| text | Yes | ||
| fontSize | No | ||
| parentId | No |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| format | No | PNG | |
| nodeId | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | Yes | Node ID (e.g. "1:2" or "1-2") |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | ||
| y | Yes | ||
| nodeId | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| width | Yes | ||
| height | Yes | ||
| nodeId | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hex color e.g. "#FF0000" | |
| nodeId | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| nodeId | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
16 tool updates
v1.0.0- First observed
figma_create_frame - First observed
figma_create_text - First observed
figma_delete_node - First observed
figma_export_node - First observed
figma_get_components - First observed
figma_get_node - First observed
figma_get_page - First observed
figma_get_selection - First observed
figma_get_styles - First observed
figma_get_variables - First observed
figma_move_node - First observed
figma_resize_node - First observed
figma_run_js - First observed
figma_set_fill - First observed
figma_set_text - First observed
figma_status
TDQS
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.
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.
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.
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
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
The Figma MCP server brings Figma design context directly into your AI workflow.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
MCP Server for Slima - AI Writing IDE for Novel Authors with AI Beta Reader.
Related MCP Servers
- AlicenseAqualityDmaintenanceLocal-first MCP server that connects AI coding agents to the currently open Figma file through a local plugin bridge, requiring no Figma API token.8MIT
- AlicenseNot gradedqualityCmaintenanceA 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
- AlicenseNot gradedqualityAmaintenanceAn MCP server that enables AI tools to read and write Figma designs via a plugin bridge, bypassing the Figma REST API and rate limits.31MIT
- AlicenseAqualityCmaintenanceFigma 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.3MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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