※ mcp-browser-useのissue#43としても投稿してあります。
1. 概要
mcp-browser-use で起動されるデフォルトのブラウザを Playwright 標準ダウンロードの Chromium から、Windows 環境に既設の Microsoft Edge (msedge.exe) へ変更する方法です。
また、既存の Edge プロセスとの Singleton 干渉(プロファイル競合・CDP デバッグポート接続エラー)を防止するため、一時プロファイルおよび規定拡張機能オフのパラメータ指定を連携する修正を行いました。
2. 修正対象ファイル一覧
%Cline_MCP_DIR%/src/mcp_server_browser_use/config.py%Cline_MCP_DIR%/src/mcp_server_browser_use/server.py
※%Cline_MCP_DIR%は次の位置です。
set "Cline_MCP_DIR=%USERPROFILE%\Cline\MCP" & if exist "%OneDriveCommercial%\Cline\MCP" set "Cline_MCP_DIR=%OneDriveCommercial%\Cline\MCP"
3. 変更詳細
(1) config.py
BrowserSettings クラスに以下の設定フィールドを追加しました。
-
executable_path: デフォルト値C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe(環境変数MCP_BROWSER_EXECUTABLE_PATHで上書き可能) -
enable_default_extensions: デフォルト値False(起動時の拡張機能自動読み込みによる遅延を防ぐ設定)
Diff (main -> feature)
--- main/config.py
+++ feature/config.py
@@ -194,2 +194,7 @@
user_data_dir: str | None = Field(default=None, description="Path to Chrome user data directory for persistent profile")
chromium_sandbox: bool = Field(default=True)
+ executable_path: str | None = Field(
+ default=r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe",
+ description="Path to browser executable binary",
+ )
+ enable_default_extensions: bool = Field(default=False, description="Enable default extensions (e.g. uBlock Origin)")
(2) server.py
_get_llm_and_profile() 関数内において、BrowserProfile のインスタンス生成時に executable_path および enable_default_extensions を渡すよう修正しました。
Diff (main -> feature)
--- main/server.py
+++ feature/server.py
@@ -101,2 +101,4 @@
profile = BrowserProfile(
headless=settings.browser.headless,
+ enable_default_extensions=settings.browser.enable_default_extensions,
+ executable_path=settings.browser.executable_path,
proxy=proxy,
4. MCP JSON 設定ファイルおよび環境変数による設定上書きについて
本修正により、server.py から BrowserProfile へ設定値(executable_path, enable_default_extensions)が適切に伝播されるようになったため、今後は MCP サーバーの設定ファイル(cline_mcp_settings.json など)や環境変数を介して、ソースコードを変更することなく外部から設定を柔軟に制御・変更可能です。
設定例(cline_mcp_settings.json)
現在の Cline の MCP 設定(github.com/Saik0s/mcp-browser-use 形式、fastmcp run mcp_entrypoint.py --no-banner 呼び出し構造)に合わせた設定例は以下の通りです。
※ API キーなどのサーバー固有・機密情報はマスクしています。
{
"mcpServers": {
"github.com/Saik0s/mcp-browser-use": {
"disabled": false,
"autoApprove": [],
"timeout": 300,
"type": "stdio",
"command": "uv",
"args": [
"run",
"--no-sync",
"--directory",
"%Cline_MCP_DIR%\\mcp-browser-use",
"fastmcp",
"run",
"mcp_entrypoint.py",
"--no-banner"
],
"env": {
"GEMINI_API_KEY": "<MASKED_API_KEY>",
+ "MCP_BROWSER_EXECUTABLE_PATH": "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe",
+ "MCP_BROWSER_HEADLESS": "false",
+ "MCP_BROWSER_ENABLE_DEFAULT_EXTENSIONS": "false"
}
}
}
}
重要ポイント:
cline_mcp_settings.json内github.com/Saik0s/mcp-browser-useのenv項目に次の設定を追記する。
"MCP_BROWSER_EXECUTABLE_PATH": "C:\\Program Files (x86)\\Microsoft\\Edge\\Application\\msedge.exe",
"MCP_BROWSER_HEADLESS": "false",
"MCP_BROWSER_ENABLE_DEFAULT_EXTENSIONS": "false"
補足: トランスポート方式(stdio / HTTP)について
-
現在の起動構成: 現在の Cline 環境では
fastmcp run mcp_entrypoint.py経由で FastMCP の stdio モード(timeout: 300設定付き)で運用されており、長時間のブラウザ操作タスクも安定して実行可能です。そのため、今回の修正においてトランスポート方式を変更する必要はありません。 -
HTTP トランスポートへの移行が必要な場合: Upstream の
mcp-browser-useでは、長時間タスクのタイムアウト回避のためstreamable-httpやsseなどの HTTP トランスポートもサポートされています。将来的に HTTP 接続へ移行する場合は、環境変数MCP_SERVER_TRANSPORT=streamable-http(またはsse) およびMCP_SERVER_PORTを指定することで容易に切り替えが可能です。
5. 動作テスト結果
(1) バックグラウンド表示("MCP_BROWSER_HEADLESS": "true" / デフォルト設定)
- 動作説明: ブラウザの UI ウィンドウを画面上に表示せず、画面裏(バックグラウンド)のプロセスとして既設 Microsoft Edge を起動・自動操作します。
-
テスト内容:
run_browser_agentツール経由でhttps://example.comにアクセスし、ページタイトルを取得。 - 検証結果: 画面描画のオーバーヘッドなくバックグラウンドで高速に動作し、正常にページタイトル「Example Domain」を取得完了しました。
(2) フォアグラウンド表示("MCP_BROWSER_HEADLESS": "false")
- 動作説明: 実際に画面上に Microsoft Edge のブラウザウィンドウが立ち上がり、ページの遷移や自動操作の様子を目視で確認できる状態(画面表示モード)で起動します。
-
テスト内容: 設定変更(
headless=False)の上で Edge セッションを起動し、https://example.comにアクセス。 - 検証結果: Windows 上に既設の Microsoft Edge ウィンドウがフォアグラウンドで正常に表示され、ページへのアクセスおよび操作が期待通り行われることを実機で目視確認しました。
関連
初回インストール方法はこちらにまとめてあります
以上です。