Kort antwoord
- Zet de chrome-devtools-entry onder de sleutel "mcp" van opencode.json, met "type": "local" en het hele commando als één array. Het blok staat hieronder.
- OpenCode 1.18.34 laadde hem uit het globale bestand, uit een project-opencode.json (ook als je in een submap start), uit .opencode/opencode.json en uit beide omgevingsvariabelen.
- Daarna bood het 30 browsertools aan met namen als chrome-devtools_… en gaf het de volledige paginasnapshot van 44.167 tekens ongekort door aan het model.
- Hervat na een CAPTCHA- of 2FA-stap hetzelfde gesprek met opencode run --session <session-id>. Dat werkte headless in elke run: hetzelfde tabblad, dezelfde velden, één verzending.
- OpenCode staat standaard de meeste acties toe, dus voeg één permissieregel toe als je browseracties zelf wilt goedkeuren.
LaunchRepo werkt met elke coding agent die bestanden in je workspace kan lezen en schrijven en een browser kan bedienen. OpenCode kan allebei. Deze pagina documenteert een geteste setup; het is geen certificering of partnerschap.
De browser toevoegen aan opencode.json
OpenCode voegt zijn configbestanden samen in plaats van ze te vervangen. Dat maakt de setup veilig: je voegt één sleutel toe en al je bestaande instellingen blijven zoals ze zijn.
- Open opencode.json in de root van je LaunchRepo-workspace, of maak het aan. Voor al je projecten tegelijk gebruik je in plaats daarvan ~/.config/opencode/opencode.json.
- Voeg het "mcp"-blok hieronder toe naast je bestaande sleutels. Heeft het bestand al een "mcp"-sleutel, voeg dan alleen de chrome-devtools-entry daarbinnen toe.
- Open in de Chrome die je zelf start chrome://inspect/#remote-debugging en zet remote debugging aan (Chrome 144+). Daarmee verbindt --autoConnect.
- Voer opencode mcp list uit. Een werkende entry toont de regel hieronder; vraag OpenCode daarna om https://example.com te openen en de paginatitel te lezen.
Toevoegen aan 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"
]
}
}
}Verwachte regel in opencode mcp list opencode mcp list
✓ chrome-devtools connected--autoConnect gebruikt de Chrome die je al draait. Wil je een aparte Chrome alleen voor launches, gebruik dan --browser-url=http://127.0.0.1:9222; zo verbond onze test met zijn tijdelijke Chrome.
Houd je eigen instellingen
- Plak het blok nooit over een heel bestaand bestand. Voeg de sleutel toe; OpenCode voegt bestanden samen, dus je provider, model en andere servers blijven staan.
- Een project-opencode.json overschrijft het globale bestand alleen voor de sleutels die het zelf instelt. In onze test hield een projectbestand met alleen "mcp" het globale model en de globale provider actief.
- Wil je de browser voor één project uitzetten zonder het globale bestand aan te raken, zet dan in dat project "enabled": false voor chrome-devtools. Dat werkte in alle runs.
Welke configbestanden OpenCode laadt
Dezelfde serverentry, andere plekken en vormen. “Geladen” betekent dat de chrome-devtools_…-tools in het verzoek van OpenCode aan het model terechtkwamen.
| Variant | Bestand of variabele | Resultaat |
|---|---|---|
| Globaal configbestand | ~/.config/opencode/opencode.json | Geladen, 30 tools (3/3) |
| Globaal JSONC-bestand met commentaar en een afsluitende komma | ~/.config/opencode/opencode.jsonc | Geladen, 30 tools (3/3) |
| Projectbestand in de root van de workspace | opencode.json | Geladen, 30 tools (3/3) |
| Projectbestand, OpenCode gestart in een submap | opencode.json | Geladen, 30 tools (3/3) |
| In de map .opencode | .opencode/opencode.json | Geladen, 30 tools (3/3) |
| Eigen bestand via een omgevingsvariabele | OPENCODE_CONFIG=<file> | Geladen, 30 tools (3/3) |
| Inline JSON via een omgevingsvariabele | OPENCODE_CONFIG_CONTENT | Geladen, 30 tools (3/3) |
| "mcpServers"-blok gekopieerd uit Claude Code of Cursor | opencode.json | Niet geladen, geen foutmelding (3/3) |
| "command": "npx" plus "args" (de vorm die de meeste andere agents gebruiken) | opencode.json | Config geweigerd, OpenCode stopt met exitcode 1 (3/3) |
| Entry met "enabled": false | opencode.json | Niet geladen, geen foutmelding (3/3) |
| Globale entry, projectbestand zet alleen "enabled": false | opencode.json | Niet geladen, geen foutmelding (3/3) |
De twee rijen waar je over struikelt: een geplakt "mcpServers"-blok wordt zonder melding genegeerd (opencode mcp list zegt “No MCP servers configured”), en een commando als string stopt OpenCode nog voor het start (“Expected array, got "npx"”). De array-vorm hierboven lost beide op.
De overdracht, stap voor stap
OpenCode 1.18.34 met Chrome DevTools MCP 1.10.1, Google Chrome 154.0.8037.92, macOS, Node 22, op 1 oktober 2026. Elke run gebruikte een nieuwe thuismap en een nieuw Chrome-profiel, dus er werden geen persoonlijke instellingen gelezen of gewijzigd.
Er was geen AI-model bij betrokken. Een kleine lokale vervanger beantwoordde de modelverzoeken van OpenCode met vaste toolaanroepen en las element-ID’s alleen uit wat OpenCode echt meestuurde. Zo is elke run identiek en gratis, en test hij wat OpenCode in de hand heeft: config, tools, wat het model ziet, permissies en sessies. Hij test niet hoe goed een model plant.
Overdracht op het demoformulier uit onze CAPTCHA-gids: 5 runs. Configvarianten: elk 3 runs.
OpenCode opende het demoformulier, vulde het in, stopte bij de nagebootste controle en beëindigde de run. Een script speelde de mens en rondde de controle af in hetzelfde tabblad. Daarna zette een tweede opencode run met --session hetzelfde gesprek voort en maakte het af. CAPTCHA en 2FA in agentworkflows: de gecontroleerde overdracht →
| Controle | Geslaagde runs |
|---|---|
| opencode mcp list toont de server als verbonden | 5/5 |
| Chrome DevTools-tools aangeboden aan het model | 5/5 |
| Volledige paginasnapshot bereikt het model met standaardinstellingen | 5/5 |
| Opent het demoformulier in de verbonden Chrome | 5/5 |
| Vult drie velden in en leest ze terug | 5/5 |
| Stopt bij de controle, status prepared_needs_human | 5/5 |
| Tabblad en ingevulde velden overleven het einde van de run | 5/5 |
| Sessie-ID verschijnt in opencode session list | 5/5 |
| Mens rondt de controle af in hetzelfde tabblad | 5/5 |
| opencode run --session zet dezelfde sessie voort | 5/5 |
| Voortgezette sessie bevat nog de eerdere stappen | 5/5 |
| Voortgezette run vindt en selecteert hetzelfde tabblad | 5/5 |
| Velden ongewijzigd na de pauze | 5/5 |
| Verzendt precies één keer | 5/5 |
| Headless run met "ask": browseraanroep geweigerd, geen prompt | 5/5 |
| Zelfde regel met --auto: browseraanroep wordt uitgevoerd | 5/5 |
| "deny": browsertools verdwijnen uit de lijst van het model | 5/5 |
| Headless run: geen vraagtool aangeboden aan het model | 5/5 |
| Headless run met stdin opengelaten: wacht tot hij na 20 s wordt gestopt | 3/3 |

Hervatten nadat de mens klaar is
Elke opencode run toont zijn sessie-ID in de uitvoer van --format json, en opencode session list --format json somt hem ook op.
Ga verder met dezelfde ID. In onze runs had de voortgezette sessie alle eerdere stappen, vond hij hetzelfde tabblad via Chrome DevTools MCP, zag hij de velden ongewijzigd en verzond hij één keer.
Liever de terminal-UI? opencode --session <session-id> opent daar hetzelfde gesprek.
- De sessie vinden
opencode session list --format json- Headless verdergaan
opencode run --session <session-id> "The check is done. Re-read the form and submit once."- Verdergaan in de terminal-UI
opencode --session <session-id>
Goedkeuringen: ask, allow, deny
Zonder permissieblok voert OpenCode browsertools uit zonder te vragen. Eén regel verandert dat. We draaiden elke regel headless, zoals scripts OpenCode aanroepen:
| Regel | In een headless opencode run |
|---|---|
"chrome-devtools_*": "ask" | Direct geweigerd met “The user rejected permission to use this specific tool call.” De run eindigt toch met exitcode 0. |
Zelfde regel plus --auto | De browseraanroep wordt uitgevoerd. Expliciete deny-regels gelden volgens de documentatie nog steeds. |
"chrome-devtools_*": "deny" | De browsertools verdwijnen uit de toollijst van het model. |
Keur elke browseractie zelf goed
{
"permission": {
"chrome-devtools_*": "ask"
}
}Gebruik "ask" in de terminal-UI, waar OpenCode vraagt: eenmalig, altijd of weigeren. Accepteer bij headless runs dat "ask" de browser blokkeert, of gebruik --auto bewust, op een Chrome-profiel dat voor launches bedoeld is.
Overstappen vanaf Claude Code
De server is hetzelfde, de config niet. Vier verschillen bepalen of je entry werkt:
| Onderwerp | OpenCode | Claude Code |
|---|---|---|
| Waar de entry staat | Sleutel "mcp" in opencode.json | "mcpServers" in .mcp.json |
| Vorm van het commando | "command" is één array, plus "type": "local" | "command"-string plus "args"-array |
| Toolnamen in regels | chrome-devtools_take_snapshot | mcp__chrome-devtools__take_snapshot |
| Standaard goedkeuringen | De meeste acties toegestaan | Vraagt bij het eerste gebruik van elke tool |
Drie dingen die tijd kosten
- Een geplakt "mcpServers"-blok blijft stil
- OpenCode negeert de sleutel volledig: geen foutmelding, exitcode 0, geen browsertools. Verplaats de entry naar "mcp" en maak van het commando één array.
- Headless runs wachten op open stdin
- Als een script opencode run start met stdin open als pipe, wacht OpenCode op invoer die nooit komt. In alle 3 runs bleef het hangen tot het werd gestopt; met stdin uit /dev/null antwoordde het meteen.
- "ask" betekent nee in scripts
- In een headless run is er niemand om te antwoorden, dus elke "ask" wordt een weigering. Beslis per run of de browser zelfstandig mag handelen.
| Onderwerp | Formulering | Wat we zagen |
|---|---|---|
| OpenCode: lokale servers | Add local MCP servers using type to "local" within the MCP object. | De vorm met "type": "local" plus array laadde in elke run. |
| OpenCode: meerdere bestanden | Configuration files are merged together, not replaced. | Bevestigd: een projectbestand met alleen "mcp" behield het globale model en de globale provider. |
| OpenCode: welk bestand wint | Project config has the highest precedence among standard config files - it overrides both global and remote configs. | Bevestigd: een "enabled": false in het project zette de globale entry uit. |
| OpenCode: toolnamen | MCP server tools are registered with server name as prefix | De tools kwamen binnen als chrome-devtools_take_snapshot enzovoort. |
| OpenCode: standaardpermissies | If you don’t specify anything, OpenCode starts from permissive defaults: | Browsertools draaiden zonder prompt tot we een regel toevoegden. |
| OpenCode: --auto | Explicit "deny" rules are still enforced. | We testten --auto met "ask"; met "deny" werden de tools helemaal niet aangeboden. |
| OpenCode: contextgrootte | MCP servers add to your context, so you want to be careful with which ones you enable. | Chrome DevTools MCP voegt 30 tools toe. Houd andere servers uit terwijl je launcht. |
| OpenCode: vlag --session | Session ID to continue | Werkte headless in elke run, anders dan agents die alleen in hun terminal-UI hervatten. |
| Claude Code: projectbestand | Project-scoped servers enable team collaboration by storing configurations in a .mcp.json file at your project’s root directory. | Ander bestand en andere sleutel dan bij OpenCode; dezelfde entry is niet overdraagbaar. |
| Claude Code: toolnamen in regels | mcp__puppeteer__* matches every tool from the puppeteer server | OpenCode gebruikt in plaats daarvan één underscore na de servernaam. |
| Claude Code: standaardmodus | Prompts for permission on first use of each tool. | De standaard van OpenCode is het omgekeerde: toestaan, tenzij je een regel instelt. |
| Chrome DevTools MCP: sectie OpenCode | Add the following configuration to your `opencode.json` file. | Dezelfde vorm als ons blok; wij zetten de versie vast en voegen --autoConnect toe. |
LaunchRepo starten in OpenCode
Open OpenCode in je privéworkspace van LaunchRepo en plak de startprompt. De kit leidt daarna de onboarding, test je Chrome-verbinding op Example Domain en bouwt de run op.
- De startprompt raadt Claude Code of Codex CLI aan voor de beste resultaten. OpenCode werkt met dezelfde kit, omdat het de twee dingen heeft die de kit nodig heeft: bestandstoegang in de workspace en een browser via MCP.
- OpenCode leest AGENTS.md uit de workspace en pikt de regels van de kit dus zelf op.
- CAPTCHA- en 2FA-stappen komen als overdracht bij jou terug; je hervat de sessie met --session zoals hierboven.
Startprompt van 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.Niet gedekt door deze test
- De goedkeuringsprompts en de vraagtool van de terminal-UI. Het headless gedrag hierboven is gemeten; het UI-gedrag volgt de documentatie.
- Een echt AI-model. De vervanger haalt modelkwaliteit uit het resultaat; een model kan nog steeds een verkeerd element kiezen.
- --autoConnect naar een Chrome-profiel dat je dagelijks gebruikt. Wij gebruikten een tijdelijke Chrome via --browser-url.
- Windows en Linux, externe MCP-servers, OpenCode-accounts en betaalde modelabonnementen.
Bronnen
Elk citaat hierboven is woord voor woord overgenomen van deze pagina’s, gelezen op 1 oktober 2026. Getest gedrag komt uit onze eigen runs die op deze pagina staan beschreven.
| Bron | Paginadatum | Gecontroleerd |
|---|---|---|
| OpenCode Docs: MCP servers | ||
| OpenCode Docs: Config | ||
| OpenCode Docs: Permissions | ||
| OpenCode Docs: CLI | ||
| OpenCode Docs: Providers | ||
| Claude Code Docs: Connect Claude Code to tools via MCP | geen datum vermeld | |
| Claude Code Docs: Configure permissions | geen datum vermeld | |
| Chrome DevTools MCP: MCP client configuration | geen datum vermeld |
FAQ
- Waar zet ik MCP-servers in OpenCode?
- Onder de sleutel "mcp" van opencode.json, in de root van je project of in ~/.config/opencode/opencode.json. In onze test laadde OpenCode 1.18.34 ook .opencode/opencode.json, OPENCODE_CONFIG en OPENCODE_CONFIG_CONTENT.
- Wat is de OpenCode-config voor Chrome DevTools MCP?
- Een entry met de naam chrome-devtools met "type": "local" en "command": ["npx", "-y", "chrome-devtools-mcp@1.10.1", "--autoConnect", "--no-usage-statistics", "--no-performance-crux"]. Voer opencode mcp list uit om hem verbonden te zien.
- Waarom toont OpenCode mijn MCP-server niet?
- Meestal is de entry uit een andere agent gekopieerd: een "mcpServers"-blok wordt zonder foutmelding genegeerd, en "command": "npx" met losse "args" laat OpenCode de hele config weigeren. Gebruik "mcp" en één commando-array.
- Kan ik in plaats daarvan Playwright MCP gebruiken?
- Ja, dezelfde vorm van de "mcp"-entry werkt voor elke lokale MCP-server. Deze pagina test Chrome DevTools MCP omdat die koppelt aan de Chrome die je al gebruikt; onze vergelijkingspagina legt uit wanneer Playwright MCP beter past.
- Hoe hervat ik een OpenCode-sessie na een CAPTCHA?
- Rond de controle af in hetzelfde Chrome-tabblad en voer dan opencode run --session <session-id> uit met een korte instructie, of open de sessie in de terminal-UI met opencode --session <session-id>. In onze runs waren sessie, tabblad en velden er allemaal nog.
- Wordt OpenCode officieel ondersteund door LaunchRepo?
- LaunchRepo ondersteunt coding agents met bestands- en browsertoegang; OpenCode heeft beide, en deze pagina documenteert een geteste setup. Het is geen certificering of partnerschap, en de startprompt raadt nog steeds Claude Code of Codex CLI aan voor de beste resultaten.
Geef OpenCode een launchplan
LaunchRepo geeft je agent de platformlijst, het runbook en een tracker die hij bijwerkt. OpenCode doet het werk in je browser; jij houdt het laatste woord.
Bekijk de prijzen