figma-mcp-rust について
figma-mcp-rust は、Figma 向けの MCP サーバーを Rust で移植したもので、プラグインブリッジを通じてライブのデザインデータを読み書きします。REST API を使用しないため、API トークンやレート制限は不要です。vkhanhqui/figma-mcp-go の移植版で、ログ、リクエストの相関、ツール登録の方法が変更されています。
主な機能
- 01プラグイン経由のライブ Figma データの読み書き
- 02API トークンとレート制限が不要
- 03作成、変更、エクスポートの 73 ツール
- 04スタイル、変数、コンポーネント、プロトタイプの対応
- 05設計戦略のプロンプトと Claude Code スキールを内蔵
活用シーン
- 01AI ツールによる Figma デザインの生成と編集
- 02ノードの一括リネーム、テキスト置換、デザイントークンの整理
- 03フレームの PDF、スクリーンショット、JSON/CSS トークンへの書き出し
MCP 対応
本プロジェクトは MCP サーバーであり、73 の Figma ツールと複数の MCP プロンプトを MCP クライアントに公開します。Figma とはプラグインブリッジを介して通信します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
73掲載時のツール一覧 · 2 週間前に更新
このツールにパラメーターはありません。
詳細
figma-mcp-rust
vkhanhqui/figma-mcp-go を高性能な Rust で移植したものです。 オリジナルの設計、Figma プラグインブリッジ、ツールカタログに関する功績はすべて @vkhanhqui に帰属します。このリポジトリでは、同じ MCP サーバーを Rust に移行し、 構造化ログ、競合のないリクエスト相関、宣言的なツールテーブルを実装しています。 詳しくは、以下の「Rust リライトでの変更点」をご覧ください。
Figma MCP:無料、レート制限なし
プラグイン経由で完全な読み書きアクセスが可能な、オープンソースの Figma MCP サーバーです。REST API は不要で、レート制限もありません。テキストをデザインに、デザインを実際のコードに変換できます。Cursor、Claude、GitHub Copilot、および MCP 対応のあらゆる AI ツールで利用できます。
主な特長
- Figma API トークンは不要です
- レート制限なしで、無料プランでも安心して利用できます
- プラグインブリッジ経由で Figma のライブデータを読み書きできます。ツールは合計 73 個です
- スタイル、変数、コンポーネント、プロトタイプ、コンテンツの設計を完全に自動化できます
- MCP プロンプトとして組み込まれたデザイン戦略と、対応する Claude Code スキルを利用できます
このプロジェクトを作った理由
ほとんどの Figma MCP サーバーは、Figma REST API に依存しています。
便利そうに思えますが、次の制限があります。
| プラン | 制限 |
|---|---|
| Starter / View / Collab | 月 6 回のツール呼び出し |
| Pro / Org(Dev シート) | 1 日 200 回のツール呼び出し |
| Enterprise | 1 日 600 回のツール呼び出し |
AI ツールを試していると、数分で上限に達してしまいます。
上限を引き上げる費用を払う余裕がありませんでした。 そこで、API をまったく使わないものを作りました。
インストールとセットアップ
npx 経由でインストールでき、ビルド手順は不要です。
1. AI ツールを設定する
Claude Code CLI
claude mcp add -s project figma-mcp-rust -- npx -y @alvinindra/figma-mcp-rust@latest
Claude Code プラグインマーケットプレイス
/plugin marketplace add alvinindra/figma-mcp-rust
/plugin install figma-mcp-rust@figma-mcp-rust
プラグインをインストールすると、デザインの読み取りからトークンの生成、ブリッジのトラブルシューティングまで、以下のワークフローを網羅する 13 個のスキルも追加されます。
Codex CLI
codex mcp add figma-mcp-rust -- npx -y @alvinindra/figma-mcp-rust@latest
.mcp.json(Claude およびその他の MCP 対応ツール)
{
"mcpServers": {
"figma-mcp-rust": {
"command": "npx",
"args": ["-y", "@alvinindra/figma-mcp-rust"]
}
}
}
.vscode/mcp.json(Cursor / VS Code / GitHub Copilot)
{
"servers": {
"figma-mcp-rust": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@alvinindra/figma-mcp-rust"
]
}
}
}
2. Figma プラグインをインストールする
- Figma Desktop で、Plugins → Development → Import plugin from manifest を選択します
- plugin.zip から
manifest.jsonを選択します - 任意の Figma ファイル内でプラグインを実行します
利用可能なツール
書き込み:作成
| ツール | 説明 |
|---|---|
create_frame | オプションで自動レイアウト、塗り、親を指定してフレームを作成します |
create_rectangle | オプションで塗りと角丸半径を指定して長方形を作成します |
create_ellipse | 楕円または円を作成します |
create_text | テキストノードを作成します(フォントは自動で読み込まれます) |
import_image | Base64 画像をデコードし、長方形の塗りとして配置します |
create_component | 既存の FRAME ノードを再利用可能なコンポーネントに変換します |
create_section | ページ上のフレームを整理するための Figma Section ノードを作成します |
書き込み:変更
| ツール | 説明 |
|---|---|
set_text | 既存の TEXT ノードのテキスト内容を更新します |
set_fills | ノードに単色の塗りつぶし色(16 進数)を設定します |
set_strokes | ノードに単色のストローク色と太さを設定します |
set_opacity | 1 つ以上のノードの不透明度を設定します(0 = 透明、1 = 不透明) |
set_corner_radius | 角の半径を一律または個別に設定します |
set_auto_layout | フレームのオートレイアウト(フレックス)プロパティを設定または更新します |
set_visible | 1 つ以上のノードを表示または非表示にします |
lock_nodes | 誤編集を防ぐために 1 つ以上のノードをロックします |
unlock_nodes | 1 つ以上のノードのロックを解除します |
rotate_nodes | 1 つ以上のノードに絶対回転角度(度)を設定します |
reorder_nodes | Z オーダーを変更します:bringToFront、sendToBack、bringForward、sendBackward |
set_blend_mode | 1 つ以上のノードにブレンドモード(MULTIPLY、SCREEN、OVERLAY など)を設定します |
set_constraints | 1 つ以上のノードにレスポンシブ制約 { horizontal, vertical } を設定します |
move_nodes | ノードを絶対位置 x/y に移動します |
resize_nodes | ノードの幅および/または高さを変更します |
rename_node | ノードの名前を変更します |
clone_node | ノードを複製し、必要に応じて位置変更または親の変更を行います |
reparent_nodes | ノードを別の親フレーム、グループ、またはセクションに移動します |
batch_rename_nodes | 検索/置換、正規表現、または接頭辞/接尾辞を使ってノードの名前を一括変更します |
find_replace_text | サブツリーまたはページ内のすべての TEXT ノードを対象にテキストを検索・置換します。正規表現をサポートします |
書き込み:削除
| ツール | 説明 |
|---|---|
delete_nodes | 1 つ以上のノードを完全に削除します |
書き込み:プロトタイプ
| ツール | 説明 |
|---|---|
set_reactions | ノードにプロトタイプのリアクション(トリガー+アクション)を設定します。モードは replace または append です |
remove_reactions | ノードからすべてのリアクション、またはゼロ始まりのインデックスで指定したリアクションを削除します |
書き込み:スタイル
| ツール | 説明 |
|---|---|
set_effects | ノードにドロップシャドウ/ぼかし効果を直接適用します(スタイルは不要です) |
create_paint_style | 単色を使った名前付きペイントスタイルを作成します |
create_text_style | フォント、サイズ、間隔を指定した名前付きテキストスタイルを作成します |
create_effect_style | 名前付きエフェクトスタイル(ドロップシャドウ、内側のシャドウ、ぼかし)を作成します |
create_grid_style | 名前付きレイアウトグリッドスタイル(列、行、またはグリッド)を作成します |
update_paint_style | 既存のペイントスタイルの名前または色を変更します |
apply_style_to_node | 既存のローカルスタイルをノードに適用し、そのスタイルにリンクします |
delete_style | ID を指定して任意のスタイル(ペイント、テキスト、エフェクト、またはグリッド)を削除します |
書き込み:変数
| ツール | 説明 |
|---|---|
create_variable_collection | 必要に応じて初期モードを指定し、新しいローカル変数コレクションを作成します |
add_variable_mode | 既存のコレクションに新しいモード(例:ライト/ダーク)を追加します |
create_variable | コレクションに変数(COLOR/FLOAT/STRING/BOOLEAN)を作成します |
set_variable_value | 特定のモードに対して変数の値を設定します |
bind_variable_to_node | 変数をノードのプロパティにバインドします。fillColor、strokeColor、visible、opacity、rotation、width、height、角の半径、間隔などをサポートします |
delete_variable | 変数またはコレクション全体を削除します |
書き込み:ページ
| ツール | 説明 |
|---|---|
add_page | ドキュメントに新しいページを追加します(名前とインデックスは任意です) |
delete_page | ID または名前でページを削除します(唯一のページは削除できません) |
rename_page | ID または現在の名前でページの名前を変更します |
書き込み:コンポーネントとナビゲーション
| ツール | 説明 |
|---|---|
navigate_to_page | ID または名前でアクティブな Figma ページに切り替えます |
group_nodes | 2 つ以上のノードを GROUP にまとめます |
ungroup_nodes | GROUP ノードをグループ解除し、子ノードを親に移動します |
swap_component | INSTANCE ノードのメインコンポーネントを入れ替えます |
detach_instance | コンポーネントインスタンスを切り離し、通常のフレームに変換します |
読み取り:ドキュメントと選択範囲
| ツール | 説明 |
|---|---|
get_document | 現在のページツリー全体 |
get_metadata | ファイル名、ページ数、現在のページ |
get_pages | すべてのページ(ID+名前)。軽量で、ツリーを読み込みません |
get_selection | 現在選択されているノード |
get_node | IDで指定した単一のノード |
get_nodes_info | IDで指定した複数のノード |
get_design_context | detail レベル(minimal/compact/full)で深さを制限したツリー |
search_nodes | サブツリー内から、名前の部分一致やタイプでノードを検索 |
scan_text_nodes | サブツリー内のすべてのテキストノード |
scan_nodes_by_types | 指定したタイプのリストに一致するノード |
get_viewport | 現在のビューポートの中心、ズーム、表示範囲 |
読み取り:スタイルと変数
| ツール | 説明 |
|---|---|
get_styles | ペイント、テキスト、エフェクト、グリッドのスタイル |
get_variable_defs | 変数コレクションと値 |
get_local_components | すべてのコンポーネントと、バリアントプロパティを持つコンポーネントセット |
get_annotations | 開発モードの注釈 |
get_fonts | 現在のページで使用されているすべてのフォント(使用頻度順) |
get_reactions | ノード上のプロトタイプ/インタラクションのリアクション |
エクスポート
| ツール | 説明 |
|---|---|
get_screenshot | 任意のノードをBase64画像としてエクスポート |
save_screenshots | 画像をディスクにエクスポート(サーバー側で実行されるため、API呼び出しは不要) |
export_frames_to_pdf | 複数のフレームを1つの複数ページPDFファイルとしてエクスポートし、ディスクに保存 |
export_tokens | デザイントークン(変数+ペイントスタイル)をJSONまたはCSSとしてエクスポート |
MCP プロンプト
| プロンプト | 説明 |
|---|---|
read_design_strategy | Figmaデザインを読み取るためのベストプラクティス |
design_strategy | デザインを作成・変更するためのベストプラクティス |
text_replacement_strategy | デザイン全体のテキストを分割して置換する方法 |
annotation_conversion_strategy | 手動の注釈をネイティブのFigma注釈に変換 |
swap_overrides_instances | コンポーネントインスタンス間でオーバーライドを転送 |
reaction_to_connector_strategy | プロトタイプのリアクションをインタラクションフロー図にマッピング |
style_audit_strategy | リンクされたスタイルや変数ではなく、生の値を使用しているノードを特定 |
bulk_rename_strategy | 一貫した命名規則に従ってノード名を変更 |
design_token_generation_strategy | 既存のデザインを基に変数とスタイルのトークンシステムを構築 |
generate_color_palette | プリミティブなカラー尺度と、変数としてのセマンティックエイリアスを作成 |
generate_type_scale | テキストスタイルとして完全なタイポグラフィ尺度を作成 |
generate_component_variants | コンポーネントを複製し、サイズ、テーマ、状態、ダークモードのバリアントを作成 |
各プロンプトは、プラグインマーケットプレイス経由でサーバーをインストールすると、接続の問題に対応する bridge-troubleshooting スキルとともに、Claude Codeのスキルとしても利用できます。
関連プロジェクト
- vkhanhqui/figma-mcp-go:Go版のオリジナル
- magic-spells/figma-mcp-bridge
- grab/cursor-talk-to-figma-mcp
- gethopp/figma-mcp-bridge
Rust への書き換えでの変更点
- メモリーセーフな WebSocket ブリッジ:リクエストとレスポンスの対応付けに、
sync.Onceで保護された Go チャネルの代わりにtokio::sync::oneshotを使用し、クローズ済みチャネルへの送信競合を解消しました。 - 宣言的なツールテーブル:73 個すべてのツール登録を、約 700 行にわたる反復的な Go ハンドラーの代わりに、単一の静的配列(
src/tools/definitions.rs)にまとめました。新しいツールは、1 つのエントリーと任意の JSON Schema ビルダーを追加するだけで登録できます。 tracingによる構造化ログ:各コンポーネントが、調整可能なレベルでターゲット別イベント(bridge、leader、follower、election、node)を出力します。詳細なログを表示するには、FIGMA_MCP_LOG=debugを設定してください。- フォーマット済み文字列の代わりに
thiserrorベースのエラー型を使用することで、呼び出し側が特定の失敗モード(NotConnected、Timeoutなど)を判定できるようになりました。 lopdfによる純粋な Rust 製の PDF 結合により、外部 CLI への依存がなくなりました。clapによる本格的な CLIを備え、ヘルプテキストの自動生成と入力検証に対応しました。
コントリビューション
Issue と PR を歓迎します。
スター履歴
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。