mcpField
E
Electron MCP Server

Electron MCP Server

ローカル
yaw.sh開発ツール22 週間前に更新

Electron MCP Server について

Electron MCP Serverは、18個のツールでElectronプロジェクトの開発を支援します。AIアシスタントによる安全なIPCやプロジェクト設定の生成、セキュリティ監査、ビルドエラーの診断、バージョン変更の確認に対応し、コード実行やファイルアクセスは行いません。

主な機能

  1. 01IPCハンドラーとpreloadブリッジの生成
  2. 02セキュリティ推奨事項とIPCコードの監査
  3. 03CSP、fuses、自動更新の設定
  4. 04ビルドおよび署名エラーの診断
  5. 05非推奨APIとバージョン移行の確認
  6. 06知識の更新情報付き読み取り専用ツール

活用シーン

  1. 01安全なIPCチャネルの構築
  2. 02BrowserWindowとpreloadのセキュリティ確認
  3. 03electron-builderやforgeの出力診断
  4. 04Electronのバージョンアップ計画

MCP 対応

stdioで動作するMCPサーバーとして、18個のElectron開発ツールをMCPクライアントに提供します。ツールは入力引数から結果を生成し、ファイルシステムへのアクセスやコード実行は行いません。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"yawlabs-electron": {
"command": "npx",
"args": [
"-y",
"@yawlabs/electron-mcp"
]
}
}
}
起動コマンドnpx -y @yawlabs/electron-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@yawlabs/electron-mcp1.7.0

ツール

18

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
argsstringいいえ引数の TypeScript 型。例:'{ userId: string }' または 'string'。引数がない場合は省略します。
directionenumはいチャネルの通信方向renderer-to-main | main-to-renderer | bidirectional
returnTypestringいいえ戻り値の TypeScript 型(renderer-to-main のみ)。例:'{ name: string; email: string }'。void の場合は省略します。
channelNamestringはいIPC チャネル名。例:'get-user-data'、'save-settings'、'open-file-dialog'
descriptionstringはいこの IPC チャネルの機能。例:'Fetches user profile from the database'
apiNamespacestringいいえ分類先となる window.electronAPI 上の名前空間。例:'users'、'settings'。デフォルトは 'api' です。

詳細

@yawlabs/electron-mcp

Add to Yaw MCP

ワンクリックでローカルの Yaw MCP 設定に追加でき、すべての Yaw Terminal セッションで利用できるようになります。または、以下の手順で手動インストールしてください。

npm version License: MIT GitHub stars

AI アシスタントを Electron に本当に詳しくします。 AI モデルがよく幻覚を起こす項目に対応する 18 個のツールです。コンテキスト分離、プリロードブリッジ、フューズ、CSP、署名、自動更新、メジャーバージョン間の破壊的変更、公式セキュリティ推奨事項 20 項目を扱います。

これはランタイムデバッガーではありません。「Electron のコードを書いて」という指示の成功率を運任せから、一度で正しく動く状態に変える開発インテリジェンスレイヤーです。

Yaw Labs が構築、保守しています。

なぜこれを選ぶのか?

他の Electron MCP サーバーはモデルにシェルを渡して、あとは運任せです。これは違います。

  • セキュリティホールにならない IPC — electron_scaffold_ipc_channel は、メインプロセスのハンドラー、型付きプリロードブリッジ、contextBridge による公開、レンダラーでの使用を 1 回の呼び出しで生成します。nodeIntegration: true や、window 上への ipcRenderer の直接公開はありません。
  • 公式のセキュリティ推奨事項を適用 — electron_audit_security は、BrowserWindow の設定、プリロードスクリプト、CSP を、静的な入力から検証可能な electronjs.org/docs/latest/tutorial/security の 20 項目中 19 項目に照らしてチェックします。(20 番目のセッション権限処理には実行時のコンテキストが必要なため、レポートのフッターにその旨が表示されます。)雰囲気で判断するものではありません。
  • バージョンを考慮した移行 — electron_migrate_version は v28 から v41 までの破壊的変更を把握しており、バージョンを上げたときに何が壊れるかを正確に示します。electron_check_deprecated_apis は削除された API をコードから検出します。
  • ビルドエラーを解説 — electron_diagnose_build_error は electron-builder/forge の出力を解析し、Apple の署名、Windows のコード署名、ネイティブモジュールの再ビルド、ASAR パッケージング、エンタイトルメント、パスの引用符処理などの根本原因を特定します。
  • 最新の本番環境向け強化 — electron_configure_fuses は、未使用のランタイム機能(Cookie の暗号化、Node CLI フラグ、レガシーな読み込み動作)を無効にする @electron/fuses ブロックを生成します。electron_configure_csp は、バンドラーやフレームワーク自体のアセットまでブロックすることなく、実際に機能する CSP を生成します。
  • ナレッジの鮮度を明示し、想定に頼らない — すべての応答には _Knowledge last verified YYYY-MM-DD (Electron vN stable)_ というフッターが含まれます。electron_knowledge_version を呼び出すと、メタデータを直接取得できます。使用中の Electron がフッターのバージョンより新しい場合は、ツールがそれを知らせます。
  • 読み取り専用で、副作用なし — すべてのツールは readOnlyHint、destructiveHint: false、idempotentHint: true を宣言しているため、MCP クライアントは確認を省略できます。ツールがファイルシステムに触れたり、コードを実行したり、exec を呼び出したりすることはありません。
  • ランタイム依存関係ゼロ — 単一のバンドルファイルとして配布されます。5 分かかる node_modules のインストールも、プロジェクトを肥大化させる electron や electron-builder の依存関係もありません。公開パッケージの dependencies は {} です。このリポジトリに対する Dependabot のアラートは devDependencies が対象です。依存関係の大部分(MCP SDK の HTTP トランスポートである hono、express、ip-address、qs)はバンドルに含まれていません。このサーバーは stdio のみを使用するためです。一方、SDK のデフォルト JSON Schema バリデーター(ajv)が必要とする fast-uri は dist/index.js にインライン化されているため、これに関するアドバイザリーは再インストールではなく、新しいリリースで解消されます。

クイックスタート

API キーは不要です。環境変数も必要ありません。インストールするだけです。

1. プロジェクトのルートに .mcp.json を作成します

macOS / Linux / WSL:

{
  "mcpServers": {
    "electron": {
      "command": "npx",
      "args": ["-y", "@yawlabs/electron-mcp@latest"]
    }
  }
}

Windows:

{
  "mcpServers": {
    "electron": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "@yawlabs/electron-mcp@latest"]
    }
  }
}

Windows ではなぜ追加の手順が必要ですか? Node 20 以降では、child_process.spawn から .cmd ファイル(Windows では npx が該当します)を直接実行できません。cmd /c でラップするのが標準的な回避策です。

2. 再起動して承認します

Claude Code(または MCP クライアント)を再起動し、プロンプトが表示されたら Electron MCP サーバーを承認します。

これだけです。あとは AI アシスタントに次のように尋ねてください。

「Electron アプリにファイルピッカーを追加して」

「BrowserWindow の設定にセキュリティ上の問題がないか監査して」

「electron-builder で署名エラーが発生している。出力は以下のとおり」

「Vite + React のレンダラー向けに CSP を生成して」

「Electron 32 から 41 にアップグレードすると、何が壊れますか?」

その他の MCP クライアント

クライアント設定ファイル
Claude Code.mcp.json(プロジェクトのルート)または ~/.claude.json(グローバル)
Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json(macOS)
Cursor~/.cursor/mcp.json
Windsurf~/.codeium/windsurf/mcp_config.json
VS Code.vscode/mcp.json

上記と同じ JSON ブロックを、これらのいずれかで使用してください。

ランタイムとサンドボックス

ランチャーは、現行バージョン(0.18.0 以降)がインストールされている場合は oam ランタイムを優先し、そうでない場合はランチャーを実行している Node にフォールバックします。設定は不要です。どちらでも同じサーバーを利用できます。

オプトインのサンドボックス。 oam を使うと、許可を一切付与せずに --permission のもとでサーバーを実行できます。ファイルシステム、子プロセス、ネットワーク、環境へのアクセスはありません。このサーバーにはそれらが不要です(すべてのツールは引数を処理して Markdown を返すだけです)。そのため、サンドボックスを使っても機能は損なわれず、サーバーが使用しないだけだったものをランタイムが拒否するようになります。上記で使用した設定ブロック(macOS/Linux/WSL では npx、Windows では cmd /c npx)に env ブロックを追加してください。

"env": { "ELECTRON_MCP_SANDBOX": "1", "ELECTRON_MCP_RUNTIME": "oam" }

2 つ目の変数が、サンドボックスを必須にする設定です。適用には新しく起動した oam(0.18.0 以降)が必要で、ELECTRON_MCP_RUNTIME=oam を指定した場合、oam がない、または使用できないと、サンドボックスなしでサーバーを実行するのではなく、起動エラーになります。デフォルトの ELECTRON_MCP_RUNTIME=auto では、その場合もランチャーはサーバーを実行しますが、--permission は付与されず、その旨と対処方法を標準エラー出力に表示します。利用可能な場合にサンドボックスを使いたいときは auto を、確実にサンドボックスを適用したいときは oam を使ってください。

適用されたかどうかを確認する方法:サンドボックスを要求したにもかかわらず、適用されずにサーバーを実行する経路では、すべて標準エラー出力に electron-mcp: で始まる行が出力され、runs WITHOUT --permission と対処方法が記載されます(多くの MCP クライアントでは、サーバーの標準エラー出力がログに表示されます)。サンドボックスが適用された場合、この行は出力されません。シェルから確認するには、次のコマンドを実行します。

ELECTRON_MCP_SANDBOX=1 ELECTRON_MCP_RUNTIME=oam npx -y @yawlabs/electron-mcp@latest --version

標準出力にバージョンが表示され、終了コードが 0 で、WITHOUT --permission の行がなければ、サンドボックスを適用した oam がサーバーを実行しています。ELECTRON_MCP_RUNTIME=oam を設定している場合、oam がなければエラーになります。

これは動作が変わるため、デフォルトでは無効です。今後、機能上必要な権限が出てきた場合は、セッション中ではなくレビュー時に問題として検出されるべきです。知っておくべきことがほかに 2 つあります。

  • ランチャー自体がすでに oam のもとで実行されている場合(Yaw MCP がこれに該当します)、サンドボックスを適用するにはプロセスレベルのフラグを設定できる新しい oam が必要なため、2 つ目の oam(より新しいバージョンがインストールされていなければ、ホスト自身のバイナリ)が起動します。これにより、起動時にランタイムの起動が 1 回追加され、ランチャーが見つけた oam バイナリごとに --version の確認が行われます。
  • ホストのコマンドに --permission を指定するのではなく、変数でサンドボックスを要求してください。--allow-env(および --allow-child-process)も許可するホストであれば設定は引き継がれます。この場合、Node に引き継ぐとき(ELECTRON_MCP_RUNTIME=node、またはホストの oam が最低バージョン未満の場合)は、許可を一切付与せずに node --permission が実行されます。これは、oam 0.18 がホストの --permission/--allow-* フラグを Node の NODE_OPTIONS にコピーし、Node が --allow-env= のような oam 専用のフラグを拒否するためです(終了コード 9、サーバーは起動しません)。この場合、ランチャーは electron-mcp: で始まる行を 1 行出力します。(ランチャーを介さずに直接実行する場合は oam --permission run <path>/dist/index.js です。)
変数効果
ELECTRON_MCP_RUNTIME=auto使用可能な最新の oam を使用し、なければ Node を使用します(デフォルト)
ELECTRON_MCP_RUNTIME=oam使用可能な最新の oam を使用し、なければエラーで終了します
ELECTRON_MCP_RUNTIME=node常に Node を使用します(サンドボックスは適用されず、その旨がランチャーから通知されます)
ELECTRON_MCP_SANDBOX=1許可を一切付与せずに --permission のもとで oam を実行します。true/yes/on でも有効になり、0/false/no/off では無効になります
OAM_BIN=/path/to/oam使用可能な場合は、検出処理より先にこの oam を使用します
OAM_INSTALL_DIR=/diroam 独自のインストール先指定変数です。設定すると、デフォルトのインストール先と PATH より先に <dir>/oam を検索します

どちらの値も、大文字と小文字を区別せず、前後の空白は取り除かれます。ランチャーが認識しない値は、黙って無視されることはありません。デフォルト値(auto、サンドボックスは無効)として扱われ、その値が標準エラー出力に表示されます。そのため、入力ミスによって「サンドボックス必須」が「可能ならサンドボックスを適用」にひそかに変わることはありません。

ツール(18)

IPC とプロセスのアーキテクチャ(5)
  • electron_scaffold_ipc_channel — 完全な IPC の往復処理を生成します。メインプロセスのハンドラー、プリロードブリッジ、contextBridge による公開、TypeScript の型、レンダラーでの使用方法を含みます。
  • electron_generate_preload_bridge — 複数の API メソッドに対応する、contextBridge を使った安全な preload.ts を生成します。
  • electron_audit_ipc_security — プリロード/メイン/レンダラーのコードを解析し、IPC のセキュリティ上の問題(直接的な ipcRenderer の使用、送信元の検証漏れ、チャネルへのインジェクション)を検出します。
  • electron_generate_window_manager — ライフサイクルの追跡やウィンドウ間通信に対応する、マルチウィンドウ管理を生成します。
  • electron_explain_process_model — Electron のマルチプロセスアーキテクチャ(メイン、レンダラー、ユーティリティの違いと、それぞれに配置するもの)をバージョンに応じて解説します。
セキュリティ(4)
  • electron_audit_security — 静的な入力から検出可能な、公式のセキュリティ推奨事項20項目のうち19項目に照らして監査します。対象は BrowserWindow、プリロード、CSP、リモートコンテンツ、サンドボックスです。(20項目目のセッション権限処理には実行時のコンテキストが必要なため、レポートのフッターで指摘されます。)
  • electron_configure_fuses — 本番環境のセキュリティ強化に向けた @electron/fuses の設定を生成します(Cookie 暗号化のフォールバック、Node の CLI フラグ、レガシーな読み込み動作を無効化)。
  • electron_configure_csp — バンドラー(Vite/webpack/Parcel)とフレームワーク(React/Vue/Svelte)を考慮した Content Security Policy を生成します。
  • electron_lint_security — 信頼できない入力を使った shell.openExternal、@electron/remote、enableBlinkFeatures など、危険なパターンを静的解析します。
ビルドと配布(4)
  • electron_diagnose_build_error — electron-builder/forge のエラーを解析し、根本原因(コード署名、ネイティブモジュール、ASAR、エンタイトルメント、パスの引用符)を特定します。
  • electron_configure_auto_update — イベントやプラットフォーム固有の署名上の懸念事項を含む、完全な electron-updater の設定を生成します。
  • electron_configure_deep_linking — Windows/macOS/Linux でのカスタムプロトコル登録を生成します。
  • electron_scaffold_project — 安全でモダンな Electron プロジェクトのひな形を生成します(contextIsolation: true、sandbox: true、プリロード、TypeScript、選択したフレームワーク)。
移行と互換性(2)
  • electron_migrate_version — Electron のバージョン間の移行チェックリストを、破壊的変更、非推奨 API、プラットフォームサポートの変更とともに生成します。
  • electron_check_deprecated_apis — ソースをスキャンし、対象の Electron バージョンで非推奨または削除された API を検出します。
パフォーマンス(1)
  • electron_audit_performance — Electron の公式なパフォーマンス上のアンチパターン7項目(メインプロセスでの同期 I/O、重いモジュールの先行読み込みなど)を検出します。
リファレンス(2)
  • electron_explain_concept — 8つのトピック(プロセスモデル、コンテキスト分離、サンドボックス、IPC、ASAR、fuses、コード署名、ビルドツール)を信頼できる情報に基づいて解説します。
  • electron_knowledge_version — 埋め込みナレッジのメタデータ(最終確認日、確認時点の Electron の安定版、サポート対象バージョンの範囲)を提供します。情報が最新かどうかエージェントが確信できない場合に呼び出してください。

ナレッジの鮮度

埋め込みの Electron ナレッジに依存するツール(破壊的変更、非推奨 API、セキュリティ推奨事項、アンチパターン、概念の解説)は、次のようなフッターを追加します。

_Knowledge last verified 2026-04-13 (Electron v41 stable). For anything newer, check https://releases.electronjs.org._

メタデータを直接取得するには、electron_knowledge_version を呼び出してください。Electron のメジャーバージョンが新たにリリースされた場合の更新手順は、KNOWLEDGE.md に記載されています。

例

ファイル選択ダイアログを安全に追加する
> "Add a file picker that lets the renderer read the selected file's contents"
→ electron_scaffold_ipc_channel({
    direction: "renderer-to-main",
    channel: "open-file",
    returns: "string"
  })
  # Generates: main handler (dialog.showOpenDialog + fs.readFile),
  # preload bridge (contextBridge.exposeInMainWorld),
  # TypeScript types for window.api.openFile,
  # renderer usage example
既存アプリのセキュリティを監査する
> "Check my Electron app for security issues — here's my main.ts and preload.ts"
→ electron_audit_security({ mainCode: "...", preloadCode: "..." })
  # Returns a graded report against 19 of 20 recommendations
  # (session permissions needs runtime context),
  # flagging nodeIntegration, missing contextIsolation,
  # unsandboxed renderers, loose CSP, and more.
失敗する署名処理を診断する
> "electron-builder is exiting with: errSecInternalComponent — help"
→ electron_diagnose_build_error({ output: "..." })
  # Identifies macOS Keychain Access issue with code signing,
  # returns specific `security` CLI fix and CI reconfiguration.
Electron のメジャーバージョン更新を計画する
> "We're on Electron 32. What breaks if we jump to 41?"
→ electron_migrate_version({ from: 32, to: 41, sourceCode: "..." })
  # Returns breaking changes across each major (33, 34, 35, ...),
  # deprecated APIs found in your code,
  # platform support changes,
  # recommended test plan.
実際に使える CSP を生成する
> "Generate a CSP for my Vite + React renderer that actually works"
→ electron_configure_csp({
    bundler: "vite",
    framework: "react",
    allowedOrigins: ["https://api.mycompany.com"]
  })
  # Returns a CSP that accounts for Vite's dev-mode WebSocket,
  # React's inline runtime, and blocks everything else.

トラブルシューティング

「ツールの出力が途中で切れる/長すぎる」

  • 生成コードが10KBを超えるスキャフォルダーがいくつかあります。範囲を絞って再生成するようアシスタントに依頼してください(マルチチャネルブリッジではなく単一チャネルにする、または複数の比較ではなく1つのフレームワークのスキャフォールドにするなど)。

「Electronのバージョンに合わないアドバイスが表示される」

  • electron_knowledge_versionを確認してください。検証日以降にElectronの新しいメジャーバージョンがリリースされている場合は、そこにリンクされている公式の破壊的変更ページで内容を照合してください。
  • 該当するツールとバージョン、期待される結果と実際の結果を記載して、リポジトリにイシューを作成してください。ナレッジの更新はマイナーバージョンでリリースされます。

「Windows:MCP サーバーが起動しない」

  • クイックスタートのセクションにあるcmd /c npx ...のパターンを使用してください。Node 20+では.cmdファイルを直接起動できません。

要件

  • Node.js 20.11+
  • ランタイム依存関係なし

コントリビューション

git clone https://github.com/YawLabs/electron-mcp.git
cd electron-mcp
npm install
npm run lint       # Biome check
npm run lint:fix   # Auto-fix
npm run build      # tsc + esbuild bundle
npm test           # node --test

リリースプロセスを含むワークフロー全体については、CONTRIBUTING.mdを参照してください。

ライセンス

MIT

Xで@YawLabsをフォロー

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。