0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WSLでFigma公式のDev Mode MCPを使用する

Last updated at Posted at 2025-09-18

FigmaのDev Mode MCPが公式リリースされ、最近は アノテーション取得 までできてめちゃ便利になりました。
ただし仕組み上、「ローカル(127.0.0.1)のFigmaデスクトップアプリ」 へ接続する必要があるため、WSL上のローカル環境≠Windows上のローカル環境 という前提の違いで、WSLからはそのまま利用できません。実際、公式ガイド通りにClaude Code/Cursor/Codexから呼び出しても、WSLでは読み込めません。

この問題を、WSL→WindowsへのSSHローカルポート転送 で解決します。
具体的には WindowsをSSH サーバーとして起動し、WSLからのみアクセスできるようにして、WSLからWindowsの127.0.0.1:3845(例)へ安全に到達させます。

⚠️ 代替案としてWSLを mirrored モードでLANに直接公開し、IP指定でアクセスする方法もありますが 非推奨 です。
WSLがLAN上に直接露出して(Windowsのファイアウォール保護の外側になる)、攻撃面が広がるDockerやVSCodeの localhost 連携が不安定化しやすい(特に、デフォルトで簡単に到達できるWindows→WSLのhttp://localhost:ポート(NATの自動ポートプロキシ)が機能しなくなり、WindowsからWSL上のサービスへ接続できない)ため。開発用途では NATのまま+トンネル が安全・安定です。

この構成はFigma Dev Mode MCP 以外のWSL→Windowsローカル資源にも使い回せる汎用性の高いもののため、Windowsで開発する人は設定しておくと後々使う場面があると思います。(例:ブラウザCDP、ADB、ローカルDB/モック、社内プロキシなど)。

TL;DR

  • やること:WindowsにOpenSSHサーバーを入れる→WSLから公開鍵認証で接続→ssh -L でローカルポート転送
  • 安全性FirewallでWSLサブネットのみ許可+鍵認証。WSLを外部公開しないので安全
  • 補足:自動起動(sshd 自動起動・WSL ログイン時に自動でトンネル確立)も簡単

① OpenSSH サーバーをインストール&起動(管理者PowerShell)

PowerShell
#OpenSSHインストール
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

#起動
Start-Service sshd

#起動確認
Get-Service sshd

#停止
Stop-Service sshd

②ファイアウォールでWSLサブネットからだけ許可(管理者PowerShell)

PowerShell
#vEthernet (WSL (Hyper-V firewall)):WSL仮想NICのインターフェース名
$if = "vEthernet (WSL (Hyper-V firewall))"
New-NetFirewallRule -DisplayName "Allow SSH from WSL subnet"   -Direction Inbound -Action Allow -Protocol TCP -LocalPort 22
  -RemoteAddress 【WSLサブネット】 -InterfaceAlias $if -Profile Public

#作成したルールを表示
Get-NetFirewallRule -DisplayName "Allow SSH from WSL subnet" |
  Format-Table DisplayName, Enabled, Direction, Action, Profile

※【WSLサブネット】の確認方法(WSL)

WSL
#eth0インターフェースのネットワークCIDRを抽出する(例:172.28.96.0/20)
ip route | awk '/proto kernel/ && /eth0/ {print $1}'

③SSH鍵ペアを作成(WSL)

WSL
ssh-keygen -t ed25519 -C "wsl" -f ~/.ssh/id_wsl

④公開鍵をWindowsに配置(管理者PowerShell)

PowerShell
#WSL内の公開鍵ファイルを読み取り、Windowsの管理者用authorized_keysに書き込む
Get-Content \\wsl.localhost\Ubuntu\home\【WSLユーザー名】\.ssh\id_wsl.pub `
  | Out-File -Encoding ascii C:\ProgramData\ssh\administrators_authorized_keys

※【WSLユーザー名】と【Windowsユーザー名】の確認方法(WSL/PowerShellどちらも)

WSL/PowerShell
whoami

⑤権限を厳格化(管理者PowerShell)

PowerShell
$p = 'C:\ProgramData\ssh\administrators_authorized_keys'
# 継承を無効化(親フォルダからの不要な権限を削除)
icacls $p /inheritance:r
# AdministratorsとSYSTEMだけにフルアクセス権を付与
icacls $p /grant:r "Administrators:F" "SYSTEM:F"
# 設定反映のためsshd再起動
Restart-Service sshd

⑥SSHトンネルを張る(WSL)

WSL
#バックグラウンドで実行(-f)
ssh -N -f -i ~/.ssh/id_wsl -L 3845:127.0.0.1:3845 【Windowsユーザー名】@【WindowsホストのWSL側IP】

#トンネルを閉じる
pkill -f "ssh -N -f -L 3845:127.0.0.1:3845"

※【WindowsホストのWSL側IP】の確認方法(WSL)

WSL
## デフォルトゲートウェイ(WSL→Windowsホスト)を取得(例:172.24.96.1)
ip route | awk '/^default/ {print $3}'

3845部分を変えれば任意のポートを通せます
例:-L 8080:127.0.0.1:8080 で8080ポートを転送

⑦通常通りFigma Dev Mode MCPに接続

以下公式サイト通りに設定する。


補足①:OpenSSH サーバーを永続的に起動する設定(管理者PowerShell)

PowerShell
# OpenSSHサーバー(sshd)を自動起動に設定(デフォルトはManual)
Set-Service -Name sshd -StartupType Automatic

# sshd サービスの現在の状態と起動設定を確認
Get-Service sshd | Format-Table Status, StartType

補足②:WSLログイン時に自動接続

① トンネル貼り用のスクリプトを作成

WSL
nano ~/.ssh/start_tunnel.sh

中身

WSL
#!/bin/bash

# WindowsホストのWSL側IPを取得
WIN_IP=$(ip route | awk '/^default/ {print $3}')

# 既に同じトンネルがあれば何もしない
if ! pgrep -f "ssh -N -f -L 3845:127.0.0.1:3845" > /dev/null; then
  ssh -N -f -i ~/.ssh/id_wsl \
      -L 3845:127.0.0.1:3845 \
      【Windowsユーザー名】@"$WIN_IP"
fi

保存後、実行権限を付与

WSL
chmod +x ~/.ssh/start_tunnel.sh

② .bashrc に自動実行を追加

WSL
echo "~/.ssh/start_tunnel.sh" >> ~/.bashrc

.bashrc は WSL シェル起動時に毎回読み込まれる設定ファイルです。
WSLを起動したとき、自動でトンネルが張られる
既に張ってある場合は二重接続しない
ssh -i ~/.ssh/id_wsl により公開鍵認証で無人接続
トンネルを手動で切るとき

WSL
pkill -f "ssh -N -f -L 3845:127.0.0.1:3845"
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?