# API-Dokumentation für Unified Browser Control MCP Server

## Übersicht

Der Unified Browser Control MCP Server bietet eine umfassende API für die Browser-Automatisierung über das Model Context Protocol (MCP). Alle Funktionen sind so gestaltet, dass sie effizient und leistungsstark arbeiten, ohne unnötige visuelle Effekte zu erzeugen.

## Funktionen

### 1. list_chrome_tabs

**Beschreibung**: Listet alle geöffneten Chrome-Tabs mit ihren IDs, Titeln und URLs auf.

**Parameter**: Keine

**Rückgabe**:
```json
{
  "success": true,
  "content": [
    {
      "type": "text",
      "text": "[{\"id\":\"tab123\",\"title\":\"Beispiel\",\"url\":\"https://example.com\",\"type\":\"page\",\"active\":true}]"
    }
  ]
}
```

### 2. navigate

**Beschreibung**: Navigiert zu einer URL in einem neuen Tab.

**Parameter**:
- `url` (string, erforderlich): Die URL, zu der navigiert werden soll

**Rückgabe**:
```json
{
  "success": true,
  "message": "Navigated to https://example.com",
  "tabId": "new_tab_id",
  "url": "https://example.com"
}
```

### 3. click

**Beschreibung**: Klickt auf ein Element auf einer Webseite.

**Parameter**:
- `selector` (string, erforderlich): CSS-Selektor des Elements
- `url` (string, optional): URL des Tabs (wird automatisch erkannt, wenn nicht angegeben)
- `tabId` (string, optional): ID des Tabs
- `waitForSelector` (string, optional): Warten auf ein bestimmtes Element
- `timeout` (number, optional): Timeout in Millisekunden (Standard: 5000)

**Rückgabe**:
```json
{
  "success": true,
  "result": "Clicked element: BUTTON - Submit Button",
  "selector": "button#submit",
  "url": "https://example.com/form",
  "title": "Formular - Beispiel"
}
```

### 4. fill

**Beschreibung**: Füllt ein Formularfeld mit einem Wert.

**Parameter**:
- `selector` (string, erforderlich): CSS-Selektor des Eingabefelds
- `value` (string, erforderlich): Der einzutragende Wert
- `url` (string, optional): URL des Tabs
- `tabId` (string, optional): ID des Tabs
- `waitForSelector` (string, optional): Warten auf ein bestimmtes Element
- `timeout` (number, optional): Timeout in Millisekunden (Standard: 5000)

**Rückgabe**:
```json
{
  "success": true,
  "result": "Filled field: username with value: john_doe",
  "selector": "input#username",
  "value": "john_doe",
  "url": "https://example.com/login",
  "title": "Login - Beispiel"
}
```

### 5. execute_script

**Beschreibung**: Führt JavaScript auf einer Webseite aus.

**Parameter**:
- `script` (string, erforderlich): Das auszuführende JavaScript
- `url` (string, optional): URL des Tabs
- `tabId` (string, optional): ID des Tabs
- `waitForSelector` (string, optional): Warten auf ein bestimmtes Element
- `timeout` (number, optional): Timeout in Millisekunden (Standard: 5000)

**Rückgabe**:
```json
{
  "success": true,
  "result": "Script result",
  "script": "document.title",
  "url": "https://example.com",
  "title": "Beispiel"
}
```

### 6. fetch_html

**Beschreibung**: Ruft den HTML-Inhalt einer Webseite ab.

**Parameter**:
- `url` (string, optional): URL des Tabs
- `tabId` (string, optional): ID des Tabs
- `selector` (string, optional): CSS-Selektor für spezifischen Inhalt
- `waitForSelector` (string, optional): Warten auf ein bestimmtes Element
- `timeout` (number, optional): Timeout in Millisekunden (Standard: 5000)
- `maxContentLength` (number, optional): Maximale Länge des Inhalts (Standard: 50000)
- `extractStrategy` (string, optional): Extraktionsstrategie ('full', 'smart', 'text', 'structure', 'selectors', Standard: 'full')

**Rückgabe**:
```json
{
  "content": [
    {
      "type": "text",
      "text": "<!DOCTYPE html>..."
    }
  ],
  "_meta": {
    "url": "https://example.com",
    "title": "Beispiel",
    "selector": "full",
    "length": 12345,
    "strategy": "full",
    "truncated": false
  }
}
```

### 7. llm_control_browser

**Beschreibung**: Interpretiert natürliche Sprachbefehle und führt Browser-Aktionen aus. Dieser Einstieg ist nur für freie, offene Browser-Absichten gedacht.

**Parameter**:
- `command` (string, erforderlich): Natürlicher Sprachbefehl
- `sessionId` (string, optional): Session-ID zur Zustandsverwaltung

**Rückgabe**:
```json
{
  "success": true,
  "result": "Navigated to https://example.com",
  "command": "navigate to example.com",
  "action": {
    "type": "navigate",
    "url": "https://example.com"
  },
  "sessionId": "session123"
}
```

**Wichtig**:
- Kein Default-Search-Fallback bei unklaren Befehlen
- Präzise UI-Aktionen bitte direkt als `click`, `fill`, `navigate` oder `execute_script` aufrufen
- Nur explizite Suchwörter wie `search for` werden als Suche behandelt

### 8. screenshot

**Beschreibung**: Erstellt einen Screenshot einer Webseite oder eines Elements.

**Parameter**:
- `url` (string, optional): URL des Tabs
- `tabId` (string, optional): ID des Tabs
- `selector` (string, optional): CSS-Selektor für spezifisches Element
- `format` (string, optional): Bildformat ('png', 'jpeg', 'webp', Standard: 'png')
- `quality` (number, optional): Qualität für jpeg/webp (0-100, Standard: 90)
- `scale` (number, optional): Skalierungsfaktor (Standard: 1.0)
- `waitForSelector` (string, optional): Warten auf ein bestimmtes Element
- `timeout` (number, optional): Timeout in Millisekunden (Standard: 5000)

**Rückgabe**:
```json
{
  "content": [
    {
      "type": "image",
      "data": "base64_encoded_image_data",
      "mimeType": "image/png"
    },
    {
      "type": "text",
      "text": "{\"success\":true,\"selector\":\"full-page\",\"format\":\"png\",\"quality\":90,...}"
    }
  ]
}
```

### 9. get_page_content

**Beschreibung**: Ruft den Inhalt der aktuell aktiven Registerkarte ab.

**Parameter**:
- `sessionId` (string, optional): Session-ID zur Zustandsverwaltung

**Rückgabe**:
```json
{
  "success": true,
  "url": "https://example.com",
  "title": "Beispiel",
  "content": "<html>...",
  "tabCount": 5,
  "sessionId": "session123"
}
```

## Fehlerbehandlung

Alle Funktionen geben bei Fehlern eine Fehlermeldung zurück:

```json
{
  "success": false,
  "error": "Fehlerbeschreibung"
}
```

## Sicherheitshinweise

- Der Server kommuniziert über das lokale Chrome-Debug-Protokoll (localhost:9222)
- Keine externen Verbindungen oder Datenübertragung
- Zugriff nur auf bereits geöffnete Tabs und Inhalte, die der Benutzer bereits sieht
- Keine Speicherung sensibler Daten

## Performance-Tipps

- Verwende spezifische Selektoren für bessere Performance
- Nutze `waitForSelector` für asynchrone Inhalte
- Setze angemessene Timeouts für langsame Seiten
- Verwende `extractStrategy` für effizienten HTML-Abgleich
