Agent-Setup · OpenCode

LaunchRepo mit OpenCode: Browser-MCP einrichten, getestet

Ein Block in opencode.json gibt OpenCode ein echtes Chrome. Wir haben die komplette Launch-Übergabe damit durchgespielt: Formular ausfüllen, an der Prüfung anhalten, einen Menschen sie erledigen lassen, dieselbe Session fortsetzen und genau einmal absenden.

Kurze Antwort

  • Trag den Eintrag chrome-devtools unter dem Schlüssel "mcp" in opencode.json ein, mit "type": "local" und dem ganzen Befehl als ein Array. Der Block steht unten.
  • OpenCode 1.18.34 hat ihn aus der globalen Datei geladen, aus einer opencode.json im Projekt (auch beim Start in einem Unterordner), aus .opencode/opencode.json und über beide Umgebungsvariablen.
  • Danach bot es dem Modell 30 Browser-Tools mit Namen chrome-devtools_… an und gab den vollständigen Seiten-Snapshot mit 44.167 Zeichen ungekürzt an das Modell weiter.
  • Nach einem CAPTCHA- oder 2FA-Schritt setzt du dieselbe Unterhaltung mit opencode run --session <session-id> fort. Das hat headless in jedem Lauf funktioniert: derselbe Tab, dieselben Felder, eine Einreichung.
  • OpenCode erlaubt standardmäßig die meisten Aktionen. Füg also eine Rechte-Zeile hinzu, wenn du Browser-Aktionen selbst freigeben willst.

LaunchRepo funktioniert mit jedem Coding-Agenten, der Dateien in deinem Workspace lesen und schreiben und einen Browser steuern kann. OpenCode kann beides. Diese Seite dokumentiert ein getestetes Setup; sie ist keine Zertifizierung und keine Partnerschaft.

Browser in opencode.json eintragen

OpenCode führt seine Config-Dateien zusammen, statt sie zu ersetzen. Das macht das Setup sicher: Du fügst einen Schlüssel hinzu, und alle Einstellungen, die du schon hast, bleiben, wie sie sind.

  1. Öffne opencode.json im Stammordner deines LaunchRepo-Workspaces oder leg die Datei an. Für alle Projekte auf einmal nimmst du stattdessen ~/.config/opencode/opencode.json.
  2. Füg den "mcp"-Block unten neben deinen bestehenden Schlüsseln ein. Hat die Datei schon einen "mcp"-Schlüssel, ergänzt du darin nur den Eintrag chrome-devtools.
  3. Öffne in dem Chrome, das du verbinden willst, chrome://inspect/#remote-debugging und schalte Remote-Debugging ein (Chrome 144+). Damit verbindet sich --autoConnect.
  4. Führ opencode mcp list aus. Ein funktionierender Eintrag zeigt die Zeile unten; dann bitte OpenCode, https://example.com zu öffnen und den Seitentitel zu lesen.

Ergänzen in 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"
      ]
    }
  }
}

Erwartete Zeile in opencode mcp list opencode mcp list

✓ chrome-devtools connected

--autoConnect nutzt das Chrome, das ohnehin läuft. Für ein separates Chrome nur für Launches nimmst du stattdessen --browser-url=http://127.0.0.1:9222; so hat sich unser Test mit seinem temporären Chrome verbunden.

Deine eigenen Einstellungen behalten

  • Kopier den Block nie über eine ganze bestehende Datei. Ergänze den Schlüssel; OpenCode führt Dateien zusammen, also bleiben dein Anbieter, dein Modell und deine anderen Server erhalten.
  • Eine opencode.json im Projekt überschreibt die globale Datei nur für die Schlüssel, die sie selbst setzt. In unserem Test blieben bei einer Projektdatei, die nur "mcp" enthielt, das globale Modell und der globale Anbieter aktiv.
  • Um den Browser für ein Projekt abzuschalten, ohne die globale Datei anzufassen, setzt du in diesem Projekt "enabled": false für chrome-devtools. Das hat in allen Läufen funktioniert.

Welche Config-Dateien OpenCode lädt

Derselbe Server-Eintrag, verschiedene Orte und Formen. „Geladen“ heißt: Die Tools chrome-devtools_… kamen in der Anfrage von OpenCode an das Modell an.

VarianteDatei oder VariableErgebnis
Globale Config-Datei~/.config/opencode/opencode.json Geladen, 30 Tools (3/3)
Globale JSONC-Datei mit Kommentaren und Komma am Ende~/.config/opencode/opencode.jsonc Geladen, 30 Tools (3/3)
Projektdatei im Stammordner des Workspacesopencode.json Geladen, 30 Tools (3/3)
Projektdatei, OpenCode in einem Unterordner gestartetopencode.json Geladen, 30 Tools (3/3)
Im Ordner .opencode.opencode/opencode.json Geladen, 30 Tools (3/3)
Eigene Datei über eine UmgebungsvariableOPENCODE_CONFIG=<file> Geladen, 30 Tools (3/3)
Inline-JSON über eine UmgebungsvariableOPENCODE_CONFIG_CONTENT Geladen, 30 Tools (3/3)
"mcpServers"-Block aus Claude Code oder Cursor kopiertopencode.json Nicht geladen, kein Fehler (3/3)
"command": "npx" plus "args" (die Form der meisten anderen Agenten)opencode.json Config abgelehnt, OpenCode bricht mit Exit-Code 1 ab (3/3)
Eintrag mit "enabled": falseopencode.json Nicht geladen, kein Fehler (3/3)
Globaler Eintrag, Projektdatei setzt nur "enabled": falseopencode.json Nicht geladen, kein Fehler (3/3)

Die zwei Zeilen, die wehtun: Ein eingefügter "mcpServers"-Block wird kommentarlos ignoriert (opencode mcp list meldet „No MCP servers configured“), und ein Befehl als String stoppt OpenCode, bevor es startet („Expected array, got "npx"“). Beides behebt die Array-Form oben.

Der Übergabe-Lauf Schritt für Schritt

OpenCode 1.18.34 mit Chrome DevTools MCP 1.10.1, Google Chrome 154.0.8037.92, macOS, Node 22, am 1. Oktober 2026. Jeder Lauf nutzte ein frisches Home-Verzeichnis und ein frisches Chrome-Profil, es wurden also keine persönlichen Einstellungen gelesen oder geändert.

Es war kein KI-Modell beteiligt. Ein kleiner lokaler Stellvertreter beantwortete die Modell-Anfragen von OpenCode mit festen Tool-Aufrufen und las Element-IDs nur aus dem, was OpenCode ihm tatsächlich schickte. Dadurch ist jeder Lauf identisch und kostenlos, und getestet wird, was OpenCode steuert: Config, Tools, was das Modell sieht, Rechte und Sessions. Wie gut ein Modell plant, wird damit nicht getestet.

Übergabe-Lauf auf dem Demo-Formular unseres CAPTCHA-Guides: 5 Läufe. Config-Varianten: je 3 Läufe.

OpenCode öffnete das Demo-Formular, füllte es aus, hielt an der Platzhalter-Prüfung an und beendete den Lauf. Ein Skript spielte den Menschen und erledigte die Prüfung im selben Tab. Danach setzte ein zweites opencode run mit --session dieselbe Unterhaltung fort und brachte sie zu Ende. CAPTCHA und 2FA in Agenten-Workflows: die kontrollierte Übergabe →

PrüfpunktBestandene Läufe
opencode mcp list zeigt den Server als verbunden 5/5
Chrome DevTools Tools werden dem Modell angeboten 5/5
Vollständiger Seiten-Snapshot erreicht das Modell mit Standardeinstellungen 5/5
Öffnet das Demo-Formular im verbundenen Chrome 5/5
Füllt drei Felder aus und liest sie gegen 5/5
Hält an der Prüfung an, Status prepared_needs_human 5/5
Tab und ausgefüllte Felder überstehen das Ende des Laufs 5/5
Session-ID erscheint in opencode session list 5/5
Mensch erledigt die Prüfung im selben Tab 5/5
opencode run --session setzt dieselbe Session fort 5/5
Fortgesetzte Session kennt die früheren Schritte noch 5/5
Fortgesetzter Lauf findet und wählt denselben Tab 5/5
Felder nach der Pause unverändert 5/5
Sendet genau einmal ab 5/5
Headless-Lauf mit "ask": Browser-Aufruf abgelehnt, keine Rückfrage 5/5
Gleiche Regel mit --auto: Browser-Aufruf läuft 5/5
"deny": Browser-Tools aus der Tool-Liste des Modells entfernt 5/5
Headless-Lauf: dem Modell wird kein Frage-Tool angeboten 5/5
Headless-Lauf mit offenem stdin: wartet, bis er nach 20 s gestoppt wird 3/3
Screenshot, den OpenCode während der Pause über Chrome DevTools MCP aufgenommen hat: Felder ausgefüllt, Status wartet auf den Menschen.
Screenshot, den OpenCode während der Pause über Chrome DevTools MCP aufgenommen hat: Felder ausgefüllt, Status wartet auf den Menschen.

Fortsetzen, nachdem der Mensch fertig ist

Jedes opencode run gibt seine Session-ID in der Ausgabe von --format json aus, und opencode session list --format json listet sie ebenfalls.

Mach mit derselben ID weiter. In unseren Läufen hatte die fortgesetzte Session alle früheren Schritte, fand über Chrome DevTools MCP denselben Tab, sah die Felder unverändert und sendete genau einmal ab.

Lieber in der Terminal-Oberfläche? opencode --session <session-id> öffnet dieselbe Unterhaltung dort.

Session finden
opencode session list --format json
Headless fortsetzen
opencode run --session <session-id> "The check is done. Re-read the form and submit once."
In der Terminal-Oberfläche fortsetzen
opencode --session <session-id>

Freigaben: ask, allow, deny

Ohne Rechte-Block führt OpenCode Browser-Tools aus, ohne zu fragen. Eine Zeile ändert das. Wir haben jede Regel headless ausprobiert, so wie Skripte OpenCode aufrufen:

RegelIn einem headless opencode run
"chrome-devtools_*": "ask"Sofort abgelehnt mit „The user rejected permission to use this specific tool call.“ Der Lauf endet trotzdem mit Exit-Code 0.
Gleiche Regel plus --autoDer Browser-Aufruf läuft. Explizite Deny-Regeln gelten laut Dokumentation weiterhin.
"chrome-devtools_*": "deny"Die Browser-Tools verschwinden aus der Tool-Liste des Modells.

Jede Browser-Aktion selbst freigeben

{
  "permission": {
    "chrome-devtools_*": "ask"
  }
}

Nutze "ask" in der Terminal-Oberfläche, wo OpenCode mit einmal, immer oder ablehnen nachfragt. Bei Headless-Läufen akzeptierst du entweder, dass "ask" den Browser blockiert, oder du setzt --auto bewusst ein, mit einem Chrome-Profil nur für Launches.

Umstieg von Claude Code

Der Server ist derselbe, die Config nicht. Vier Unterschiede entscheiden, ob dein Eintrag funktioniert:

ThemaOpenCodeClaude Code
Wo der Eintrag stehtSchlüssel "mcp" in opencode.json"mcpServers" in .mcp.json
Form des Befehls"command" als ein Array, plus "type": "local""command" als String plus "args"-Array
Tool-Namen in Regelnchrome-devtools_take_snapshotmcp__chrome-devtools__take_snapshot
Standard-FreigabenDie meisten Aktionen erlaubtFragt beim ersten Einsatz jedes Tools

Drei Dinge, die Zeit kosten

Ein eingefügter "mcpServers"-Block bleibt stumm
OpenCode ignoriert den Schlüssel komplett: kein Fehler, Exit-Code 0, keine Browser-Tools. Verschieb den Eintrag unter "mcp" und mach aus dem Befehl ein Array.
Headless-Läufe hängen bei offenem stdin
Startet ein Skript opencode run mit stdin als offener Pipe, wartet OpenCode auf eine Eingabe, die nie kommt. In allen 3 Läufen hing es, bis es gestoppt wurde; mit stdin aus /dev/null antwortete es sofort.
"ask" heißt in Skripten nein
In einem Headless-Lauf ist niemand da, der antwortet, also wird jedes "ask" zur Ablehnung. Entscheide pro Lauf, ob der Browser allein handeln darf.
ThemaWortlautWas wir beobachtet haben
OpenCode: lokale ServerAdd local MCP servers using type to "local" within the MCP object.Die Form mit "type": "local" und Array hat in jedem Lauf geladen.
OpenCode: mehrere DateienConfiguration files are merged together, not replaced.Bestätigt: Eine Projektdatei nur mit "mcp" behielt das globale Modell und den globalen Anbieter.
OpenCode: welche Datei gewinntProject config has the highest precedence among standard config files - it overrides both global and remote configs.Bestätigt: Ein "enabled": false im Projekt schaltete den globalen Eintrag ab.
OpenCode: Tool-NamenMCP server tools are registered with server name as prefixDie Tools kamen als chrome-devtools_take_snapshot und so weiter an.
OpenCode: Standard-RechteIf you don’t specify anything, OpenCode starts from permissive defaults:Browser-Tools liefen ohne Rückfrage, bis wir eine Regel hinzugefügt haben.
OpenCode: --autoExplicit "deny" rules are still enforced.Wir haben --auto mit "ask" getestet; mit "deny" wurden die Tools gar nicht erst angeboten.
OpenCode: KontextgrößeMCP servers add to your context, so you want to be careful with which ones you enable.Chrome DevTools MCP bringt 30 Tools mit. Lass andere Server aus, während du launchst.
OpenCode: Flag --sessionSession ID to continueHat headless in jedem Lauf funktioniert, anders als bei Agenten, die nur in ihrer Terminal-Oberfläche fortsetzen.
Claude Code: ProjektdateiProject-scoped servers enable team collaboration by storing configurations in a .mcp.json file at your project’s root directory.Andere Datei und anderer Schlüssel als bei OpenCode; derselbe Eintrag lässt sich nicht übernehmen.
Claude Code: Tool-Namen in Regelnmcp__puppeteer__* matches every tool from the puppeteer serverOpenCode nutzt stattdessen einen einfachen Unterstrich nach dem Servernamen.
Claude Code: StandardmodusPrompts for permission on first use of each tool.Bei OpenCode ist der Standard umgekehrt: erlauben, solange du keine Regel setzt.
Chrome DevTools MCP: Abschnitt zu OpenCodeAdd the following configuration to your `opencode.json` file.Gleiche Form wie unser Block; wir pinnen die Version und ergänzen --autoConnect.

LaunchRepo in OpenCode starten

Öffne OpenCode in deinem privaten LaunchRepo-Workspace und füg den Start-Prompt ein. Das Kit führt dann durchs Onboarding, testet deine Chrome-Verbindung auf Example Domain und baut den Lauf auf.

  • Der Start-Prompt empfiehlt Claude Code oder Codex CLI für die besten Ergebnisse. OpenCode funktioniert mit demselben Kit, weil es die zwei Dinge hat, die das Kit braucht: Dateizugriff im Workspace und einen Browser über MCP.
  • OpenCode liest AGENTS.md aus dem Workspace und übernimmt so die Regeln des Kits von selbst.
  • CAPTCHA- und 2FA-Schritte kommen als Übergaben zu dir zurück; du setzt die Session wie oben gezeigt mit --session fort.

LaunchRepo-Start-Prompt

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.

Nicht Teil dieses Tests

  • Die Freigabe-Rückfragen und das Frage-Tool der Terminal-Oberfläche. Das Headless-Verhalten oben ist gemessen; das Verhalten in der Oberfläche folgt der Dokumentation.
  • Ein echtes KI-Modell. Der Stellvertreter nimmt die Modellqualität aus dem Ergebnis heraus; ein Modell kann trotzdem ein falsches Element wählen.
  • --autoConnect mit einem alltäglichen Chrome-Profil. Wir haben ein temporäres Chrome über --browser-url genutzt.
  • Windows und Linux, Remote-MCP-Server, OpenCode-Accounts und bezahlte Modell-Tarife.

Quellen

Jedes Zitat oben ist wörtlich von diesen Seiten übernommen, gelesen am 1. Oktober 2026. Getestetes Verhalten stammt aus unseren eigenen Läufen, die auf dieser Seite beschrieben sind.

QuelleSeitendatumGeprüft
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 MCPohne Datum
Claude Code Docs: Configure permissionsohne Datum
Chrome DevTools MCP: MCP client configurationohne Datum

FAQ

Wo trage ich MCP-Server in OpenCode ein?
Unter dem Schlüssel "mcp" in opencode.json, entweder im Stammordner deines Projekts oder in ~/.config/opencode/opencode.json. In unserem Test hat OpenCode 1.18.34 außerdem .opencode/opencode.json, OPENCODE_CONFIG und OPENCODE_CONFIG_CONTENT geladen.
Wie sieht die OpenCode-Config für Chrome DevTools MCP aus?
Ein Eintrag namens chrome-devtools mit "type": "local" und "command": ["npx", "-y", "chrome-devtools-mcp@1.10.1", "--autoConnect", "--no-usage-statistics", "--no-performance-crux"]. Mit opencode mcp list siehst du, ob er verbunden ist.
Warum zeigt OpenCode meinen MCP-Server nicht an?
Meist wurde der Eintrag von einem anderen Agenten kopiert: Ein "mcpServers"-Block wird ohne Fehler ignoriert, und "command": "npx" mit separaten "args" lässt OpenCode die ganze Config ablehnen. Nutze "mcp" und ein einziges Befehls-Array.
Kann ich stattdessen Playwright MCP nutzen?
Ja, dieselbe Form des "mcp"-Eintrags funktioniert für jeden lokalen MCP-Server. Diese Seite testet Chrome DevTools MCP, weil es sich mit dem Chrome verbindet, das du schon nutzt; unsere Vergleichsseite erklärt, wann Playwright MCP besser passt.
Wie setze ich eine OpenCode-Session nach einem CAPTCHA fort?
Erledige die Prüfung im selben Chrome-Tab und führ dann opencode run --session <session-id> mit einer kurzen Anweisung aus, oder öffne die Session in der Terminal-Oberfläche mit opencode --session <session-id>. In unseren Läufen waren Session, Tab und Felder noch da.
Wird OpenCode von LaunchRepo offiziell unterstützt?
LaunchRepo unterstützt Coding-Agenten mit Datei- und Browserzugriff; OpenCode hat beides, und diese Seite dokumentiert ein getestetes Setup. Das ist keine Zertifizierung und keine Partnerschaft, und der Start-Prompt empfiehlt für die besten Ergebnisse weiterhin Claude Code oder Codex CLI.

Gib OpenCode einen Launch-Plan

LaunchRepo gibt deinem Agenten die Plattformliste, das Runbook und einen Tracker, den er aktuell hält. OpenCode erledigt die Arbeit in deinem Browser; das letzte Wort hast du.

Preise ansehen