Agent-setup · OpenCode

LaunchRepo met OpenCode: browser-MCP instellen, getest

Eén blok in opencode.json geeft OpenCode een echte Chrome. We hebben de hele launch-overdracht erdoor gehaald: een formulier invullen, stoppen bij de controle, die door een mens laten afronden, dezelfde sessie hervatten en één keer verzenden.

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.

  1. 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.
  2. 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.
  3. Open in de Chrome die je zelf start chrome://inspect/#remote-debugging en zet remote debugging aan (Chrome 144+). Daarmee verbindt --autoConnect.
  4. 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.

VariantBestand of variabeleResultaat
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 workspaceopencode.json Geladen, 30 tools (3/3)
Projectbestand, OpenCode gestart in een submapopencode.json Geladen, 30 tools (3/3)
In de map .opencode.opencode/opencode.json Geladen, 30 tools (3/3)
Eigen bestand via een omgevingsvariabeleOPENCODE_CONFIG=<file> Geladen, 30 tools (3/3)
Inline JSON via een omgevingsvariabeleOPENCODE_CONFIG_CONTENT Geladen, 30 tools (3/3)
"mcpServers"-blok gekopieerd uit Claude Code of Cursoropencode.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": falseopencode.json Niet geladen, geen foutmelding (3/3)
Globale entry, projectbestand zet alleen "enabled": falseopencode.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 →

ControleGeslaagde 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
Screenshot die OpenCode tijdens de pauze via Chrome DevTools MCP maakte: velden ingevuld, status wacht op de mens.
Screenshot die OpenCode tijdens de pauze via Chrome DevTools MCP maakte: velden ingevuld, status wacht op de mens.

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:

RegelIn 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 --autoDe 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:

OnderwerpOpenCodeClaude Code
Waar de entry staatSleutel "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 regelschrome-devtools_take_snapshotmcp__chrome-devtools__take_snapshot
Standaard goedkeuringenDe meeste acties toegestaanVraagt 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.
OnderwerpFormuleringWat we zagen
OpenCode: lokale serversAdd local MCP servers using type to "local" within the MCP object.De vorm met "type": "local" plus array laadde in elke run.
OpenCode: meerdere bestandenConfiguration files are merged together, not replaced.Bevestigd: een projectbestand met alleen "mcp" behield het globale model en de globale provider.
OpenCode: welk bestand wintProject 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: toolnamenMCP server tools are registered with server name as prefixDe tools kwamen binnen als chrome-devtools_take_snapshot enzovoort.
OpenCode: standaardpermissiesIf you don’t specify anything, OpenCode starts from permissive defaults:Browsertools draaiden zonder prompt tot we een regel toevoegden.
OpenCode: --autoExplicit "deny" rules are still enforced.We testten --auto met "ask"; met "deny" werden de tools helemaal niet aangeboden.
OpenCode: contextgrootteMCP 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 --sessionSession ID to continueWerkte headless in elke run, anders dan agents die alleen in hun terminal-UI hervatten.
Claude Code: projectbestandProject-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 regelsmcp__puppeteer__* matches every tool from the puppeteer serverOpenCode gebruikt in plaats daarvan één underscore na de servernaam.
Claude Code: standaardmodusPrompts 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 OpenCodeAdd 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.

BronPaginadatumGecontroleerd
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 MCPgeen datum vermeld
Claude Code Docs: Configure permissionsgeen datum vermeld
Chrome DevTools MCP: MCP client configurationgeen 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