MCP HTTP und stdio
MCP stellt berechtigte native API-Werkzeuge und Seitenwerkzeuge der lokalen Anwendung bereit. Ermittle tatsächliche Namen und Schemas über tools/list.
HTTP-Transport
Verwende die angezeigte native Basisadresse plus /mcp. Sende Authorization: Bearer und Content-Type: application/json. Gib Accept: application/json, text/event-stream an. Initialisiere mit deiner unterstützten Protokollversion, clientInfo und capabilities; sende danach notifications/initialized. Sende nach der Aushandlung MCP-Protocol-Version bei weiteren HTTP-Anfragen.
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-11-25",
"capabilities": {},
"clientInfo": {
"name": "example-local-client",
"version": "1.0"
}
}
}{"jsonrpc":"2.0","method":"notifications/initialized"}
{"jsonrpc":"2.0","id":2,"method":"tools/list"}
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"get_profiles","arguments":{"limit":1}}}Unterstützte Protokollversionen dieser Implementierung sind 2025-11-25, 2025-06-18, 2025-03-26 und 2024-11-05. Prüfe das initialize-Ergebnis; gehe nicht davon aus, dass deine angeforderte Version gewählt wurde. Verwende für aktuelle Clients Einzelnachrichten statt HTTP-Stapel.
Node.js-stdio-Bridge
node tabgecko.mjs mcpLade tabgecko.mjs herunter und konfiguriere deinen MCP-Client so, dass er Node.js mit dem absoluten Dateipfad und dem Argument mcp ausführt. Übergib ADBR_API_TOKEN und optional ADBR_API_URL in der Kindprozessumgebung. Füge keinen Shellbefehl in einen JSON-args-Eintrag ein. Standardausgabe ist für zeilengetrenntes JSON-RPC reserviert.
{
"command": "node",
"args": [
"<ABSOLUTE_PATH_TO_tabgecko.mjs>",
"mcp"
],
"env": {
"ADBR_API_URL": "http://127.0.0.1:47300",
"ADBR_API_TOKEN": "<LOCAL_MCP_TOKEN>"
}
}Client-Konfigurationsformate unterscheiden sich. Übertrage diese Prozessdefinition in die dokumentierte MCP-Konfiguration deines Clients. Die CLI startet weder die Desktop-App noch installiert sie einen Kern. Eine ausdrückliche URL wählt die beabsichtigte Instanz; andernfalls werden lokale Runtime-Metadaten verwendet.
API- und Seitenwerkzeuge
Generierte API-Werkzeuge verwenden ein Methodenpräfix, etwa get_profiles und post_profiles_id_start. Pfad-/Query-Argumente stehen direkt in arguments; ein JSON-Anfragekörper steht unter body. tools/list enthält nur durch das Token erlaubte Werkzeuge. Leite Rechte nicht allein aus Werkzeugnamen oder readOnlyHint ab.
{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "post_profiles_id_start",
"arguments": {
"id": "PROFILE_ID",
"body": {}
}
}
}page_list, page_open, page_navigate, page_text, page_html, page_screenshot, page_click, page_type, page_press_key und page_evaluate arbeiten mit einem laufenden Profil. Löse profile_id (oder unterstützte profile_no) und target_id ausdrücklich auf. Lies das zurückgegebene Schema vor jeder neuen Werkzeugfamilie; page_evaluate führt Code in der Seite aus und ist keine Zusage eines reinen Lesezugriffs.
Werkzeuge und integrierte Hilfe
Mit list_mcp_tools Werkzeugnamen und Beschreibungen durchsuchen, optional read_only filtern und mit offset/limit blättern. describe_mcp_tool liefert das vollständige Eingabeschema und die Token-Rechte eines erlaubten Werkzeugs. get_mcp_guide listet Themen oder liefert ein Thema auf Englisch oder Deutsch. Diese Werkzeuge sind ab Version 0.5.12 verfügbar; zuerst den laufenden Server prüfen.
{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "list_mcp_tools",
"arguments": {
"query": "automation",
"limit": 10
}
}
}{
"jsonrpc": "2.0",
"id": 6,
"method": "tools/call",
"params": {
"name": "get_mcp_guide",
"arguments": {
"topic": "editing",
"language": "de"
}
}
}Prüfen ohne Ausführung
post_automation_workflows_validate erhält body.workflow und optional body.id für einen bestehenden Ablauf. Geprüft werden Schema, JavaScript-Syntax, Profilverweise, Teilablaufzyklen/-tiefe und Zeitpläne, ohne zu speichern, Browser zu öffnen oder Code auszuführen. Warnungen auch bei valid: true beachten. Webseiten, Selektoren, Zugangsdaten und Ausführungsrechte werden dadurch nicht simuliert. post_automation_test_run führt Aktionen tatsächlich aus.
Atomare Änderungen und Versionskonflikte
get_automation_workflows_id liefert workflow und revision. Diese Revision als expected_revision an patch_automation_workflows_id_steps senden. Indizes beginnen bei null und beziehen sich auf das Ergebnis der vorherigen Änderung. delete_count: 0 fügt ein; steps: [] entfernt. Die gesamte Änderung wird geprüft und atomar gespeichert. Grenzen: 100 Änderungen, 200 Schritte je Zwischen-/Endstand, mindestens ein fertiger Schritt. Bei HTTP 409 automation.revision_conflict neu laden und abgleichen statt blind wiederholen. Bereits laufende Aufgaben behalten ihren ursprünglichen Ablaufstand. Lesen und Bearbeiten gespeicherter Ablaufwerte benötigt zusätzlich secrets:read.
{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "patch_automation_workflows_id_steps",
"arguments": {
"id": "WORKFLOW_ID",
"body": {
"expected_revision": "REVISION_FROM_GET",
"edits": [
{
"index": 0,
"delete_count": 1,
"steps": [
{
"action": "wait",
"value": "100"
}
]
}
]
}
}
}
}Inkrementelle Ausführungsprotokolle
get_automation_runs_id liefert Status und begrenzte Ereignisseiten. Mit since: 0 und limit: 100 beginnen, danach log.next als since verwenden. log.has_more auch nach Abschluss vollständig abrufen. Bei laufender Aufgabe zwischen Abfragen warten. Sequenznummern steigen stabil an; Ereignisse enthalten Status und Diagnostik, keine Eingabewerte oder Variableninhalte. Die letzten 1000 Ereignisse bleiben erhalten. log.truncated und first_available kennzeichnen eine Lücke; log.available ist bei alten Läufen ohne Protokoll false. Entfernte Historie liefert 404. Abbruch ist asynchron: Endstatus weiter beobachten. Abruptes Beenden kann noch nicht gespeicherte Ereignisse verlieren.
{
"jsonrpc": "2.0",
"id": 8,
"method": "tools/call",
"params": {
"name": "get_automation_runs_id",
"arguments": {
"id": "RUN_ID",
"since": 0,
"limit": 100
}
}
}Fehler und Lifecycle-Grenzen
Die herunterladbare stdio-Bridge akzeptiert eine Nachricht pro Zeile bis 1 MiB und begrenzt Antworten auf 20 MiB. Sie erlaubt acht parallele Anfragen mit einem Zeitlimit von 30 Sekunden. EOF und blockierte Ausgabe haben begrenzte Beendigung. initialize wird vor nachfolgenden Nachrichten abgeschlossen; der ausgehandelte Versions-Header wird automatisch gesetzt.
Dieser lokale Server verwendet zustandslose JSON-HTTP-Antworten. Er hat kein SSE-Abonnement, keine wiederaufnehmbare Sitzung und keinen Server-Push-Kanal; GET und DELETE /mcp liefern 405. Notifications erhalten keine JSON-RPC-Antwort und werden mit HTTP 202 bestätigt. Prüfe auch bei HTTP 200 sowohl JSON-RPC error als auch result.isError des Werkzeugs. Ein Verbindungsabbruch setzt ein gestartetes Werkzeug nicht zurück und Abbruch ist kein Rückgängigmachen. Lies nach ungewissen Änderungen den Zustand erneut, statt blind zu wiederholen.