Electron MCP Server について
Electron MCP Serverは、18個のツールでElectronプロジェクトの開発を支援します。AIアシスタントによる安全なIPCやプロジェクト設定の生成、セキュリティ監査、ビルドエラーの診断、バージョン変更の確認に対応し、コード実行やファイルアクセスは行いません。
主な機能
- 01IPCハンドラーとpreloadブリッジの生成
- 02セキュリティ推奨事項とIPCコードの監査
- 03CSP、fuses、自動更新の設定
- 04ビルドおよび署名エラーの診断
- 05非推奨APIとバージョン移行の確認
- 06知識の更新情報付き読み取り専用ツール
活用シーン
- 01安全なIPCチャネルの構築
- 02BrowserWindowとpreloadのセキュリティ確認
- 03electron-builderやforgeの出力診断
- 04Electronのバージョンアップ計画
MCP 対応
stdioで動作するMCPサーバーとして、18個のElectron開発ツールをMCPクライアントに提供します。ツールは入力引数から結果を生成し、ファイルシステムへのアクセスやコード実行は行いません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
18掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| args | string | いいえ | 引数の TypeScript 型。例:'{ userId: string }' または 'string'。引数がない場合は省略します。 |
| direction | enum | はい | チャネルの通信方向renderer-to-main | main-to-renderer | bidirectional |
| returnType | string | いいえ | 戻り値の TypeScript 型(renderer-to-main のみ)。例:'{ name: string; email: string }'。void の場合は省略します。 |
| channelName | string | はい | IPC チャネル名。例:'get-user-data'、'save-settings'、'open-file-dialog' |
| description | string | はい | この IPC チャネルの機能。例:'Fetches user profile from the database' |
| apiNamespace | string | いいえ | 分類先となる window.electronAPI 上の名前空間。例:'users'、'settings'。デフォルトは 'api' です。 |
詳細
@yawlabs/electron-mcp
ワンクリックでローカルの Yaw MCP 設定に追加でき、すべての Yaw Terminal セッションで利用できるようになります。または、以下の手順で手動インストールしてください。
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=/dir | oam 独自のインストール先指定変数です。設定すると、デフォルトのインストール先と 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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。