Firecrawl MCP Server

offiziell

Fügt leistungsstarke Web-Scraping- und Suchfunktionen zu LLM-Clients wie Cursor und Claude hinzu.

Dokumentation

Firecrawl MCP Server

Ein Model Context Protocol (MCP) Server, der Firecrawl zu MCP-kompatiblen KI-Agenten bringt – das Live-Web durchsuchen, scrapen und mit ihm interagieren, für saubere, agentenbereite Kontexte.

Großer Dank an @vrknetha, @knacklabs für die initiale Implementierung!

Funktionen

  • Das Web durchsuchen und vollständige Seiteninhalte erhalten
  • Jede URL in saubere, strukturierte Daten scrapen
  • Mit Seiten interagieren – klicken, navigieren und bedienen
  • Tiefgehende Recherche mit autonomem Agenten
  • Automatische Wiederholungen und Ratenbegrenzung
  • Cloud- und Self-Hosted-Unterstützung
  • SSE-Unterstützung

Probieren Sie unseren MCP Server auf dem MCP.so Playground oder auf Klavis AI aus.

Installation

Ausführung mit npx

env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp

Manuelle Installation

npm install -g firecrawl-mcp

Ausführung in Cursor

Cursor konfigurieren 🖥️ Hinweis: Erfordert Cursor Version 0.45.6+ Die aktuellsten Konfigurationsanweisungen finden Sie in der offiziellen Cursor-Dokumentation zur Konfiguration von MCP-Servern: Cursor MCP Server Configuration Guide

So konfigurieren Sie Firecrawl MCP in Cursor v0.48.6

  1. Öffnen Sie die Cursor-Einstellungen
  2. Gehen Sie zu Features > MCP Servers
  3. Klicken Sie auf "+ Add new global MCP server"
  4. Geben Sie den folgenden Code ein:
    {
      "mcpServers": {
        "firecrawl-mcp": {
          "command": "npx",
          "args": ["-y", "firecrawl-mcp"],
          "env": {
            "FIRECRAWL_API_KEY": "YOUR-API-KEY"
          }
        }
      }
    }
    

So konfigurieren Sie Firecrawl MCP in Cursor v0.45.6

  1. Öffnen Sie die Cursor-Einstellungen
  2. Gehen Sie zu Features > MCP Servers
  3. Klicken Sie auf "+ Add New MCP Server"
  4. Geben Sie Folgendes ein:
    • Name: "firecrawl-mcp" (oder ein bevorzugter Name)
    • Type: "command"
    • Command: env FIRECRAWL_API_KEY=your-api-key npx -y firecrawl-mcp

Falls Sie Windows verwenden und auf Probleme stoßen, versuchen Sie cmd /c "set FIRECRAWL_API_KEY=your-api-key && npx -y firecrawl-mcp"

Ersetzen Sie your-api-key durch Ihren Firecrawl API-Schlüssel. Falls Sie noch keinen haben, können Sie ein Konto erstellen und ihn von https://www.firecrawl.dev/app/api-keys erhalten.

Nach dem Hinzufügen aktualisieren Sie die MCP-Serverliste, um die neuen Werkzeuge zu sehen. Der Composer Agent verwendet Firecrawl MCP automatisch, wenn es angebracht ist, aber Sie können es explizit anfordern, indem Sie Ihre Web-Scraping-Anforderungen beschreiben. Greifen Sie über Command+L (Mac) auf den Composer zu, wählen Sie "Agent" neben der Senden-Schaltfläche und geben Sie Ihre Anfrage ein.

Ausführung in Windsurf

Fügen Sie dies zu Ihrer ./codeium/windsurf/model_config.json hinzu:

{
  "mcpServers": {
    "mcp-server-firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Ausführung mit Streamable HTTP Local Mode

Um den Server lokal mit Streamable HTTP anstelle des standardmäßigen stdio-Transports auszuführen:

env HTTP_STREAMABLE_SERVER=true FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp

Verwenden Sie die URL: http://localhost:3000/mcp

Installation über Smithery (Legacy)

Um Firecrawl für Claude Desktop automatisch über Smithery zu installieren:

npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude

Ausführung in VS Code

Für eine Ein-Klick-Installation klicken Sie unten auf eine der Installationsschaltflächen...

Install with NPX in VS Code Install with NPX in VS Code Insiders

Für die manuelle Installation fügen Sie den folgenden JSON-Block zu Ihrer User Settings (JSON)-Datei in VS Code hinzu. Sie können dies tun, indem Sie Ctrl + Shift + P drücken und Preferences: Open User Settings (JSON) eingeben.

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "apiKey",
        "description": "Firecrawl API Key",
        "password": true
      }
    ],
    "servers": {
      "firecrawl": {
        "command": "npx",
        "args": ["-y", "firecrawl-mcp"],
        "env": {
          "FIRECRAWL_API_KEY": "${input:apiKey}"
        }
      }
    }
  }
}

Optional können Sie es zu einer Datei namens .vscode/mcp.json in Ihrem Arbeitsbereich hinzufügen. Dies ermöglicht es Ihnen, die Konfiguration mit anderen zu teilen:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "apiKey",
      "description": "Firecrawl API Key",
      "password": true
    }
  ],
  "servers": {
    "firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "${input:apiKey}"
      }
    }
  }
}

Konfiguration

Umgebungsvariablen

Erforderlich für Cloud-API

  • FIRECRAWL_API_KEY: Ihr Firecrawl API-Schlüssel
    • Erforderlich bei Verwendung der Cloud-API (Standard)
    • Optional bei Verwendung einer Self-Hosted-Instanz mit FIRECRAWL_API_URL
  • FIRECRAWL_API_URL (Optional): Benutzerdefinierter API-Endpunkt für Self-Hosted-Instanzen
    • Beispiel: https://firecrawl.your-domain.com
    • Wenn nicht angegeben, wird die Cloud-API verwendet (erfordert API-Schlüssel)

MCP OAuth (Bearer-Zugriffstoken)

Gehostetes Firecrawl kann OAuth Zugriffstoken (fco_…) über den Autorisierungsserver auf firecrawl.dev ausstellen. Dieser MCP-Server leitet die aufgelösten Anmeldeinformationen als Authorization: Bearer … an die Firecrawl-API weiter.

  • HTTP-Stream-Transporte (CLOUD_SERVICE=true, HTTP_STREAMABLE_SERVER=true oder SSE_LOCAL=true): Clients sollten Authorization: Bearer <fco_access_token> bei MCP-Anfragen senden. Ein OAuth-Bearer-Token hat Vorrang vor x-firecrawl-api-key / x-api-key, wenn beide vorhanden sind.
  • stdio: Verwenden Sie FIRECRAWL_OAUTH_TOKEN für ein statisches Zugriffstoken oder weiterhin FIRECRAWL_API_KEY für einen API-Schlüssel.

Verwenden Sie ausschließlich Zugriffstoken (fco_…). Refresh-Token (fcr_…) müssen am Token-Endpunkt ausgetauscht und nicht an die Scrape-/Search-API übergeben werden.

Optionale Konfiguration

Wiederholungskonfiguration
  • FIRECRAWL_RETRY_MAX_ATTEMPTS: Maximale Anzahl von Wiederholungsversuchen (Standard: 3)
  • FIRECRAWL_RETRY_INITIAL_DELAY: Anfängliche Verzögerung in Millisekunden vor dem ersten Wiederholungsversuch (Standard: 1000)
  • FIRECRAWL_RETRY_MAX_DELAY: Maximale Verzögerung in Millisekunden zwischen Wiederholungen (Standard: 10000)
  • FIRECRAWL_RETRY_BACKOFF_FACTOR: Exponentieller Backoff-Multiplikator (Standard: 2)
Überwachung der Credit-Nutzung
  • FIRECRAWL_CREDIT_WARNING_THRESHOLD: Warnschwelle für Credit-Nutzung (Standard: 1000)
  • FIRECRAWL_CREDIT_CRITICAL_THRESHOLD: Kritische Schwelle für Credit-Nutzung (Standard: 100)

Konfigurationsbeispiele

Für die Cloud-API-Nutzung mit benutzerdefinierter Wiederholung und Credit-Überwachung:

# Required for cloud API
export FIRECRAWL_API_KEY=your-api-key

# Optional retry configuration
export FIRECRAWL_RETRY_MAX_ATTEMPTS=5        # Increase max retry attempts
export FIRECRAWL_RETRY_INITIAL_DELAY=2000    # Start with 2s delay
export FIRECRAWL_RETRY_MAX_DELAY=30000       # Maximum 30s delay
export FIRECRAWL_RETRY_BACKOFF_FACTOR=3      # More aggressive backoff

# Optional credit monitoring
export FIRECRAWL_CREDIT_WARNING_THRESHOLD=2000    # Warning at 2000 credits
export FIRECRAWL_CREDIT_CRITICAL_THRESHOLD=500    # Critical at 500 credits

Für Self-Hosted-Instanz:

# Required for self-hosted
export FIRECRAWL_API_URL=https://firecrawl.your-domain.com

# Optional authentication for self-hosted
export FIRECRAWL_API_KEY=your-api-key  # If your instance requires auth

# Custom retry configuration
export FIRECRAWL_RETRY_MAX_ATTEMPTS=10
export FIRECRAWL_RETRY_INITIAL_DELAY=500     # Start with faster retries

Verwendung mit Claude Desktop

Fügen Sie dies zu Ihrem claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "mcp-server-firecrawl": {
      "command": "npx",
      "args": ["-y", "firecrawl-mcp"],
      "env": {
        "FIRECRAWL_API_KEY": "YOUR_API_KEY_HERE",

        "FIRECRAWL_RETRY_MAX_ATTEMPTS": "5",
        "FIRECRAWL_RETRY_INITIAL_DELAY": "2000",
        "FIRECRAWL_RETRY_MAX_DELAY": "30000",
        "FIRECRAWL_RETRY_BACKOFF_FACTOR": "3",

        "FIRECRAWL_CREDIT_WARNING_THRESHOLD": "2000",
        "FIRECRAWL_CREDIT_CRITICAL_THRESHOLD": "500"
      }
    }
  }
}

Systemkonfiguration

Der Server enthält mehrere konfigurierbare Parameter, die über Umgebungsvariablen gesetzt werden können. Hier sind die Standardwerte, falls nicht konfiguriert:

const CONFIG = {
  retry: {
    maxAttempts: 3, // Number of retry attempts for rate-limited requests
    initialDelay: 1000, // Initial delay before first retry (in milliseconds)
    maxDelay: 10000, // Maximum delay between retries (in milliseconds)
    backoffFactor: 2, // Multiplier for exponential backoff
  },
  credit: {
    warningThreshold: 1000, // Warn when credit usage reaches this level
    criticalThreshold: 100, // Critical alert when credit usage reaches this level
  },
};

Diese Konfigurationen steuern:

  1. Wiederholungsverhalten

    • Wiederholt fehlgeschlagene Anfragen aufgrund von Ratenbegrenzungen automatisch
    • Verwendet exponentiellen Backoff, um die API nicht zu überlasten
    • Beispiel: Mit den Standardeinstellungen werden Wiederholungen wie folgt versucht:
        1. Wiederholung: 1 Sekunde Verzögerung
        1. Wiederholung: 2 Sekunden Verzögerung
        1. Wiederholung: 4 Sekunden Verzögerung (gedeckelt durch maxDelay)
  2. Überwachung der Credit-Nutzung

    • Verfolgt den API-Credit-Verbrauch für die Cloud-API-Nutzung
    • Gibt Warnungen bei festgelegten Schwellenwerten aus
    • Hilft, unerwartete Dienstunterbrechungen zu vermeiden
    • Beispiel: Mit den Standardeinstellungen:
      • Warnung bei 1000 verbleibenden Credits
      • Kritischer Alarm bei 100 verbleibenden Credits

Ratenbegrenzung und Stapelverarbeitung

Der Server nutzt die integrierten Ratenbegrenzungs- und Stapelverarbeitungsfunktionen von Firecrawl:

  • Automatische Behandlung von Ratenbegrenzungen mit exponentiellem Backoff
  • Effiziente parallele Verarbeitung für Stapeloperationen
  • Intelligente Anfragewarteschlangen und Drosselung
  • Automatische Wiederholungen bei vorübergehenden Fehlern

So wählen Sie ein Werkzeug aus

Verwenden Sie diesen Leitfaden, um das richtige Werkzeug für Ihre Aufgabe auszuwählen:

  • Wenn Sie die genaue(n) URL(s) kennen:
    • Für eine: Verwenden Sie scrape (mit JSON-Format für strukturierte Daten)
    • Für viele: Verwenden Sie batch_scrape
  • Wenn Sie URLs auf einer Website entdecken müssen: Verwenden Sie map
  • Wenn Sie das Web nach Informationen durchsuchen möchten: Verwenden Sie search
  • Wenn Sie komplexe Recherchen über mehrere unbekannte Quellen benötigen: Verwenden Sie agent
  • Wenn Sie eine ganze Website oder einen Abschnitt analysieren möchten: Verwenden Sie crawl (mit Begrenzungen!)
  • Wenn Sie interaktive Browser-Automatisierung benötigen (klicken, tippen, navigieren): Verwenden Sie scrape + interact

Kurzreferenztabelle

WerkzeugAm besten geeignet fürRückgabe
scrapeEinzelner SeiteninhaltJSON (bevorzugt) oder Markdown
interactMit einer gescrapten Seite interagierenAusführungsergebnis
batch_scrapeMehrere bekannte URLsJSON (bevorzugt) oder Markdown[]
mapURLs auf einer Website entdeckenURL[]
crawlMehrseitenextraktion (mit Begrenzungen)Markdown/HTML[]
searchWebsuche nach InformationenErgebnisse[]
agentKomplexe Multi-Quellen-RechercheJSON (strukturierte Daten)

Leitfaden zur Formatauswahl

Bei Verwendung von scrape oder batch_scrape wählen Sie das richtige Format:

  • JSON-Format (für die meisten Fälle empfohlen): Verwenden Sie es, wenn Sie spezifische Daten von einer Seite benötigen. Definieren Sie ein Schema basierend auf dem, was Sie extrahieren müssen. Dies hält die Antworten klein und vermeidet ein Überlaufen des Kontextfensters.
  • Markdown-Format (sparsam verwenden): Nur wenn Sie wirklich den vollständigen Seiteninhalt benötigen, z. B. zum Lesen eines gesamten Artikels für eine Zusammenfassung oder zur Analyse der Seitenstruktur.

Verfügbare Werkzeuge

1. Scrape Tool (firecrawl_scrape)

Inhalte von einer einzelnen URL mit erweiterten Optionen scrapen.

Am besten geeignet für:

  • Extraktion einzelner Seiteninhalte, wenn Sie genau wissen, welche Seite die Informationen enthält.

Nicht empfohlen für:

  • Extrahieren von Inhalten aus mehreren Seiten (verwenden Sie batch_scrape für bekannte URLs oder map + batch_scrape, um zuerst URLs zu entdecken, oder crawl für vollständige Seiteninhalte)
  • Wenn Sie unsicher sind, welche Seite die Informationen enthält (verwenden Sie search)

Häufige Fehler:

  • Scrape für eine Liste von URLs verwenden (verwenden Sie stattdessen batch_scrape).
  • Standardmäßig das Markdown-Format verwenden (verwenden Sie das JSON-Format, um nur das zu extrahieren, was Sie benötigen).

Das richtige Format wählen:

  • JSON-Format (bevorzugt): Verwenden Sie für die meisten Anwendungsfälle das JSON-Format mit einem Schema, um nur die spezifisch benötigten Daten zu extrahieren. Dies hält die Antworten fokussiert und verhindert ein Überlaufen des Kontextfensters.
  • Markdown-Format: Nur wenn die Aufgabe wirklich den vollständigen Seiteninhalt erfordert (z. B. Zusammenfassen eines gesamten Artikels, Analysieren der Seitenstruktur).

Prompt-Beispiel:

"Holen Sie die Produktdetails von https://example.com/product."

Anwendungsbeispiel (JSON-Format - bevorzugt):

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com/product",
    "formats": [
      {
        "type": "json",
        "prompt": "Extract the product information",
        "schema": {
          "type": "object",
          "properties": {
            "name": { "type": "string" },
            "price": { "type": "number" },
            "description": { "type": "string" }
          },
          "required": ["name", "price"]
        }
      }
    ]
  }
}

Anwendungsbeispiel (Markdown-Format - wenn vollständiger Inhalt benötigt wird):

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com/article",
    "formats": ["markdown"],
    "onlyMainContent": true
  }
}

Anwendungsbeispiel (Branding-Format - Markenidentität extrahieren):

{
  "name": "firecrawl_scrape",
  "arguments": {
    "url": "https://example.com",
    "formats": ["branding"]
  }
}

Branding-Format: Extrahiert umfassende Markenidentität (Farben, Schriftarten, Typografie, Abstände, Logo, UI-Komponenten) für Designanalyse oder Stilreplikation. Datenschutz: Setzen Sie redactPII: true, um Inhalte mit geschwärzten personenbezogenen Daten zurückzugeben.

Rückgabe:

  • JSON-strukturierte Daten, Markdown, Branding-Profil oder andere angegebene Formate.

2. Batch Scrape Tool (firecrawl_batch_scrape)

Mehrere URLs effizient mit integrierter Ratenbegrenzung und paralleler Verarbeitung scrapen.

Am besten geeignet für:

  • Abrufen von Inhalten aus mehreren Seiten, wenn Sie genau wissen, welche Seiten gescrapt werden sollen.

Nicht empfohlen für:

  • Entdecken von URLs (verwenden Sie zuerst map, wenn Sie die URLs nicht kennen)
  • Scrapen einer einzelnen Seite (verwenden Sie scrape)

Häufige Fehler:

  • batch_scrape mit zu vielen URLs auf einmal verwenden (kann Ratenbegrenzungen oder Token-Überlauf verursachen)

Prompt-Beispiel:

"Holen Sie den Inhalt dieser drei Blogbeiträge: [url1, url2, url3]."

Anwendungsbeispiel:

{
  "name": "firecrawl_batch_scrape",
  "arguments": {
    "urls": ["https://example1.com", "https://example2.com"],
    "options": {
      "formats": ["markdown"],
      "onlyMainContent": true
    }
  }
}

Rückgabe:

  • Antwort enthält die Operations-ID zur Statusüberprüfung:
{
  "content": [
    {
      "type": "text",
      "text": "Batch operation queued with ID: batch_1. Use firecrawl_check_batch_status to check progress."
    }
  ],
  "isError": false
}

3. Batch-Status prüfen (firecrawl_check_batch_status)

Den Status einer Stapeloperation überprüfen.

{
  "name": "firecrawl_check_batch_status",
  "arguments": {
    "id": "batch_1"
  }
}

4. Map Tool (firecrawl_map)

Eine Website kartieren, um alle indexierten URLs auf der Website zu entdecken.

Am besten geeignet für:

  • Entdecken von URLs auf einer Website, bevor entschieden wird, was gescrapt werden soll
  • Finden bestimmter Abschnitte einer Website

Nicht empfohlen für:

  • Wenn Sie bereits wissen, welche spezifische URL Sie benötigen (verwenden Sie scrape oder batch_scrape)
  • Wenn Sie den Inhalt der Seiten benötigen (verwenden Sie scrape nach der Kartierung)

Häufige Fehler:

  • Crawl verwenden, um URLs zu entdecken, anstatt map

Prompt-Beispiel:

"Listen Sie alle URLs auf example.com auf."

Anwendungsbeispiel:

{
  "name": "firecrawl_map",
  "arguments": {
    "url": "https://example.com"
  }
}

Rückgabe:

  • Array von auf der Website gefundenen URLs

5. Search Tool (firecrawl_search)

Das Web durchsuchen und optional Inhalte aus den Suchergebnissen extrahieren.

Am besten geeignet für:

  • Finden spezifischer Informationen über mehrere Websites hinweg, wenn Sie nicht wissen, welche Website die Informationen hat.
  • Wenn Sie den relevantesten Inhalt für eine Suchanfrage benötigen

Nicht empfohlen für:

  • Wenn Sie bereits wissen, welche Website gescrapt werden soll (verwenden Sie scrape)
  • Wenn Sie eine umfassende Abdeckung einer einzelnen Website benötigen (verwenden Sie map oder crawl)

Häufige Fehler:

  • Crawl oder map für offene Fragen verwenden (verwenden Sie stattdessen search)

Anwendungsbeispiel:

{
  "name": "firecrawl_search",
  "arguments": {
    "query": "latest AI research papers 2023",
    "limit": 5,
    "lang": "en",
    "country": "us",
    "scrapeOptions": {
      "formats": ["markdown"],
      "onlyMainContent": true,
      "redactPII": true
    }
  }
}

Rückgabe:

  • Array von Suchergebnissen (mit optionalem gescrapten Inhalt) sowie ein id-Feld. Übergeben Sie dieses id an firecrawl_search_feedback, nachdem Sie die Ergebnisse verwendet haben, um 1 Credit zurückzuerstatten (Suche kostet 2) und die Suchqualität zu verbessern.

Prompt-Beispiel:

"Finde die neuesten Forschungsarbeiten zu KI, die 2023 veröffentlicht wurden."

5b. Search Feedback Tool (firecrawl_search_feedback)

Sendet strukturiertes Feedback zu einem vorherigen firecrawl_search-Ergebnis. Das erste Feedback pro Such-ID erstattet 1 Credit und verbessert die Suchqualität von Firecrawl. Idempotent pro Such-ID.

Rufen Sie dies nach jeder tatsächlich genutzten Suche auf (oder nach solchen, die nicht geholfen haben). Schlechtes/unvollständiges Feedback mit missingContent ist genauso wertvoll wie gutes Feedback.

Opt-out: Setzen Sie FIRECRAWL_NO_SEARCH_FEEDBACK=1 (oder FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1) in der Umgebung, wenn Sie den MCP-Server starten. Das firecrawl_search_feedback-Tool wird dann nicht registriert, sodass Agenten es nicht aufrufen können. Team-Admins können Feedback auch serverseitig deaktivieren; in diesem Fall ist das Tool registriert, gibt aber immer feedbackErrorCode: "TEAM_OPTED_OUT" zurück.

Wichtigstes Feld: missingContent. Es handelt sich um ein Array spezifischer Inhalte, die der Agent erwartet, aber nicht gefunden hat. Ein Eintrag pro fehlendem Thema – diese aggregieren sich teamübergreifend und zeigen uns, was als Nächstes indexiert werden soll.

Tägliche Rückerstattungsobergrenze (pro Team, pro UTC-Tag, Standard 100 Credits). Sobald das creditsRefundedToday eines Teams dailyRefundCap erreicht, zeichnen weitere Einreichungen zwar Feedback auf, erstatten aber keine Credits mehr. Die Antwort setzt dailyCapReached: true. Agenten sollten den Aufruf dieses Tools für den Rest des UTC-Tages einstellen, wenn sie dieses Flag sehen.

Nutzungsbeispiel:

{
  "name": "firecrawl_search_feedback",
  "arguments": {
    "searchId": "0193f6c5-1234-7890-abcd-1234567890ab",
    "rating": "good",
    "valuableSources": [
      {
        "url": "https://docs.firecrawl.dev/features/search",
        "reason": "Most up-to-date description of /search."
      }
    ],
    "missingContent": [
      {
        "topic": "Pricing for the search endpoint",
        "description": "No pricing tier table for /search specifically."
      },
      { "topic": "Per-team rate limits" }
    ],
    "querySuggestions": "Boost docs.firecrawl.dev for queries that mention 'firecrawl'"
  }
}

Gibt zurück:

  • { success, feedbackId, creditsRefunded, alreadySubmitted? } JSON.

5c. Generic Feedback Tool (firecrawl_feedback)

Sendet strukturiertes Feedback für einen abgeschlossenen v2-Endpunkt-Job über /v2/feedback. Verwenden Sie dies für Endpunkt-Feedback zu scrape, parse, map oder search-Jobs. Für die Qualität von Suchergebnissen bevorzugen Sie speziell firecrawl_search_feedback, da es suchspezifische Anleitungen enthält.

Halten Sie Feedback knapp: Verwenden Sie Problemcodes, Tags, kurze Notizen, URLs, Seitenzahlen und kleine Metadatenobjekte. Fügen Sie keine rohen Scrape-/Parse-Ausgaben bei.

Opt-out: Setzen Sie FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 (oder FIRECRAWL_DISABLE_ENDPOINT_FEEDBACK=1) in der Umgebung, wenn Sie den MCP-Server starten. Das firecrawl_feedback-Tool wird dann nicht registriert, sodass Agenten es nicht aufrufen können.

Nutzungsbeispiel:

{
  "name": "firecrawl_feedback",
  "arguments": {
    "endpoint": "scrape",
    "jobId": "0193f6c5-1234-7890-abcd-1234567890ab",
    "rating": "partial",
    "issues": ["missing_markdown"],
    "tags": ["docs"],
    "note": "The pricing table was missing from the markdown output.",
    "url": "https://example.com/pricing",
    "pageNumbers": [1],
    "metadata": {
      "format": "markdown"
    }
  }
}

Gibt zurück:

  • { success, feedbackId, creditsRefunded, creditsRefundedToday?, dailyRefundCap?, dailyCapReached?, alreadySubmitted?, warning? } JSON.

6. Crawl Tool (firecrawl_crawl)

Startet einen asynchronen Crawl-Job auf einer Website und extrahiert Inhalte von allen Seiten.

Am besten geeignet für:

  • Extrahieren von Inhalten aus mehreren zusammenhängenden Seiten, wenn Sie eine umfassende Abdeckung benötigen.

Nicht empfohlen für:

  • Extrahieren von Inhalten von einer einzelnen Seite (verwenden Sie Scrape)
  • Wenn Token-Limits ein Problem darstellen (verwenden Sie Map + Batch_Scrape)
  • Wenn Sie schnelle Ergebnisse benötigen (Crawlen kann langsam sein)

Warnung: Crawl-Antworten können sehr groß sein und Token-Limits überschreiten. Begrenzen Sie die Crawl-Tiefe und Seitenanzahl oder verwenden Sie Map + Batch_Scrape für bessere Kontrolle.

Häufige Fehler:

  • Limit oder maxDepth zu hoch setzen (verursacht Token-Überlauf)
  • Crawl für eine einzelne Seite verwenden (verwenden Sie stattdessen Scrape)

Prompt-Beispiel:

"Hole alle Blogbeiträge aus den ersten beiden Ebenen von example.com/blog."

Nutzungsbeispiel:

{
  "name": "firecrawl_crawl",
  "arguments": {
    "url": "https://example.com/blog/*",
    "maxDepth": 2,
    "limit": 100,
    "allowExternalLinks": false,
    "deduplicateSimilarURLs": true
  }
}

Gibt zurück:

  • Antwort enthält die Vorgangs-ID zur Statusüberprüfung:
{
  "content": [
    {
      "type": "text",
      "text": "Started crawl for: https://example.com/* with job ID: 550e8400-e29b-41d4-a716-446655440000. Use firecrawl_check_crawl_status to check progress."
    }
  ],
  "isError": false
}

7. Check Crawl Status (firecrawl_check_crawl_status)

Überprüft den Status eines Crawl-Jobs.

{
  "name": "firecrawl_check_crawl_status",
  "arguments": {
    "id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

Gibt zurück:

  • Antwort enthält den Status des Crawl-Jobs:

8. Extract Tool (firecrawl_extract)

Extrahiert strukturierte Informationen von Webseiten mithilfe von LLM-Fähigkeiten. Unterstützt sowohl Cloud-KI als auch selbst gehostete LLM-Extraktion.

Am besten geeignet für:

  • Extrahieren spezifischer strukturierter Daten wie Preise, Namen, Details.

Nicht empfohlen für:

  • Wenn Sie den vollständigen Inhalt einer Seite benötigen (verwenden Sie Scrape)
  • Wenn Sie nicht nach spezifischen strukturierten Daten suchen

Argumente:

  • urls: Array von URLs, aus denen Informationen extrahiert werden sollen
  • prompt: Benutzerdefinierter Prompt für die LLM-Extraktion
  • systemPrompt: System-Prompt zur Anleitung des LLM
  • schema: JSON-Schema für die strukturierte Datenextraktion
  • allowExternalLinks: Extraktion von externen Links erlauben
  • enableWebSearch: Websuche für zusätzlichen Kontext aktivieren
  • includeSubdomains: Subdomains in die Extraktion einbeziehen

Bei Verwendung einer selbst gehosteten Instanz verwendet die Extraktion Ihr konfiguriertes LLM. Für die Cloud-API wird der verwaltete LLM-Dienst von Firecrawl genutzt. Prompt-Beispiel:

"Extrahiere den Produktnamen, Preis und die Beschreibung von diesen Produktseiten."

Nutzungsbeispiel:

{
  "name": "firecrawl_extract",
  "arguments": {
    "urls": ["https://example.com/page1", "https://example.com/page2"],
    "prompt": "Extract product information including name, price, and description",
    "systemPrompt": "You are a helpful assistant that extracts product information",
    "schema": {
      "type": "object",
      "properties": {
        "name": { "type": "string" },
        "price": { "type": "number" },
        "description": { "type": "string" }
      },
      "required": ["name", "price"]
    },
    "allowExternalLinks": false,
    "enableWebSearch": false,
    "includeSubdomains": false
  }
}

Gibt zurück:

  • Extrahierte strukturierte Daten gemäß Ihrem Schema
{
  "content": [
    {
      "type": "text",
      "text": {
        "name": "Example Product",
        "price": 99.99,
        "description": "This is an example product description"
      }
    }
  ],
  "isError": false
}

9. Agent Tool (firecrawl_agent)

Autonomer Web-Recherche-Agent. Dies ist eine separate KI-Agenten-Schicht, die selbstständig im Internet surft, nach Informationen sucht, durch Seiten navigiert und strukturierte Daten basierend auf Ihrer Anfrage extrahiert.

So funktioniert es:

Der Agent führt Websuchen durch, folgt Links, liest Seiten und sammelt autonom Daten. Dies läuft asynchron – es wird sofort eine Job-ID zurückgegeben, und Sie pollen firecrawl_agent_status, um den Abschluss zu prüfen und Ergebnisse abzurufen.

Asynchroner Workflow:

  1. Rufen Sie firecrawl_agent mit Ihrem Prompt/Schema auf → gibt Job-ID zurück
  2. Erledigen Sie andere Aufgaben, während der Agent recherchiert (kann bei komplexen Anfragen Minuten dauern)
  3. Pollen Sie firecrawl_agent_status mit der Job-ID, um den Fortschritt zu prüfen
  4. Wenn der Status "completed" ist, enthält die Antwort die extrahierten Daten

Am besten geeignet für:

  • Komplexe Rechercheaufgaben, bei denen Sie die genauen URLs nicht kennen
  • Datensammlung aus mehreren Quellen
  • Auffinden von Informationen, die über das Web verstreut sind
  • Aufgaben, bei denen Sie während des Wartens auf Ergebnisse andere Arbeiten erledigen können

Nicht empfohlen für:

  • Einfaches Scraping einzelner Seiten, bei denen Sie die URL kennen (verwenden Sie Scrape mit JSON-Format – schneller und günstiger)

Argumente:

  • prompt: Natürlichsprachliche Beschreibung der gewünschten Daten (erforderlich, max. 10.000 Zeichen)
  • urls: Optionales Array von URLs, um den Agenten auf bestimmte Seiten zu fokussieren
  • schema: Optionales JSON-Schema für strukturierte Ausgabe

Prompt-Beispiel:

"Finde die Gründer von Firecrawl und ihre Hintergründe"

Nutzungsbeispiel (Agent starten, dann auf Ergebnisse pollen):

{
  "name": "firecrawl_agent",
  "arguments": {
    "prompt": "Find the top 5 AI startups founded in 2024 and their funding amounts",
    "schema": {
      "type": "object",
      "properties": {
        "startups": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": { "type": "string" },
              "funding": { "type": "string" },
              "founded": { "type": "string" }
            }
          }
        }
      }
    }
  }
}

Dann pollen mit firecrawl_agent_status unter Verwendung der zurückgegebenen Job-ID.

Nutzungsbeispiel (mit URLs – Agent fokussiert sich auf bestimmte Seiten):

{
  "name": "firecrawl_agent",
  "arguments": {
    "urls": ["https://docs.firecrawl.dev", "https://firecrawl.dev/pricing"],
    "prompt": "Compare the features and pricing information from these pages"
  }
}

Gibt zurück:

  • Job-ID zur Statusüberprüfung. Verwenden Sie firecrawl_agent_status, um auf Ergebnisse zu pollen.

10. Check Agent Status (firecrawl_agent_status)

Überprüft den Status eines Agenten-Jobs und ruft Ergebnisse ab, wenn er abgeschlossen ist. Verwenden Sie dies, um nach dem Start eines Agenten auf Ergebnisse zu pollen.

Polling-Muster: Die Agentenrecherche kann bei komplexen Anfragen Minuten dauern. Pollen Sie diesen Endpunkt regelmäßig (z. B. alle 10–30 Sekunden), bis der Status "completed" oder "failed" ist.

{
  "name": "firecrawl_agent_status",
  "arguments": {
    "id": "550e8400-e29b-41d4-a716-446655440000"
  }
}

Mögliche Status:

  • processing: Agent recherchiert noch – später erneut prüfen
  • completed: Recherche abgeschlossen – Antwort enthält die extrahierten Daten
  • failed: Ein Fehler ist aufgetreten

11. Monitor Tools (firecrawl_monitor_*)

Erstellen und verwalten Sie wiederkehrende Seitenmonitore. Monitore führen geplante Scrapes oder Crawls durch, vergleichen jedes Ergebnis mit dem letzten gespeicherten Snapshot und können per Webhook oder E-Mail benachrichtigen.

Am besten geeignet für:

  • Überwachung einer oder weniger Seiten über die Zeit
  • Alarmierung bei bedeutsamen Änderungen mithilfe eines Ziels in einfachem Englisch
  • Nachverfolgung des Prüfverlaufs und seitenbezogener Diffs

Empfohlenes Erstellungsmuster:

Verwenden Sie page oder pages plus goal. Der MCP-Server erstellt die Monitoranfrage mit einem 30-Minuten-Zeitplan, und die API aktiviert automatisch die Beurteilung bedeutsamer Änderungen.

Die Beurteilung bedeutsamer Änderungen läuft automatisch, wenn goal gesetzt ist. Seiten-Webhooks stellen isMeaningful und judgment bei monitor.page-Ereignissen bereit.

Schreiben Sie Ziele als prägnante 2-3-sätzige Monitoranweisungen. Geben Sie an, was einen Alarm auslösen soll, bewahren Sie jeden vom Benutzer vorgegebenen Umfang und fügen Sie nur dann absichtsspezifische Ausschlüsse hinzu, wenn sie aus der Anfrage offensichtlich sind. Generisches Rauschen wie Leerzeichen, rein formatbezogene Änderungen, Anfrage-IDs, Tracking-Parameter, generische Metadaten und nicht relevanter Seiten-Chrome wird bereits vom Beurteiler behandelt, wiederholen Sie dies also nicht in jedem Ziel. Wenn der Benutzer vage ist, halten Sie das Ziel breit; wenn er umfassende Überwachung oder "jede Änderung" wünscht, bewahren Sie dies. Wenn der Benutzer sagt, dass ihm etwas egal ist, schließen Sie dies ausdrücklich ein.

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "page": "https://example.com/pricing",
    "goal": "Alert when pricing, packaging, or launch messaging changes."
  }
}

Mehrere Seiten mit Webhooks:

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "pages": ["https://example.com/pricing", "https://example.com/changelog"],
    "goal": "Alert when pricing, packaging, or launch messaging changes.",
    "webhookUrl": "https://example.com/webhooks/firecrawl"
  }
}

Erweiterte Erstellungsanfragen:

Übergeben Sie body, wenn Sie Crawl-Ziele, JSON-Änderungsverfolgung, benutzerdefinierte Aufbewahrung oder explizite judgeEnabled-Steuerung benötigen.

{
  "name": "firecrawl_monitor_create",
  "arguments": {
    "body": {
      "name": "Docs monitor",
      "schedule": { "text": "hourly", "timezone": "UTC" },
      "goal": "Alert when docs pages add, remove, or materially change API behavior.",
      "targets": [{ "type": "crawl", "url": "https://example.com/docs" }]
    }
  }
}

Weitere Monitor-Tools:

  • firecrawl_monitor_list: Monitore auflisten.
  • firecrawl_monitor_get: Einen Monitor abrufen.
  • firecrawl_monitor_update: Felder aktualisieren, einschließlich goal, judgeEnabled, webhook und notification.
  • firecrawl_monitor_run: Jetzt eine Prüfung auslösen.
  • firecrawl_monitor_checks: Prüfungen auflisten, optional nach Status gefiltert.
  • firecrawl_monitor_check: Seitenergebnisse abrufen, einschließlich diff, snapshot, judgment.meaningful und judgment.meaningfulChanges.

Protokollierungssystem

Der Server umfasst umfassende Protokollierung:

  • Betriebsstatus und -fortschritt
  • Leistungsmetriken
  • Überwachung der Credit-Nutzung
  • Ratenlimit-Verfolgung
  • Fehlerzustände

Beispielprotokollmeldungen:

[INFO] Firecrawl MCP Server initialized successfully
[INFO] Starting scrape for URL: https://example.com
[INFO] Batch operation queued with ID: batch_1
[WARNING] Credit usage has reached warning threshold
[ERROR] Rate limit exceeded, retrying in 2s...

Fehlerbehandlung

Der Server bietet robuste Fehlerbehandlung:

  • Automatische Wiederholungsversuche bei vorübergehenden Fehlern
  • Ratenlimit-Behandlung mit Backoff
  • Detaillierte Fehlermeldungen
  • Warnungen zur Credit-Nutzung
  • Netzwerkresilienz

Beispiel einer Fehlerantwort:

{
  "content": [
    {
      "type": "text",
      "text": "Error: Rate limit exceeded. Retrying in 2 seconds..."
    }
  ],
  "isError": true
}

Entwicklung

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

Mitwirken

  1. Forken Sie das Repository
  2. Erstellen Sie Ihren Feature-Branch
  3. Führen Sie Tests aus: npm test
  4. Reichen Sie einen Pull-Request ein

Dank an die Mitwirkenden

Dank an @vrknetha, @cawstudios für die erste Implementierung!

Dank an MCP.so und Klavis AI für das Hosting und an @gstarwd, @xiangkaiz und @zihaolin96 für die Integration unseres Servers.

Lizenz

MIT-Lizenz – siehe LICENSE-Datei für Details