要点
- chrome-devtools のエントリを opencode.json の "mcp" キーの下に置き、"type": "local" を指定して、コマンド全体を 1 つの配列で書きます。ブロックは下にあります。
- OpenCode 1.18.34 は、グローバルファイル、プロジェクトの opencode.json(サブフォルダで起動した場合も)、.opencode/opencode.json、そして 2 つの環境変数のどれからでも読み込みました。
- その後、chrome-devtools_… という名前のブラウザツールを 30 個提供し、44,167 文字のページスナップショット全体を短縮せずにモデルへ渡しました。
- CAPTCHA や 2FA の後は、opencode run --session <session-id> で同じ会話を再開します。ヘッドレスでもすべての実行で成功しました。同じタブ、同じ入力欄、送信は 1 回です。
- OpenCode はデフォルトでほとんどの操作を許可します。ブラウザ操作を自分で承認したい場合は、権限の行を 1 つ追加してください。
LaunchRepo は、ワークスペースのファイルを読み書きでき、ブラウザを操作できるコーディングエージェントであれば動作します。OpenCode はその両方ができます。このページは検証済みのセットアップを記録したもので、認定やパートナーシップではありません。
opencode.json にブラウザを追加する
OpenCode は設定ファイルを置き換えずにマージします。そのため安全に設定できます。キーを 1 つ追加するだけで、既存の設定はすべてそのまま残ります。
- LaunchRepo ワークスペースのルートにある opencode.json を開くか、新しく作成します。すべてのプロジェクトで使う場合は、代わりに ~/.config/opencode/opencode.json を使います。
- 下の "mcp" ブロックを既存のキーの隣に追加します。ファイルにすでに "mcp" キーがある場合は、その中に chrome-devtools のエントリだけを追加します。
- 起動元の Chrome で chrome://inspect/#remote-debugging を開き、リモートデバッグを有効にします(Chrome 144 以降)。--autoConnect はここに接続します。
- opencode mcp list を実行します。正しく設定されていれば下の行が表示されます。続けて OpenCode に https://example.com を開いてページのタイトルを読むよう頼みます。
追加先 opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"chrome-devtools": {
"type": "local",
"command": [
"npx",
"-y",
"chrome-devtools-mcp@1.10.1",
"--autoConnect",
"--no-usage-statistics",
"--no-performance-crux"
]
}
}
}opencode mcp list に表示される行 opencode mcp list
✓ chrome-devtools connected--autoConnect はすでに起動している Chrome を使います。ローンチ専用に別の Chrome を使う場合は、代わりに --browser-url=http://127.0.0.1:9222 を指定します。私たちのテストもこの方法で一時的な Chrome に接続しました。
自分の設定を残す
- 既存のファイル全体にブロックを貼り付けて上書きしないでください。キーを追加するだけです。OpenCode はファイルをマージするので、プロバイダー、モデル、ほかのサーバーはそのまま残ります。
- プロジェクトの opencode.json がグローバルファイルを上書きするのは、そこで設定したキーだけです。テストでは、"mcp" だけを持つプロジェクトファイルでも、グローバルのモデルとプロバイダーが有効なままでした。
- グローバルファイルに触れずに 1 つのプロジェクトだけでブラウザをオフにするには、そのプロジェクトで chrome-devtools に "enabled": false を設定します。すべての実行で機能しました。
OpenCode が読み込む設定ファイル
同じサーバーエントリを、置き場所と書き方を変えて試しました。「読み込み」とは、chrome-devtools_… ツールが OpenCode からモデルへのリクエストに含まれたことを意味します。
| パターン | ファイルまたは変数 | 結果 |
|---|---|---|
| グローバル設定ファイル | ~/.config/opencode/opencode.json | 読み込み済み、ツール 30 個(3/3) |
| コメントと末尾カンマを含むグローバル JSONC ファイル | ~/.config/opencode/opencode.jsonc | 読み込み済み、ツール 30 個(3/3) |
| ワークスペースのルートにあるプロジェクトファイル | opencode.json | 読み込み済み、ツール 30 個(3/3) |
| プロジェクトファイル、OpenCode をサブフォルダで起動 | opencode.json | 読み込み済み、ツール 30 個(3/3) |
| .opencode フォルダ内 | .opencode/opencode.json | 読み込み済み、ツール 30 個(3/3) |
| 環境変数で指定したカスタムファイル | OPENCODE_CONFIG=<file> | 読み込み済み、ツール 30 個(3/3) |
| 環境変数で渡したインライン JSON | OPENCODE_CONFIG_CONTENT | 読み込み済み、ツール 30 個(3/3) |
| Claude Code や Cursor からコピーした "mcpServers" ブロック | opencode.json | 読み込まれず、エラーなし(3/3) |
| "command": "npx" と "args"(ほかの多くのエージェントの書き方) | opencode.json | 設定が拒否され、OpenCode は終了コード 1 で停止(3/3) |
| "enabled": false を指定したエントリ | opencode.json | 読み込まれず、エラーなし(3/3) |
| グローバルのエントリ、プロジェクトファイルは "enabled": false のみ | opencode.json | 読み込まれず、エラーなし(3/3) |
要注意なのは 2 行です。貼り付けた "mcpServers" ブロックは何も言われずに無視され(opencode mcp list には「No MCP servers configured」と表示)、文字列のコマンドは OpenCode を起動前に停止させます(「Expected array, got "npx"」)。どちらも上の配列形式で解決します。
引き継ぎの実行を順に見る
OpenCode 1.18.34、Chrome DevTools MCP 1.10.1、Google Chrome 154.0.8037.92、macOS、Node 22、2026年10月1日に実施。毎回新しいホームディレクトリと新しい Chrome プロファイルを使ったので、個人の設定を読んだり変更したりはしていません。
AI モデルは使っていません。小さなローカルの代役が OpenCode のモデルリクエストに決まったツール呼び出しで応答し、要素 ID は OpenCode が実際に送った内容からだけ読み取りました。これにより実行は毎回同一かつ無料になり、OpenCode が制御する部分、つまり設定、ツール、モデルに見える内容、権限、セッションを検証できます。モデルの計画能力は検証していません。
CAPTCHA ガイドのデモフォームで引き継ぎを実行:5 回。設定パターン:各 3 回。
OpenCode はデモフォームを開いて入力し、代役の確認画面で止まって実行を終了しました。スクリプトが人の役を演じ、同じタブで確認を完了しました。その後、2 回目の opencode run を --session 付きで実行し、同じ会話を続けて完了させました。 エージェント作業中のCAPTCHAと2FA:人へ確実に引き継ぐ方法 →
| 確認項目 | 成功した実行 |
|---|---|
| opencode mcp list でサーバーが接続済みと表示される | 5/5 |
| Chrome DevTools のツールがモデルに提供される | 5/5 |
| デフォルト設定でページスナップショット全体がモデルに届く | 5/5 |
| 接続した Chrome でデモフォームを開く | 5/5 |
| 3 つの欄に入力し、読み返す | 5/5 |
| 確認画面で止まり、ステータスは prepared_needs_human | 5/5 |
| 実行終了後もタブと入力内容が残る | 5/5 |
| opencode session list にセッション ID が表示される | 5/5 |
| 人が同じタブで確認を完了する | 5/5 |
| opencode run --session で同じセッションを続ける | 5/5 |
| 続けたセッションに以前の手順が残っている | 5/5 |
| 続けた実行が同じタブを見つけて選択する | 5/5 |
| 一時停止後も入力欄は変わらない | 5/5 |
| 送信はちょうど 1 回 | 5/5 |
| "ask" でのヘッドレス実行:ブラウザ呼び出しは拒否され、確認は出ない | 5/5 |
| 同じルールに --auto:ブラウザ呼び出しが実行される | 5/5 |
| "deny":ブラウザツールがモデルの一覧から消える | 5/5 |
| ヘッドレス実行:質問ツールはモデルに提供されない | 5/5 |
| stdin を開いたままのヘッドレス実行:20 秒後に停止するまで待ち続ける | 3/3 |

人の作業が終わったら再開する
opencode run は毎回 --format json の出力にセッション ID を表示し、opencode session list --format json でも一覧できます。
同じ ID で続けます。私たちの実行では、続けたセッションに以前の手順がすべて残っており、Chrome DevTools MCP 経由で同じタブを見つけ、入力欄が変わっていないことを確認して 1 回だけ送信しました。
ターミナル UI を使いたい場合は、opencode --session <session-id> で同じ会話をそこで開けます。
- セッションを探す
opencode session list --format json- ヘッドレスで続ける
opencode run --session <session-id> "The check is done. Re-read the form and submit once."- ターミナル UI で続ける
opencode --session <session-id>
承認:ask、allow、deny
権限ブロックがないと、OpenCode はブラウザツールを確認なしで実行します。1 行で変えられます。各ルールを、スクリプトが OpenCode を呼び出すのと同じくヘッドレスで実行しました。
| ルール | ヘッドレスの opencode run では |
|---|---|
"chrome-devtools_*": "ask" | 「The user rejected permission to use this specific tool call.」と表示され、即座に拒否されます。それでも実行は終了コード 0 で終わります。 |
同じルールに --auto | ブラウザ呼び出しが実行されます。ドキュメントによれば、明示的な deny ルールは引き続き適用されます。 |
"chrome-devtools_*": "deny" | ブラウザツールがモデルのツール一覧から消えます。 |
ブラウザ操作をすべて自分で承認する
{
"permission": {
"chrome-devtools_*": "ask"
}
}"ask" はターミナル UI で使います。そこでは OpenCode が「1 回だけ」「常に」「拒否」を尋ねます。ヘッドレス実行では、"ask" がブラウザを止めることを受け入れるか、ローンチ用の Chrome プロファイルで承知のうえ --auto を使ってください。
Claude Code から移行する場合
サーバーは同じでも、設定は違います。エントリが動くかどうかは 4 つの違いで決まります。
| 項目 | OpenCode | Claude Code |
|---|---|---|
| エントリの場所 | opencode.json の "mcp" キー | .mcp.json の "mcpServers" |
| コマンドの書き方 | "command" は 1 つの配列、加えて "type": "local" | "command" の文字列と "args" の配列 |
| ルール内のツール名 | chrome-devtools_take_snapshot | mcp__chrome-devtools__take_snapshot |
| デフォルトの承認 | ほとんどの操作を許可 | 各ツールの初回使用時に確認 |
時間を取られる 3 つの落とし穴
- 貼り付けた "mcpServers" ブロックは無言で無視される
- OpenCode はこのキーを完全に無視します。エラーなし、終了コード 0、ブラウザツールなし。エントリを "mcp" の下に移し、コマンドを 1 つの配列にしてください。
- ヘッドレス実行は開いた stdin を待つ
- スクリプトが stdin をパイプとして開いたまま opencode run を起動すると、OpenCode は来ない入力を待ち続けます。3 回の実行すべてで、こちらが停止させるまで止まったままでした。stdin を /dev/null にすると即座に応答しました。
- スクリプトでは "ask" は「いいえ」
- ヘッドレス実行では答える人がいないため、"ask" はすべて拒否になります。ブラウザに単独で操作させてよいかを実行ごとに決めてください。
| 項目 | 原文 | 私たちの観察 |
|---|---|---|
| OpenCode:ローカルサーバー | Add local MCP servers using type to "local" within the MCP object. | "type": "local" と配列の形式は、すべての実行で読み込まれました。 |
| OpenCode:複数のファイル | Configuration files are merged together, not replaced. | 確認済み:"mcp" だけのプロジェクトファイルでも、グローバルのモデルとプロバイダーが残りました。 |
| OpenCode:どのファイルが優先されるか | Project config has the highest precedence among standard config files - it overrides both global and remote configs. | 確認済み:プロジェクトの "enabled": false でグローバルのエントリがオフになりました。 |
| OpenCode:ツール名 | MCP server tools are registered with server name as prefix | ツールは chrome-devtools_take_snapshot などの名前で届きました。 |
| OpenCode:デフォルトの権限 | If you don’t specify anything, OpenCode starts from permissive defaults: | ルールを追加するまで、ブラウザツールは確認なしで実行されました。 |
| OpenCode:--auto | Explicit "deny" rules are still enforced. | --auto は "ask" と組み合わせて検証しました。"deny" ではツール自体が提供されませんでした。 |
| OpenCode:コンテキストサイズ | MCP servers add to your context, so you want to be careful with which ones you enable. | Chrome DevTools MCP はツールを 30 個追加します。ローンチ中はほかのサーバーをオフにしておきましょう。 |
| OpenCode:--session フラグ | Session ID to continue | ターミナル UI でしか再開できないエージェントと違い、すべての実行でヘッドレスでも機能しました。 |
| Claude Code:プロジェクトファイル | Project-scoped servers enable team collaboration by storing configurations in a .mcp.json file at your project’s root directory. | OpenCode とはファイルもキーも異なり、同じエントリはそのまま移せません。 |
| Claude Code:ルール内のツール名 | mcp__puppeteer__* matches every tool from the puppeteer server | OpenCode では代わりにサーバー名の後にアンダースコアを 1 つ使います。 |
| Claude Code:デフォルトモード | Prompts for permission on first use of each tool. | OpenCode のデフォルトは逆で、ルールを設定しない限り許可です。 |
| Chrome DevTools MCP:OpenCode のセクション | Add the following configuration to your `opencode.json` file. | 私たちのブロックと同じ形です。私たちはバージョンを固定し、--autoConnect を追加しています。 |
OpenCode で LaunchRepo を始める
LaunchRepo のプライベートワークスペースで OpenCode を開き、スタートプロンプトを貼り付けます。あとはキットがオンボーディングを進め、Example Domain で Chrome の接続をテストし、実行を組み立てます。
- スタートプロンプトは、最良の結果のために Claude Code または Codex CLI を推奨しています。OpenCode も同じキットで動作します。キットに必要な 2 つ、つまりワークスペースのファイルアクセスと MCP 経由のブラウザを備えているからです。
- OpenCode はワークスペースの AGENTS.md を読むので、キットのルールを自動で取り込みます。
- CAPTCHA と 2FA の手順は引き継ぎとしてあなたに戻ってきます。上で示したとおり --session でセッションを再開します。
LaunchRepo スタートプロンプト
Recommend Claude Code CLI or Codex CLI in a terminal instead of the desktop apps for best results. If session metadata confirms desktop hosting, explicitly advise me to switch to the CLI and resume this same private workspace. Do not infer the host from a CLI engine version alone.
Read AGENTS.md, then follow "Start the dashboard for the owner". Create my private
workspace if I do not have one yet, start the dashboard, and give me the link.
Then lead ONBOARDING.md one phase at a time. Reuse recorded permissions instead of
asking again unless their scope is missing or conflicting. Actually test my visible
existing Chrome profile and intended identity as BROWSER-SETUP.md requires; use the
OS fallback if needed. Use one platform/browser worker by default. Build the normal
run only from suitable free-ready routes, keep research separate, and preserve any
draft that needs one exact human CAPTCHA/2FA action. Never claim browser control
bypasses or reduces those challenges.このテストの対象外
- ターミナル UI の承認プロンプトと質問ツール。上記のヘッドレス動作は実測で、UI での動作はドキュメントに基づいています。
- 実際の AI モデル。代役によってモデルの品質は結果から除かれています。モデルが誤った要素を選ぶ可能性は残ります。
- 普段使いの Chrome プロファイルへの --autoConnect。私たちは --browser-url 経由で一時的な Chrome を使いました。
- Windows と Linux、リモート MCP サーバー、OpenCode のアカウントと有料のモデルプラン。
出典
上記の引用はすべて、2026年10月1日に閲覧した以下のページから一字一句そのまま写したものです。動作の検証結果は、このページで説明している私たち自身の実行によるものです。
よくある質問
- OpenCode では MCP サーバーをどこに設定しますか?
- opencode.json の "mcp" キーの下です。プロジェクトのルートか ~/.config/opencode/opencode.json に置きます。私たちのテストでは、OpenCode 1.18.34 は .opencode/opencode.json、OPENCODE_CONFIG、OPENCODE_CONFIG_CONTENT からも読み込みました。
- Chrome DevTools MCP 用の OpenCode の設定はどう書きますか?
- chrome-devtools という名前のエントリに "type": "local" と "command": ["npx", "-y", "chrome-devtools-mcp@1.10.1", "--autoConnect", "--no-usage-statistics", "--no-performance-crux"] を指定します。opencode mcp list を実行すると接続済みと表示されます。
- OpenCode に MCP サーバーが表示されないのはなぜですか?
- 多くの場合、エントリがほかのエージェントからコピーされています。"mcpServers" ブロックはエラーなしで無視され、"command": "npx" と別の "args" の組み合わせでは OpenCode が設定全体を拒否します。"mcp" と 1 つのコマンド配列を使ってください。
- 代わりに Playwright MCP を使えますか?
- はい。同じ "mcp" エントリの形式は、どのローカル MCP サーバーにも使えます。このページで Chrome DevTools MCP を検証しているのは、普段使っている Chrome に接続できるからです。Playwright MCP が適している場面は比較ページで説明しています。
- CAPTCHA の後、OpenCode のセッションを再開するには?
- 同じ Chrome タブで確認を完了し、短い指示を添えて opencode run --session <session-id> を実行するか、opencode --session <session-id> でターミナル UI に開きます。私たちの実行では、セッション、タブ、入力欄がすべて残っていました。
- OpenCode は LaunchRepo の公式サポート対象ですか?
- LaunchRepo は、ファイルとブラウザにアクセスできるコーディングエージェントに対応しています。OpenCode は両方を備えており、このページは検証済みのセットアップを記録したものです。認定やパートナーシップではなく、スタートプロンプトは引き続き最良の結果のために Claude Code または Codex CLI を推奨しています。
OpenCode にローンチ計画を渡す
LaunchRepo は、プラットフォームの一覧、ランブック、常に最新に保たれるトラッカーをエージェントに渡します。OpenCode があなたのブラウザで作業し、最終判断はあなたが下します。
料金を見る