Zum Hauptinhalt springen

MCP-Server

Otto bietet einen nativen MCP-Server (Model Context Protocol) für programmatischen Agent-Zugriff. Der Server stellt Ottos vollständige Befehlsoberfläche als MCP-Werkzeuge über Stdio-Transport bereit.

Server starten

otto mcp

Der Server läuft über Stdio-Transport und ist dafür vorgesehen, von einem MCP-Client (Agent-Framework) gestartet zu werden. Er akzeptiert keine interaktive Eingabe.

Transport und Umfang

  • Transport: Stdio (JSON-RPC-Nachrichten auf stdout, Protokolle auf stderr)
  • Vorgesehene Nutzung: lokal prozessgestartete MCP-Clients
  • Protokoll: MCP 1.0 mit initialize, tools/list und tools/call

Verfügbare Werkzeuge

Der Server stellt 25 Werkzeuge bereit, organisiert nach Kategorie:

Status-Werkzeuge

WerkzeugBeschreibung
otto_statusRelay-Daemon-Status anzeigen (läuft, Port, PID)
otto_commands_listVerfügbare Befehle von einem verbundenen Node auflisten

Ausführungswerkzeuge

WerkzeugBeschreibung
otto_cmdBefehl an einen verbundenen Node senden
otto_testSite-Befehl zum Testen ausführen (registriert Controller bei Bedarf automatisch)
otto_screenshotScreenshot einer URL aufnehmen
otto_extract_contentInhalt mit einem Werkzeug extrahieren (markdown, distilled_html, clean_html, raw_html, text)

Beobachtungswerkzeuge

WerkzeugBeschreibung
otto_logs_listHistorische Relay-Protokolle mit optionalen Filtern auflisten
otto_logs_followLive-Relay-Protokolle für eine begrenzte Dauer verfolgen
otto_logs_exportRelay-Protokolle als strukturierte Daten exportieren
otto_listener_subscribe_networkNetzwerkinterceptions-Updates auf einem Tab abonnieren
otto_listener_unsubscribeAktiven Listener deabonnieren

Lebenszyklus-Werkzeuge

WerkzeugBeschreibung
otto_setupOtto-Setup ausführen (Relay konfigurieren, Daemon starten, Erweiterung herunterladen)
otto_startRelay-Daemon starten
otto_stopRelay-Daemon stoppen
otto_extension_updateNeuestes Erweiterungs-Artefakt herunterladen und installieren
otto_extension_infoInstallierte Erweiterungsmetadaten anzeigen

Identitäts-Werkzeuge

WerkzeugBeschreibung
otto_pairKopplungscode genehmigen, um einen Node zu registrieren
otto_authcodeAusstehende Kopplungs-Authcodes auflisten
otto_revokeGespeichertes Refresh-Token widerrufen und lokale Auth löschen
otto_client_registerNeuen Controller-Client registrieren
otto_client_loginClient-Anmeldeinformationen gegen Access/Refresh-Token eintauschen
otto_client_statusLokalen Controller-Client-Status anzeigen
otto_client_forgetGespeichertes Client-Secret löschen und lokale Auth löschen
otto_client_removeRegistrierten Controller-Client beim Relay entfernen

Konfigurations-Werkzeuge

WerkzeugBeschreibung
otto_configOtto-Konfiguration lesen oder aktualisieren

Beispiel-MCP-Aufrufe

Werkzeuge auflisten

{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}

Status prüfen

{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "otto_status",
"arguments": {}
}
}

Sie können auch verbundene Node-IDs mit nodes: true anfordern:

{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "otto_status",
"arguments": { "nodes": true }
}
}

Befehl ausführen

{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "otto_cmd",
"arguments": {
"action": "command.run",
"payload": "{\"site\":\"reddit.com\",\"command\":\"getPosts\"}"
}
}
}

Inhalt extrahieren (Standard Markdown)

{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "otto_extract_content",
"arguments": {
"url": "https://example.com"
}
}
}

otto_extract_content Eingabe-Highlights:

  • format: markdown (Standard), distilled_html, clean_html, raw_html, text
  • Zielauswahl: url oder tabSession angeben
  • selector: unterstützt für clean_html, raw_html und text
  • distillMode / fallbackToReadability: für markdown und distilled_html

Für Selektor-Erkennung und Befehlserstellungs-Workflows verwenden Sie format: "clean_html".

Fehlerbehandlung

Alle Werkzeuge geben Fehler im MCP-Standardformat zurück:

{
"content": [{ "type": "text", "text": "Fehlermeldung" }],
"isError": true
}

Häufige Fehlercodes:

FehlerBedeutung
Missing controllerAccessTokenFühren Sie otto client login oder otto pair <code> aus
Missing targetNodeIdMehrere Nodes verbunden; übergeben Sie das nodeId-Argument
manual_login_requiredBitten Sie den Benutzer, sich manuell auf der Site anzumelden
acl_missing_node_grantBitten Sie den Benutzer, den Controller im Erweiterungs-Popup zu genehmigen

Fehlerbehebung

SymptomWahrscheinliche UrsacheLösung
Server beendet sofortStdio-TransportfehlerSicherstellen, dass im richtigen MCP-Client-Kontext ausgeführt wird
Werkzeuge erscheinen nicht im AgentServer nicht registriertFühren Sie otto agent install <runtime> aus
Befehle schlagen mit Auth-Fehler fehlController nicht authentifiziertFühren Sie otto client login aus
targetNodeId-FehlerKein Node verbundenÜberprüfen, ob die Erweiterung geladen und verbunden ist

Verwandte Seiten