TalkToFigma について
TalkToFigma は、Cursor や Claude Code などの AI エージェントと Figma を接続する MCP サーバーです。エージェントが Figma のデザインを読み取り、プログラムから変更できます。繰り返しの多い Figma 編集を自動化したいデザイナーや開発者に向いています。TypeScript の MCP サーバー、WebSocket サーバー、Figma プラグインで構成されています。
主な機能
- 01Figma ドキュメントと選択範囲の読み取り
- 02図形・テキスト・フレームの作成と変更
- 03テキスト内容の一括置換
- 04Auto Layout とスタイルの設定
- 05注釈とプロトタイプ接続線の管理
活用シーン
- 01デザインファイル内のテキストを一括で置き換える
- 02コンポーネントインスタンスの上書き設定を複数のインスタンスへ反映する
- 03プロトタイプのリアクションを FigJam の接続線に変換する
MCP 対応
このプロジェクトは MCP サーバーであり、WebSocket 経由で Figma プラグインと通信します。Cursor や Claude Code などの MCP クライアントに対して、Figma デザインの読み取り・作成・変更ツールと、補助的なプロンプトを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Figma MCP と対話する
このプロジェクトは、AI エージェント(Cursor、Claude Code)と Figma の間の Model Context Protocol(MCP)統合を実装します。AI エージェントが Figma と通信し、デザインの読み取りやプログラムによる変更を行えます。
https://github.com/user-attachments/assets/129a14d2-ed73-470f-9a4c-2240b2a4885c
プロジェクト構成
src/talk_to_figma_mcp/- Figma 統合用 TypeScript MCP サーバーsrc/cursor_mcp_plugin/- Cursor と通信するための Figma プラグインsrc/socket.ts- MCP サーバーと Figma プラグイン間の通信を仲介する WebSocket サーバー
使用方法
- まだインストールしていない場合は、Bun をインストールします。
curl -fsSL https://bun.sh/install | bash
- セットアップを実行します。これにより、Cursor のアクティブなプロジェクトにも MCP がインストールされます。
bun setup
- WebSocket サーバーを起動します。
bun socket
- 新機能 Figma コミュニティページから Figma プラグインをインストールするか、ローカルにインストールします。
クイックビデオチュートリアル
デザイン自動化の例
テキストコンテンツの一括置換
テキストの一括置換機能を提供してくださった @dusskapark に感謝します。デモ動画をご覧ください。
インスタンスオーバーライドの伝播 @dusskapark によるもう一つの貢献です。 1 つのコマンドで、ソースインスタンスのコンポーネントインスタンスオーバーライドを複数のターゲットインスタンスに伝播できます。この機能により、同様のカスタマイズが必要なコンポーネントインスタンスを扱う際の反復的なデザイン作業を大幅に削減できます。デモ動画をご覧ください。
手動セットアップとインストール
MCP サーバー:Cursor との統合
~/.cursor/mcp.json の Cursor MCP 設定にサーバーを追加します。
{
"mcpServers": {
"TalkToFigma": {
"command": "bunx",
"args": ["cursor-talk-to-figma-mcp@latest"]
}
}
}
WebSocket サーバー
WebSocket サーバーを起動します。
bun socket
Figma プラグイン
- Figma で、Plugins > Development > New Plugin に移動します
- 「Link existing plugin」を選択します
src/cursor_mcp_plugin/manifest.jsonファイルを選択します- これで、Figma の開発用プラグインからプラグインを利用できるようになります
Windows + WSL ガイド
- PowerShell から bun をインストールします
powershell -c "irm bun.sh/install.ps1|iex"
src/socket.tsのホスト名0.0.0.0のコメントを解除します
// uncomment this to allow connections in windows wsl
hostname: "0.0.0.0",
- WebSocket を起動します
bun socket
使用方法
- WebSocket サーバーを起動します
- Cursor に MCP サーバーをインストールします
- Figma を開き、Cursor MCP プラグインを実行します
join_channelを使用してチャンネルに参加し、プラグインを WebSocket サーバーに接続します- MCP ツールを使用して、Cursor から Figma と通信します
ローカル開発環境のセットアップ
開発するには、MCP 設定を更新してローカルディレクトリを参照するようにします。
{
"mcpServers": {
"TalkToFigma": {
"command": "bun",
"args": ["/path-to-repo/src/talk_to_figma_mcp/server.ts"]
}
}
}
MCP ツール
MCP サーバーは、Figma とやり取りするための以下のツールを提供します。
ドキュメントと選択範囲
get_document_info- 現在の Figma ドキュメントに関する情報を取得しますget_selection- 現在の選択範囲に関する情報を取得しますread_my_design- パラメーターなしで、現在の選択範囲のノード情報を詳細に取得しますget_node_info- 特定のノードに関する詳細情報を取得しますget_nodes_info- ノード ID の配列を指定して、複数のノードに関する詳細情報を取得しますset_focus- 特定のノードを選択し、ビューポートをスクロールしてそのノードにフォーカスしますset_selections- 複数のノードを選択し、それらが表示されるようにビューポートをスクロールします
注釈
get_annotations- 現在のドキュメントまたは特定のノードにあるすべての注釈を取得しますset_annotation- Markdown に対応した注釈を作成または更新しますset_multiple_annotations- 複数の注釈を効率的に一括作成または更新しますscan_nodes_by_types- 特定のタイプのノードを検索します(注釈対象を見つけるのに便利です)
プロトタイピングと接続
get_reactions- ノードのすべてのプロトタイプリアクションを、視覚的なハイライトアニメーション付きで取得しますset_default_connector- コピーした FigJam コネクタを、接続作成時のデフォルトのコネクタスタイルとして設定します(接続を作成する前に設定する必要があります)create_connections- プロトタイプのフローまたはカスタムマッピングに基づいて、ノード間に FigJam のコネクタ線を作成します
要素の作成
create_rectangle- 位置、サイズ、任意の名前を指定して、新しい長方形を作成しますcreate_frame- 位置、サイズ、任意の名前を指定して、新しいフレームを作成しますcreate_section- キャンバス上の関連コンテンツをまとめるセクションを作成しますcreate_text- フォントプロパティをカスタマイズして、新しいテキストノードを作成します
テキストコンテンツの変更
scan_text_nodes- 大規模なデザイン向けにインテリジェントなチャンク分割を行い、テキストノードをスキャンしますset_text_content- 1つのテキストノードのテキストコンテンツを設定しますset_multiple_text_contents- 複数のテキストノードを効率的に一括更新します
自動レイアウトと間隔
set_layout_mode- フレームのレイアウトモードと折り返し動作を設定します(NONE、HORIZONTAL、VERTICAL)set_padding- 自動レイアウトフレームのパディング値を設定します(上、右、下、左)set_axis_align- 自動レイアウトフレームの主軸と交差軸の配置を設定しますset_layout_sizing- 自動レイアウトフレームの水平方向と垂直方向のサイズ設定モードを設定します(FIXED、HUG、FILL)set_item_spacing- 自動レイアウトフレーム内の子要素間の距離を設定します
スタイル設定
set_fill_color- ノードの塗りつぶし色を設定します(RGBA)set_stroke_color- ノードの線の色と太さを設定しますset_corner_radius- 角ごとの個別設定も指定して、ノードの角丸半径を設定しますset_image_fill- ローカルファイルパス、URL、または base64 データの画像でノードを塗りつぶします(FILL、FIT、CROP、または TILE)
レイアウトと整理
move_node- ノードを新しい位置に移動しますresize_node- 新しい寸法に合わせてノードのサイズを変更しますdelete_node- ノードを削除しますdelete_multiple_nodes- 複数のノードを一度に効率的に削除しますclone_node- 任意の位置オフセットを指定して、既存のノードのコピーを作成しますrename_node- ノードの名前を変更しますset_parent- デフォルトで絶対位置を維持しながら、ノードを新しい親(セクション、フレーム、またはグループ)に移動します
コンポーネントとスタイル
get_styles- ローカルスタイルの情報を取得しますget_local_components- ローカルコンポーネントの情報を取得しますcreate_component_instance- コンポーネントのインスタンスを作成しますget_instance_overrides- 選択したコンポーネントインスタンスからオーバーライドプロパティを抽出しますset_instance_overrides- 抽出したオーバーライドを対象のインスタンスに適用します
エクスポートと高度な機能
export_node_as_image- ノードを画像としてエクスポートします(PNG、JPG、SVG、または PDF)。画像のサポートは限定的で、現在は base64 がテキストとして返されます
接続の管理
join_channel- Figma と通信するため、特定のチャンネルに参加します
MCP プロンプト
MCP サーバーには、複雑なデザインタスクを進めるためのガイドとなる、いくつかのヘルパープロンプトが含まれています。
design_strategy- Figma デザインを扱う際のベストプラクティスread_design_strategy- Figma デザインを読み取る際のベストプラクティスtext_replacement_strategy- Figma デザインのテキストを置き換える体系的な方法annotation_conversion_strategy- 手動の注釈を Figma のネイティブ注釈に変換する方法swap_overrides_instances- Figma のコンポーネントインスタンス間でオーバーライドを引き継ぐ方法reaction_to_connector_strategy- 'get_reactions' の出力を使用して Figma のプロトタイプリアクションをコネクタ線に変換し、順番に 'create_connections' を使用する方法を案内する戦略
開発
Figma プラグインのビルド
-
Figma プラグインのディレクトリに移動します。
cd src/cursor_mcp_plugin -
code.js と ui.html を編集します
ベストプラクティス
Figma MCP を使用する際は、次の点に従ってください。
- コマンドを送信する前に、必ずチャンネルに参加してください
- まず
get_document_infoを使ってドキュメントの概要を取得してください - 変更を加える前に
get_selectionを使って現在の選択範囲を確認してください - 必要に応じて適切な作成ツールを使用してください:
- コンテナーには
create_frame - 基本図形には
create_rectangle - テキスト要素には
create_text
- コンテナーには
get_node_infoを使って変更を確認してください- 一貫性を保つため、可能な場合はコンポーネントインスタンスを使用してください
- すべてのコマンドで例外が発生する可能性があるため、適切にエラーを処理してください
- 大規模なデザインの場合:
scan_text_nodesのチャンク化パラメーターを使用してください- WebSocket の更新を通じて進行状況を監視してください
- 適切なエラー処理を実装してください
- テキスト操作の場合:
- 可能な場合はバッチ操作を使用してください
- 構造的な関連性を考慮してください
- 対象を絞ったエクスポートで変更を確認してください
- レガシーアノテーションを変換する場合:
- テキストノードをスキャンして、番号付きマーカーと説明を特定してください
scan_nodes_by_typesを使って、アノテーションが参照する UI 要素を見つけてください- パス、名前、または近接性を使って、マーカーと対象要素を対応付けてください
get_annotationsを使って、アノテーションを適切に分類してくださいset_multiple_annotationsを使って、ネイティブアノテーションをバッチで作成してください- すべてのアノテーションが対象に正しくリンクされていることを確認してください
- 変換が成功した後、レガシーアノテーションノードを削除してください
- プロトタイプのヌードルを FigJam コネクターとして視覚化します:
get_reactionsを使ってプロトタイプのフローを抽出し、set_default_connectorを使ってデフォルトのコネクターを設定し、create_connectionsを使って、視覚的にわかりやすいフローマッピング用のコネクター線を生成します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。