figma-mcp-bridge について
Mokido は、旧 figma-mcp-bridge で、ライブ Figma キャンバスを読み書きし、描画画像を返すエージェント向け MCP サーバーです。自身の書き込みの取り消し、レイアウト検査、再利用可能なサンドボックスモジュールの保存にも対応します。
主な機能
- 01JavaScript によるキャンバス編集
- 02書き込み後のスクリーンショット返却
- 03エージェントの編集操作の取り消し
- 04ノード検査とライブキャンバスの読み取り
- 05はみ出しと低コントラストの警告
- 06サンドボックスモジュールの再起動後の保持
活用シーン
- 01エージェントによる Figma デザインの作成と確認
- 02他の編集に影響せず誤操作を取り消す
- 03ライブキャンバスのノードとプロパティを検索
- 04長時間のキャンバス生成処理を実行
MCP 対応
stdio で MCP ツールを提供し、ローカル WebSocket 経由で Figma プラグインと接続して、キャンバス操作と結果の返却を行います。Figma の個人アクセストークンを設定すると、クラウドファイル読み取りツールが有効になります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
⚡ Mokido
Figma デザイン用 MCP サーバー。AI エージェントが Figma でデザインし、実際に描いたものを確認できます。
以前の名称は figma-mcp-bridge(npm では @kolganovr/figma-mcp-bridge)です。以前のリンクはここにリダイレクトされます。
依存関係ゼロの MCP サーバーです。コーディングエージェントに、ライブ Figma キャンバスへの読み取りと書き込みの両方のアクセスを提供し、レンダリングされた PNG をモデルに返すことで、視覚的な自己評価まで実現します。

エージェントがデザインを生成し、レンダリング結果を目視で監査してレイアウトの欠陥を検出し、リアルタイムで自動修正します。人間が介在する必要はありません。
問題点
コーディングエージェントは、Figma 内では事実上、何も見えません。ほとんどの Figma MCP サーバーは読み取り専用です。デザインをテキストに変換してモデルがコードにできるようにしますが、そこで処理は終わります。書き込み可能なものは、有料の Figma ライセンスと月間のツール呼び出し上限が必要なものか、作業が具体的になるとすぐに対応できなくなる固定コマンド群(create_rectangle、set_fill など)を公開しているもののどちらかです。
そして、書き込み後に本当に重要な問いに答えられるものはありません。**見た目は正しかったのでしょうか?**図形を描いて {"ok": true} を受け取り、そのまま先へ進むエージェントには、テキストがはみ出したり、コントラストが不十分だったり、フレームが他の人の作業に重なったりしても、気づく手段がありません。
このブリッジはそのループを完結させ、自律型エージェントに実際のデザインファイルを任せるために必要な安全策も備えています。
他との違い
| このブリッジ | Figma Dev Mode MCP(公式) | Framelink | Talk to Figma | |
|---|---|---|---|---|
| キャンバスへの書き込み | ✅ サンドボックス内で任意の JS を実行 | ✅ コードからキャンバスへ | ❌ 読み取り専用 | ✅ 固定コマンドセット |
| 視覚的なフィードバックループ | ✅ 書き込みのたびに自動でフレーム化した PNG を取得(capture: true) | ⚠️ 別途スクリーンショットの呼び出しが必要 | ❌ | ❌ |
| エージェントの作業を元に戻す | ✅ figma_rollback | ❌ | 該当なし | ❌ |
| Figma 無料プランで利用可能 | ✅ | ❌ Dev/Full ライセンス、有料プラン¹ | ✅ | ✅ |
| ツール呼び出しの上限 | なし — ローカルで動作 | Starter ライセンスでは月 6 回¹ | REST API のレート制限に準拠 | なし |
| ライブドキュメントをトークン効率よく読み取り | ✅ 86~91% 削減² | ⚠️ 一部のみ | ❌ REST API のみ | ❌ |
| サンドボックス内でコードモジュールを永続化 | ✅ bridge.define/require | ❌ | ❌ | ❌ |
| 長時間のジョブがタイムアウト後も継続 | ✅ 非同期の job_id と、ブロックする待機処理 1 回 | ❌ | 該当なし | ❌ |
| 呼び出しごとのトークン予算 | ✅ テキスト量を制限し、画像サイズを調整、JSON をコンパクト化 | ❌ | ⚠️ 読み取り側のみ | ❌ |
| インストール時の構成 | npm 依存関係ゼロ、npx または git clone、Node のみ | Figma デスクトップアプリ+有料ライセンス | npx+アクセストークン | Bun+2 つ目のサーバープロセス |
**要点:**既存のデザインをコードに変換したいだけなら、Framelink が最適です。有料の Figma プランをすでに利用していて Code Connect が必要なら、公式サーバーが最も安全な選択肢です。このブリッジは、エージェント自身がデザインを行う場合に適しています。自由に書き込み、自分の作業を確認し、間違えたときには元に戻せる必要があるケース向けです。
仕組み
flowchart LR
subgraph AI ["🤖 Coding Agent"]
LLM["Claude Code · Cursor<br/>Antigravity · Windsurf"]
end
subgraph Bridge ["⚡ MCP Server — Node.js, 0 deps"]
Router["Tool Router<br/>+ Job Ledger<br/>+ Target Router"]
Opt["Token Optimizer<br/>REST + LIVE"]
end
subgraph Figma ["🎨 Figma Desktop"]
Plugin["Bridge Plugin<br/>Checkpoint Journal<br/>Component Index"]
Canvas["Live Canvas"]
end
LLM -->|"stdio JSON-RPC"| Router
Router <-->|"WebSocket :8765"| Plugin
Plugin -->|"execute in sandbox"| Canvas
Canvas -->|"export PNG"| Plugin
Plugin -->|"raw node tree"| Opt
Opt -.->|"86% smaller"| LLM
Plugin ==>|"screenshot + warnings"| LLM
エージェントは、標準入出力経由でプレーンな MCP を使用します。サーバーはポート :8765 で手書きの RFC 6455 WebSocket を管理し、Figma プラグインが接続します。そのため、ポーリングによる遅延なしでコマンドがキャンバスに届き、結果(数メガバイトの base64 PNG を含む)もそのままストリーミングで返されます。
クイックスタート
npx mokido
または、インストーラーがマシンに変更を加える前に内容を確認するには、同じスクリプトを別の方法で取得します。
git clone https://github.com/kolganovr/mokido.git
cd mokido
node install.mjs
どちらの方法でも、サーバーとプラグインを所定の場所にコピーし、見つかったすべての AI クライアント設定に MCP サーバーを登録します。対象は Claude Desktop、Claude Code、Cursor、Windsurf、Antigravity です。npm パッケージは、最初のコマンドを短くするためだけに存在します。実行時の依存関係は一切追加されず、package.json の dependencies も空で、Python も不要です。このプロジェクトで必要な実行環境は、インストーラーにもサーバーにも node だけです。
次に、Figma Desktop で以下を行います。
- Plugins → Development → Import plugin from manifest… →
figma-plugin/manifest.jsonを選択します Ctrl + Alt + P(macOS:Cmd + Option + P)を押して Mokido を起動します- ステータスが緑色になり、
CONNECTEDと表示されます
新しいツールを読み込ませるため、AI クライアントを再起動してください。いつでも次のコマンドで確認できます。
npx mokido --doctor # or: node install.mjs --doctor
任意:Figma Cloud REST へのアクセス
ライブキャンバス用のツールにトークンは不要です。開いていないクラウドファイルも読み取りたい場合(get_file、get_node、get_styles など)は、個人アクセストークンを指定してください。
npx mokido --token "your_figma_personal_access_token"
# or: node install.mjs --token "your_figma_personal_access_token"
トークンがない場合、これら7つのツールは登録されません。ツールのリファレンスをご覧ください。
エージェントにできること
1. 自由に書き込んで、結果を確認する
capture: true を指定すると、呼び出しで作成または変更した内容そのものの PNG が返されます。変更されたノードに合わせて自動的にフレーム化され、ページ全体が対象になることはありません。また、ユーザーの選択を乗っ取ることもありません。
// agent calls figma_execute_code
{ "code": "const f = figma.createFrame(); /* ... */ return f.id;", "capture": true }
// agent gets back — text + image in one response
{
"ok": true,
"created": ["12:34"],
"warnings": ["Text \"Total\" has ~3.1:1 contrast against its parent fill (WCAG AA wants 4.5:1)."],
"checkpoint_id": "cp_mfk3p2a_7",
"duration_ms": 840
}
warnings 配列は、変更したサブツリーを対象とする軽量な自動チェックです。テキストのオーバーフロー、低いコントラスト、サイズがゼロのノードを検出します。スクリーンショットを往復させなくても、明らかなミスを見つけられます。
2. エージェントが行った操作を元に戻す
書き込みのたびにチェックポイントが自動的に作成されます。1回の呼び出しで元に戻せるため、人間が行った無関係な作業まで Ctrl+Z で取り消すことはありません。
// agent calls figma_rollback
{ "checkpoint_id": "last" }
// gets back
{
"ok": true,
"checkpoint_id": "cp_mfk3p2a_7",
"label": "Generate checkout flow",
"removed": ["12:34", "12:35"], // nodes the call created — deleted
"restored": ["9:11"], // nodes it modified — properties put back
"missing": [] // ids that no longer exist
}
figma.create*() を Proxy でラップし、作成したノードを自動的に追跡します。プロパティの編集はスナップショット時に追跡されます。削除については、黙って失われるのではなく、復元できないことが正直に報告されます。
3. ライブキャンバスを約700トークンで読み取る(約5,000トークンの代わりに)
クラウドツールで使用しているものと同じ、枝刈りと Pseudo-JSX のパイプラインを、現在開いているキャンバスに適用します。実際の6カードのレイアウトで測定した結果、**API 生 JSON 20 KB → 2.7 KB(86%削減)**でした。
<Frame id="1:1" name="Landing" w="1440" h="900" row gap="20">
<Frame id="2:0" name="Card" w="300" h="200" col gap="12" pad="20" bg="#FFFFFF" radius="16">
<Icon id="3:0" name="ic_check" size="24" strokeWidth="2" />
<Text id="4:0" color="#1A1A1F" font="Inter 18px">Feature 0</Text>
</Frame>
</Frame>
budget_tokens はレスポンスの上限を設定します。要求された深さが上限を超えた場合、サーバーは取得済みのツリーをより浅い深さで再シリアライズします。2回目の往復は不要です。さらに、実行内容と、追加情報を取得するために指定すべき ID をコメントとして付加します。
4. 再起動後も使える新しい機能をサンドボックスに追加する
figma_execute_code を呼び出すたびに関数スコープが新しく作られるため、ヘルパーは通常すぐに使えなくなります。bridge.define はモジュールをコンパイルし、.fig ドキュメント内に保存します。
// once
bridge.define("kit", `
async function label(parent, text) { /* ... */ }
module.exports = { label };
`);
// in any later call — including next week, after a Figma restart
const { label } = bridge.require("kit");
5. タイムアウトしても終了しない長時間ジョブ
生成処理が45秒を過ぎても実行中の場合、失敗として扱う代わりに job_id が返され、プラグインは処理を続行します。続いて figma_job_status を呼び出すと、ジョブが完了するまでブロックします(デフォルトでは45秒、wait_ms まで)。ポーリングループではなく、1回の呼び出しで済みます。実行中は progress(step, of, note) による進捗が含まれます。2分間進捗のないジョブは stalled としてフラグが立ち、プラグインが切断されたジョブは時間切れを待たず、直ちに PLUGIN_DISCONNECTED で失敗します。実行中のジョブがあるために呼び出しがタイムアウトした場合は、理由を示す(ジョブ名を含む)PLUGIN_BUSY が返され、状況が分からないまま再試行することを促しません。
6. トークンコストを抑える設計
エージェントのループでは、ツール呼び出しのコストは二重に発生します。結果が返ってきたときに一度、さらにその後の各ターンで、出力が毎回読み直されるコンテキストに残るためです。そのため、このブリッジはターン数の削減と残存データの縮小を優先しています。
| デフォルト | 理由 | |
|---|---|---|
| スクリーンショット | scale: 1、長辺はmax_px: 1024、1回の呼び出しにつき最大4枚 | 画像トークンはピクセル面積に比例します(約w·h/750)。各画像は800x600 ~640tokのように説明されます |
挿入/モード設定ツールでのcapture | オフ | 自動Lintのwarningsで、画像なしでも機械的な不具合を検出できます |
| テキスト結果 | コンパクトなJSON。構造を縮小して、各レスポンスをmax_output_bytes(UTF-8で3500バイト、エンベロープ全体)未満に収めます。要求値が3900バイトの上限を超える場合は上限値に制限されます。0 = 制限なし | 一部のクライアント(Antigravity)は、約4 KBを超える出力をファイルに書き出すため、モデルは追加の呼び出しでそのファイルを開く必要があります。完全な値はbridge.state.lastResultに保持されます |
| 低コストの読み取り | figma_inspect(1回の呼び出しで複数のIDに対応)、およびコード内のbridge.summarize/inspect/find/check | 呼び出しごとに手書きのダンプを返す代わりに、ノードごとに1行のアウトラインと合否リストを返します |
| プラグインの再読み込み | プラグインが再接続するまで、呼び出しは最大8秒待機します | 失敗すると、内容の確認に1ターン、再試行にもう1ターン必要になります |
| サーバーの指示 | 約1.9k文字。効率化ルールを最初に記載 | 一部のクライアントは指示を約2000文字で切り詰めます |
各デフォルト値は呼び出しごとに上書きでき、環境変数を使ってインストールごとに設定することもできます:FIGMA_MCP_SCALE、
FIGMA_MCP_MAX_PX、FIGMA_MCP_MAX_IMAGES、FIGMA_MCP_MAX_OUTPUT_BYTES、FIGMA_MCP_MAX_OUTPUT_CEILING(0 = 上限なし)、FIGMA_MCP_JOB_WAIT_MS、
FIGMA_MCP_ESCALATE_MS、FIGMA_MCP_RECONNECT_GRACE_MS。
新機能
4.2.7:compare/likeの差分は、正確な参照値を示すREF行で終わるため、エージェントは追加のprops読み取りなしでコピーを修正できます。findは見つかったもののサブツリーを返します。view: "flow"はnode_idsなしで動作します。bridge.setTextは混在フォントを保持します。内部ベンチマーク(Gemini Flash、シード付きタスク)では、シリーズごとのモデルのターン数が112から83に、書き込み後の検証ターン数が11から1になりました。更新後はFigmaプラグインを再読み込みしてください。
履歴:CHANGELOG.md。
ツールリファレンス
ツールはティアに分けて提供されるため、各ターンでモデルに送信されるスキーマ一覧は、実際に使用可能なツールに応じた規模に保たれます。
| ティア | 数 | 登録条件 |
|---|---|---|
| コア | 8 | 常時 |
| 拡張 | 5 | 常時 |
| REST | 7 | FIGMA_PERSONAL_ACCESS_TOKENが設定されている場合のみ |
| レガシー | 3 | FIGMA_MCP_LEGACY_TOOLS=1の場合のみ |
RESTトークンがなければ、エージェントに表示されるツールは23個ではなく13個です。そのため、REST_TOKEN_MISSINGだけを返すツールへの呼び出しで時間を無駄にすることもありません。
23個すべてのツール
#### コア — ライブキャンバス| ツール | 説明 |
|---|---|
figma_execute_code | Figma サンドボックスで JS を実行します。figma、ensureFont、getFreePosition、progress、bridge を注入します。capture、capture_node_ids、diff、max_px、max_output_bytes、async、target をサポートします。 |
figma_inspect | 1 回の呼び出しで多数のライブノードを読み取ります。コンパクトなアウトライン(または view: "map" のキャンバスマップ)、正確な props(reactions、connector を含む)、名前の find/テキストの find_text、context(祖先セクション、ブレークポイント、コンポーネントのバリアント)、ページ送り用の offset、または期待値の check(不一致のみ)を利用できます。変更は行いません。 |
figma_read_canvas | budget_tokens(デフォルト:サーバーのバイト予算)を指定して、ライブドキュメントをトークン効率よく読み取ります(jsx/tree/json)。 |
figma_screenshot | 指定した node_ids または現在の選択範囲の PNG を、max_px でサイズを指定して取得します。 |
figma_find_components | バリアント、プロパティ、キーを対象とした、キャッシュ済みのトークン化されたファジーコンポーネント検索です。 |
figma_insert_component_instance | コンポーネント/バリアントのインスタンスを作成し、テキストの上書きを適用して、AutoLayout に配置します。 |
figma_insert_svg | 拡大縮小率を保って生の SVG を挿入します。色の変更や、オプションでコンポーネントによるラップも可能です。 |
figma_get_variables | 変数コレクション、モード、トークン値を取得します。 |
figma_rollback | 以前の書き込み呼び出しで作成されたチェックポイントを元に戻します。 |
拡張 — ライブキャンバス
| ツール | 説明 |
|---|---|
figma_get_selection | 選択範囲のジオメトリ、簡潔な 16 進数の塗りつぶし色、親/ページ、AutoLayout コンテキストを取得します。 |
figma_get_canvas_layout | アートボードの境界と安全な suggestedNextPosition を取得します。layout:"grid" は棚状に詰めて配置します。 |
figma_set_variables_mode | フレームまたはページのテーマモード(Dark/Light/Brand)を切り替えます。 |
figma_job_status | エスカレーションされたバックグラウンドジョブを待機します(ブロッキング、wait_ms)。 |
figma_list_targets | 複数ファイルを対象にするため、接続済みの Figma ドキュメントを一覧表示します。 |
REST — Figma Cloud(トークンが必要)
| ツール | 説明 |
|---|---|
get_file/get_node | クラウドのファイル/サブツリーをトークン効率よく取得します。budget_tokens をサポートします。 |
get_image | Figma のレンダラーを使ってノードを PNG/SVG/PDF にレンダリングします。 |
get_styles/get_components | 公開済みのスタイルとデザインシステムのコンポーネントを取得します。 |
get_comments/post_comment | ファイルのコメントを読み取ったり投稿したりします。 |
レガシー — FIGMA_MCP_LEGACY_TOOLS=1 でオプトイン
figma_create_ui_card · get_me · get_image_fills
エンジニアリング上の注意点
見た目以上に難しかった部分と、その理由からコードがこのような形になっていることを説明します。
Figma サンドボックスでは `eval` は罠です
呼び出し間でヘルパーを保持するわかりやすい方法は、「ソースを保存して、次回 eval する」ことです。しかし、これは何も通知されずに失敗します。仕様上、Figma のサンドボックスでは eval はバインドされた関数であり、呼び出すたびに間接 eval になります。その中の宣言は、呼び出し元のスコープにも globalThis にも届きません。何も定義されず、例外も発生しません。
代わりに、bridge.define は new Function を基盤としており、その本体は通常の関数スコープになります。実行環境の bridge.info() は、要求に応じてこの仕様をエージェントに伝えるため、エージェントは推測せずに確認できます。
手作りの RFC 6455 WebSocket を採用した理由
npm 依存関係がゼロであることは、ここでは見栄えのための指標ではありません。これにより、レジストリアクセスのない制限されたマシンでも git clone && node install.mjs が動作し、デザインファイル内で任意の JS を実行するものについて、サプライチェーンを監査する必要もなくなります。
その代わり、フレーミングを自前で扱う必要があります。マスキング、分割された継続フレーム(4 MB のスクリーンショットは分割して届きます。各フラグメントを個別のメッセージとして扱うと、ツール呼び出しが 40 秒後にタイムアウトするまで、何も通知されずにデータが破棄されていました)、ping/pong による接続確認、そして 1 つのフレームでメモリを使い果たさないための 64 MB の上限です。
文字列の長さではなく UTF-8 バイト数で `pluginData` を分割する
Figma の `pluginData` エントリの上限は、**バイト数**で約 100 KB です。元のチャンク分割処理は JS の文字列長を基準に分割していたため、キリル文字で書かれたモジュール(約 2 バイト/文字)では「60,000 文字」のチャンクが実際には 120 KB になり、`setPluginData` がエラーをスローしていました。現在の分割処理は実際の UTF-8 の上限を基準にし、サロゲートペアを分断しません。ポートの所有権は引き継げる必要があります
各エージェントはサーバーの独自コピーを起動します。最初に :8765 をバインドしたプロセスがプラグインのソケットを所有し、それ以外はそこにプロキシします。所有者が終了したとき、プロキシが引き継げなければ、稼働中のエージェントは再起動するまで永久に動作しなくなります。5 秒間隔のウォッチドッグがバインドを再試行し、プロキシ呼び出しが失敗した場合は即座に引き継ぎを試みます。
配置を O(n) ではなく O(近傍) にする
元の衝突検出エンジンは、最大 200 個の配置候補それぞれについて、すべてのトップレベルノードを再走査していました。同じティック内に別の関数でも同じ処理を繰り返していたうえ、一方の軸にしか進まないため、生成された 20 個の画面が、ズームアウトしても全体を見渡せないほど長い帯状に並んでいました。
現在はバウンディングボックスを一度だけ計算して共有し、衝突検出には 500px のグリッドハッシュを使います。また、layout:"grid" は棚詰め方式でコンパクトな長方形に配置します。
エージェントに次の操作を伝えるエラー
Plugin API の生のエラーは、役に立たないことでよく知られています。失敗を既知のモードと照合して、実際に動作する API を示す HINT: 行と、安定した機械可読な code(FONT_NOT_LOADED、INSTANCE_TRANSFORM_LOCKED、STALE_NODE_ID、AUTOLAYOUT_HUG_RESIZE、AMBIGUOUS_TARGET、…)を含む内容に書き換えます。これにより、エージェントやツールはエラー文を解析せずに、失敗の種類に応じて処理を分岐できます。
セキュリティ:このエンドポイントはデザインファイル内で任意の JS を実行します
:8765 はループバックですが、ループバックにはユーザーが開いているあらゆるウェブページからアクセスできます。独立した 2 つの防御策があります。Origin 許可リスト(ブラウザーは Origin を偽装できないため、evil.com 上のページはハンドシェイク時に拒否されます)と、共有トークンです。install.mjs がトークンを生成して MCP 設定とインストール済みプラグインの両方に埋め込みます。これにより、悪意のあるページが Origin: "null" も提示できるサンドボックス化された iframe のケースにも対応します。
トークンなしでクローンから直接実行した場合も、Origin による制限は適用され、サーバーは警告を出力します。つまり、黙って公開されるのではなく、防御が弱まるだけです。
このサーバー自身が行う唯一のネットワーク呼び出し:更新チェック
起動時に、サーバーはインストール元のコミット(install.mjs がコピーされたコードの隣にある version.json に記録)を、GitHub API へのリクエスト 1 回で main 上の最新コミットと比較します。異なる場合は、stderr に 1 行の通知を出力します。更新を自動で適用することはありません。node install.mjs --update は引き続き、ユーザーが手動で明示的に実行する操作です。
このプロジェクトでネットワークアクセスを前提とするのはこれだけなので、ネットワークが利用できない場合は問題なく無効になるようにしています。チェックは待機せずに開始されるため(initialize や最初のツール呼び出しが遅れることはありません)、リクエストの失敗、遅延、オフライン状態は捕捉され、何も通知せずスキップされます。また、結果は 24 時間キャッシュされるため、GitHub の未認証レート制限に達したり、サーバーのコピーが起動するたびにチェックが実行されたりすることはありません。FIGMA_MCP_NO_UPDATE_CHECK=1 を設定すると、更新チェックを完全に無効にできます。前述のような制限された環境のマシンでは、この設定をおすすめします。
テスト
依存関係のない 7 つのテストスイートは、素の node で実行できます。
node tests/bridge-runtime.test.js # sandbox runtime, module persistence, checkpoint/rollback
node tests/layout-packer.test.js # row/grid packing, collision grid
node tests/optimizer.test.js # jsx/tree/json serialization, budget truncation
node tests/mcp-protocol.test.js # real server over stdio: initialize, tools/list, tiering
node tests/install.test.js # config merge/reuse, token persistence, stale-file cleanup
node tests/token-economy.test.js # fake plugin over a real WebSocket: budgets, long-poll, proxy
node tests/output-shrink.test.js # line-wise shrinking, offset paging, output ceiling, syntax pre-check
mcp-protocol.test.js は実際のサーバーを子プロセスとして起動し、実際の MCP クライアントが使うものと同じトランスポートである NDJSON を使って通信します。内部実装をインポートする方式ではありません。
リポジトリの構成
mokido/
├── figma/ # MCP server (Node.js, stdio + WebSocket)
│ ├── index.js # protocol, tool router, job ledger, target router
│ ├── optimizer/ # AST pruner, style collapser, JSX/tree serializers
├── figma-plugin/ # Figma Desktop plugin
│ ├── code.js # sandbox executor, bridge runtime, checkpoints, capture
│ └── ui.html # HUD — stream, settings, control (pause / undo)
├── docs/GUIDE.md # long-form agent guide (server instructions are inline in index.js)
├── tests/ # 7 suites, 0 dependencies
├── install.mjs # cross-platform installer, updater, doctor (Node only)
└── AGENTS.md # onboarding protocol for AI agents
ソース
- 公式サーバーのシート要件とクォータ要件 — Figma:Figma MCP サーバーのガイド、Figma Developer Docs:レート制限とアクセス
- 実際の REST 出力を模した 6 カードのレイアウトフィクスチャで測定したトークン削減量:生データ 20,587 B → Pseudo-JSX 2,862 B(86.1%)/ツリー 1,912 B(90.7%)。フィクスチャはリポジトリにチェックインされ、アサーションも設定されています。正確な数値を再現するには、
node tests/optimizer.test.jsを実行してください。
この比較は、2026年8月時点で公開されている情報に基づいています。代替ツールも活発に開発されています。この表だけを参考に判断するのではなく、最新の機能を確認してください。
ライセンス
MIT · Roman Kolganov によって開発
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。