Firecrawl

officiel

Extraire des données web avec Firecrawl

Que pouvez-vous faire avec Firecrawl MCP ?

  • Extraire des données structurées d'une URL connue — Demandez à l'IA d'extraire des champs spécifiques (ex. : nom, prix) d'une page en utilisant firecrawl_scrape avec un schéma JSON.
  • Rechercher des informations sur le web — Demandez à l'IA de trouver des pages pertinentes sur le web avec firecrawl_search, en extrayant éventuellement le contenu complet des résultats.
  • Cartographier un site web pour découvrir ses URL — Demandez à l'IA de lister toutes les URL indexées d'un domaine avec firecrawl_map avant de décider quelles pages extraire.
  • Lancer une recherche autonome multi-sources — Demandez à l'IA de démarrer une tâche firecrawl_agent qui navigue et collecte des données de manière indépendante, puis interrogez firecrawl_agent_status pour obtenir les résultats.
  • Interagir avec une page dynamique — Demandez à l'IA de cliquer, saisir du texte ou naviguer sur une page en utilisant firecrawl_interact avec une URL ou une session d'extraction existante.

Documentation

Serveur MCP Firecrawl

Un serveur Model Context Protocol (MCP) qui apporte Firecrawl aux agents IA compatibles MCP — recherchez, scrapez et interagissez avec le web en direct pour un contexte propre et prêt pour l'agent.

Un grand merci à @vrknetha, @knacklabs pour l'implémentation initiale !

Fonctionnalités

  • Rechercher sur le web et obtenir le contenu complet des pages
  • Scraper n'importe quelle URL en données propres et structurées
  • Interagir avec les pages — cliquer, naviguer et opérer
  • Recherche approfondie avec un agent autonome
  • Nouvelles tentatives automatiques et limitation de débit
  • Support cloud et auto-hébergé
  • Support SSE

Essayez notre serveur MCP sur le playground de MCP.so ou sur Klavis AI.

Installation

MCP hébergé (niveau gratuit sans clé)

Connectez-vous au serveur hébergé distant sans configuration :

https://mcp.firecrawl.dev/v2/mcp

Sur le niveau gratuit sans clé, scrape, search et interact fonctionnent sans clé API (débit limité). D'autres outils tels que crawl, map, agent et extract nécessitent toujours une clé.

Préférez une clé API ou OAuth chaque fois que l'humain peut s'inscrire. Cela débloque l'ensemble complet d'outils et des limites plus élevées. Avec une clé, utilisez :

https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp

Consultez la documentation du serveur MCP et le guide d'intégration de l'agent pour les détails de configuration.

Point de terminaison recherche seule

Une surface en lecture seule, recherche seule, est également hébergée à :

https://mcp.firecrawl.dev/v2/mcp-search

Elle expose un ensemble fixe de six outils en lecture seule : firecrawl_search et les cinq outils firecrawl_research_*. Elle n'effectue aucune récupération de contenu de page et possède sa propre identité OAuth ; le point de terminaison complet ci-dessus est inchangé. Voir docs/search-profile.md pour le contrat complet.

Exécution avec npx

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

Installation manuelle

npm install -g firecrawl-mcp

Exécution sur Cursor

Configuration de Cursor 🖥️ Remarque : Nécessite Cursor version 0.45.6+ Pour les instructions de configuration les plus à jour, veuillez vous référer à la documentation officielle de Cursor sur la configuration des serveurs MCP : Guide de configuration du serveur MCP Cursor

Pour configurer Firecrawl MCP dans Cursor v0.48.6

  1. Ouvrez les paramètres de Cursor
  2. Allez dans Fonctionnalités > Serveurs MCP
  3. Cliquez sur "+ Ajouter un nouveau serveur MCP global"
  4. Entrez le code suivant :
    {
      "mcpServers": {
        "firecrawl-mcp": {
          "command": "npx",
          "args": ["-y", "firecrawl-mcp"],
          "env": {
            "FIRECRAWL_API_KEY": "YOUR-API-KEY"
          }
        }
      }
    }
    

Pour configurer Firecrawl MCP dans Cursor v0.45.6

  1. Ouvrez les paramètres de Cursor
  2. Allez dans Fonctionnalités > Serveurs MCP
  3. Cliquez sur "+ Ajouter un nouveau serveur MCP"
  4. Entrez ce qui suit :
    • Nom : "firecrawl-mcp" (ou votre nom préféré)
    • Type : "command"
    • Commande : env FIRECRAWL_API_KEY=your-api-key npx -y firecrawl-mcp

Si vous utilisez Windows et rencontrez des problèmes, essayez cmd /c "set FIRECRAWL_API_KEY=your-api-key && npx -y firecrawl-mcp"

Remplacez your-api-key par votre clé API Firecrawl. Si vous n'en avez pas encore, vous pouvez créer un compte et l'obtenir depuis https://www.firecrawl.dev/app/api-keys

Après l'ajout, actualisez la liste des serveurs MCP pour voir les nouveaux outils. L'agent Composer utilisera automatiquement Firecrawl MCP lorsque cela est approprié, mais vous pouvez le demander explicitement en décrivant vos besoins de scraping web. Accédez au Composer via Commande+L (Mac), sélectionnez "Agent" à côté du bouton de soumission, et entrez votre requête.

Exécution sur Windsurf

Ajoutez ceci à votre ./codeium/windsurf/model_config.json :

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

Exécution avec le mode local HTTP diffusable

Pour exécuter le serveur en utilisant HTTP diffusable localement au lieu du transport stdio par défaut :

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

Utilisez l'url : http://localhost:3000/mcp

Installation via Smithery (Héritage)

Pour installer Firecrawl pour Claude Desktop automatiquement via Smithery :

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

Exécution sur VS Code

Pour une installation en un clic, cliquez sur l'un des boutons d'installation ci-dessous...

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

Pour une installation manuelle, ajoutez le bloc JSON suivant à votre fichier de paramètres utilisateur (JSON) dans VS Code. Vous pouvez le faire en appuyant sur Ctrl + Shift + P et en tapant Preferences: Open User Settings (JSON).

{
  "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}"
        }
      }
    }
  }
}

Optionnellement, vous pouvez l'ajouter à un fichier appelé .vscode/mcp.json dans votre espace de travail. Cela vous permettra de partager la configuration avec d'autres :

{
  "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}"
      }
    }
  }
}

Configuration

Variables d'environnement

Requis pour l'API Cloud

  • FIRECRAWL_API_KEY : Votre clé API Firecrawl
    • Requis lors de l'utilisation de l'API cloud (par défaut)
    • Optionnel lors de l'utilisation d'une instance auto-hébergée avec FIRECRAWL_API_URL
  • FIRECRAWL_API_URL (Optionnel) : Point de terminaison API personnalisé pour les instances auto-hébergées
    • Exemple : https://firecrawl.your-domain.com
    • S'il n'est pas fourni, l'API cloud sera utilisée (nécessite une clé API)

MCP OAuth (Jetons d'accès porteurs)

Firecrawl hébergé peut émettre des jetons d'accès OAuth (fco_…) via le serveur d'autorisation sur firecrawl.dev. Ce serveur MCP transmet les informations d'identification qu'il résout à l'API Firecrawl en tant que Authorization: Bearer ….

  • Transports de flux HTTP (CLOUD_SERVICE=true, HTTP_STREAMABLE_SERVER=true ou SSE_LOCAL=true) : Les clients doivent envoyer Authorization: Bearer <fco_access_token> sur les requêtes MCP. Un jeton porteur OAuth a priorité sur x-firecrawl-api-key / x-api-key lorsque les deux sont présents.
  • stdio : Utilisez FIRECRAWL_OAUTH_TOKEN pour un jeton d'accès statique, ou continuez à utiliser FIRECRAWL_API_KEY pour une clé API.

Utilisez uniquement les jetons d'accès (fco_…). Les jetons de rafraîchissement (fcr_…) doivent être échangés au point de terminaison du jeton, et non transmis à l'API scrape/search.

Surface de recherche seule (hébergée)

En mode hébergé (CLOUD_SERVICE=true), une seconde instance in-processus sert le point de terminaison recherche seule. Le service groupé a un contrat de déploiement fixe : nginx route /v2/mcp-search vers l'instance sur le port local 3001, et l'identifiant de ressource protégée OAuth est https://mcp.firecrawl.dev/v2/mcp-search.

FIRECRAWL_MCP_SEARCH_ENABLED (par défaut true) est la bascule opérationnelle prise en charge ; définissez-la sur false pour empêcher le démarrage de l'instance de recherche. Le processus Node accepte également FIRECRAWL_MCP_SEARCH_PORT, FIRECRAWL_MCP_SEARCH_ENDPOINT et FIRECRAWL_MCP_SEARCH_RESOURCE_URL pour les tests isolés. Ces substitutions ne reconfigurent pas les routes nginx groupées ou la liste d'autorisation du serveur d'autorisation et ne doivent pas être utilisées indépendamment dans le déploiement hébergé.

L'instance de recherche nécessite une authentification pour chaque requête (y compris tools/list) et rejette les jetons OAuth dont l'audience ne correspond pas à sa propre ressource.

Exemples de configuration

Pour l'utilisation de l'API cloud :

export FIRECRAWL_API_KEY=your-api-key

Pour une instance auto-hébergée :

# 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

Utilisation avec Claude Desktop

Ajoutez ceci à votre claude_desktop_config.json :

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

Comment choisir un outil

Utilisez ce guide pour sélectionner le bon outil pour votre tâche :

  • Si vous connaissez l'URL exacte que vous voulez : utilisez scrape (avec le format JSON pour les données structurées)
  • Si vous avez plusieurs URL connues : appelez scrape pour chaque URL. Si vous avez spécifiquement besoin d'une opération API par lot, utilisez le point de terminaison par lot de l'API Firecrawl en dehors de MCP.
  • Si vous avez besoin de découvrir des URL sur un site : utilisez map
  • Si vous voulez rechercher des informations sur le web : utilisez search
  • Si vous avez besoin d'une recherche complexe à travers plusieurs sources inconnues : utilisez agent
  • Si vous voulez analyser un site entier ou une section : utilisez crawl (avec des limites !)
  • Si vous avez besoin d'une automatisation interactive du navigateur (cliquer, taper, naviguer) : utilisez interact avec une URL pour une nouvelle page, ou scrape + interact lorsque vous avez déjà scrapé la page ou avez besoin d'un contrôle de scrape plus strict

Tableau de référence rapide

OutilIdéal pourRenvoie
scrapeContenu d'une seule pageJSON (préféré) ou markdown
interactInteragir avec une URL ou une page scrapéeRésultat d'exécution + scrapeId pour le mode URL
mapDécouvrir des URL sur un siteURL[]
crawlExtraction multi-pages (avec limites)statut/données finales du crawl après interrogation interne
parseFichiers et références de téléchargement hébergéesmarkdown, JSON ou sortie document
extractExtraction structurée à partir d'URLDonnées structurées JSON
searchRecherche web d'informationsresults[]
agentRecherche multi-sources complexeJSON (données structurées)
monitorVérifications de page récurrentesmétadonnées et différences de monitor/check
researchRecherche d'articles et de dépôts GitHubrésultats de recherche et correspondances de dépôt

Guide de sélection du format

Lors de l'utilisation de scrape, choisissez le bon format :

  • Format JSON (recommandé pour la plupart des cas) : Utilisez lorsque vous avez besoin de données spécifiques d'une page. Définissez un schéma basé sur ce que vous devez extraire. Cela maintient les réponses petites et évite le débordement de la fenêtre de contexte.
  • Format Markdown (à utiliser avec parcimonie) : Uniquement lorsque vous avez réellement besoin du contenu complet de la page, comme lire un article entier pour le résumer ou analyser la structure de la page.

Outils disponibles

1. Outil Scrape (firecrawl_scrape)

Scrape le contenu d'une seule URL avec des options avancées.

Idéal pour :

  • L'extraction de contenu d'une seule page, lorsque vous savez exactement quelle page contient l'information.

Non recommandé pour :

  • Extraire du contenu de plusieurs pages (utilisez des appels scrape répétés pour les URL connues, ou map + scrape pour découvrir d'abord les URL, ou crawl pour le contenu complet de la page)
  • Lorsque vous n'êtes pas sûr de la page qui contient l'information (utilisez search)

Erreurs courantes :

  • Passer une liste d'URL à un seul appel scrape. Appelez scrape une fois par URL dans MCP. Si vous avez spécifiquement besoin d'une opération API par lot, utilisez le point de terminaison par lot de l'API Firecrawl en dehors de MCP.
  • Utiliser le format markdown par défaut (utilisez le format JSON pour extraire uniquement ce dont vous avez besoin).

Choisir le bon format :

  • Format JSON (préféré) : Pour la plupart des cas d'utilisation, utilisez le format JSON avec un schéma pour extraire uniquement les données spécifiques nécessaires. Cela maintient les réponses ciblées et empêche le débordement de la fenêtre de contexte.
  • Format Markdown : Uniquement lorsque la tâche nécessite réellement le contenu complet de la page (par exemple, résumer un article entier, analyser la structure de la page).

Exemple d'invite :

"Obtenez les détails du produit depuis https://example.com/product."

Exemple d'utilisation (format JSON - préféré) :

{
  "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"]
        }
      }
    ]
  }
}

Exemple d'utilisation (format markdown - lorsque le contenu complet est nécessaire) :

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

Exemple d'utilisation (format branding - extraire l'identité de marque) :

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

Format Branding : Extrait l'identité de marque complète (couleurs, polices, typographie, espacement, logo, composants UI) pour l'analyse de conception ou la réplication de style. Confidentialité : Définissez redactPII: true pour renvoyer le contenu avec les informations personnellement identifiables expurgées.

Renvoie :

  • Données structurées JSON, markdown, profil de marque ou autres formats comme spécifié.

2. Outil Map (firecrawl_map)

Cartographiez un site web pour découvrir toutes les URL indexées sur le site.

Idéal pour :

  • Découvrir des URL sur un site web avant de décider quoi scraper
  • Trouver des sections spécifiques d'un site web

Non recommandé pour :

  • Lorsque vous connaissez déjà l'URL spécifique dont vous avez besoin (utilisez scrape)
  • Lorsque vous avez besoin du contenu des pages (utilisez scrape après la cartographie)

Erreurs courantes :

  • Utiliser crawl pour découvrir des URL au lieu de map

Exemple d'invite :

"Listez toutes les URL sur exemple.com."

Exemple d'utilisation :

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

Renvoie :

  • Tableau d'URL trouvées sur le site

3. Outil Search (firecrawl_search)

Recherchez sur le web et extrayez éventuellement le contenu des résultats de recherche.

Idéal pour :

  • Trouver des informations spécifiques sur plusieurs sites web, lorsque vous ne savez pas quel site web a l'information.
  • Lorsque vous avez besoin du contenu le plus pertinent pour une requête

Non recommandé pour :

  • Lorsque vous savez déjà quel site web scraper (utilisez scrape)
  • Lorsque vous avez besoin d'une couverture complète d'un seul site web (utilisez map ou crawl)

Erreurs courantes :

  • Utiliser crawl ou map pour des questions ouvertes (utilisez search à la place)

Exemple d'utilisation :

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

Définissez highlights sur true pour demander des extraits pertinents à la requête ou false pour conserver les extraits de recherche d'origine. Omettez-le pour utiliser le comportement par défaut de l'API.

Renvoie :

  • Un tableau de résultats de recherche (avec contenu récupéré en option), plus un champ id. Passez ce id à firecrawl_search_feedback après avoir utilisé les résultats pour être remboursé d'1 crédit (la recherche coûte 2) et améliorer la qualité de la recherche.

Exemple d'invite :

« Trouve les derniers articles de recherche sur l'IA publiés en 2023. »

3b. Outil de retour sur la recherche (firecrawl_search_feedback)

Envoie un retour structuré sur un résultat firecrawl_search précédent. Le premier retour par identifiant de recherche rembourse 1 crédit et améliore la qualité de recherche de Firecrawl. Idempotent par identifiant de recherche.

Appelez ceci après chaque recherche que vous utilisez réellement (ou qui n'a pas aidé). Un retour mauvais/partiel avec missingContent est tout aussi précieux qu'un bon retour.

Désinscription : définissez FIRECRAWL_NO_SEARCH_FEEDBACK=1 (ou FIRECRAWL_DISABLE_SEARCH_FEEDBACK=1) dans l'environnement au démarrage du serveur MCP. L'outil firecrawl_search_feedback ne sera pas enregistré, donc les agents ne pourront pas l'appeler. Les administrateurs d'équipe peuvent également désactiver le retour côté serveur ; dans ce cas, l'outil est enregistré mais renvoie toujours feedbackErrorCode: "TEAM_OPTED_OUT".

Champ le plus important : missingContent. Il s'agit d'un tableau de contenus spécifiques que l'agent s'attendait à trouver mais n'a pas trouvés. Une entrée par sujet manquant — celles-ci s'agrègent entre les équipes et nous indiquent quoi indexer ensuite.

Plafond de remboursement quotidien (par équipe, par jour UTC, 100 crédits par défaut). Une fois que le creditsRefundedToday d'une équipe atteint dailyRefundCap, les soumissions suivantes enregistrent toujours le retour mais ne remboursent plus de crédits. La réponse définit dailyCapReached: true. Les agents doivent cesser d'appeler cet outil pour le reste du jour UTC lorsqu'ils voient ce drapeau.

Exemple d'utilisation :

{
  "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'"
  }
}

Renvoie :

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

3c. Outil de retour générique (firecrawl_feedback)

Envoie un retour structuré pour une tâche de point de terminaison v2 terminée via /v2/feedback. Utilisez ceci pour un retour au niveau du point de terminaison sur les tâches scrape, parse, map ou search. Pour la qualité des résultats de recherche spécifiquement, préférez firecrawl_search_feedback car il inclut des conseils spécifiques à la recherche.

Gardez le retour concis : utilisez des codes de problème, des étiquettes, de courtes notes, des URL, des numéros de page et de petits objets de métadonnées. N'incluez pas les sorties brutes de récupération/analyse.

Désinscription : définissez FIRECRAWL_NO_ENDPOINT_FEEDBACK=1 (ou FIRECRAWL_DISABLE_ENDPOINT_FEEDBACK=1) dans l'environnement au démarrage du serveur MCP. L'outil firecrawl_feedback ne sera pas enregistré, donc les agents ne pourront pas l'appeler.

Exemple d'utilisation :

{
  "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"
    }
  }
}

Renvoie :

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

4. Outil d'exploration (firecrawl_crawl)

Démarre une tâche d'exploration, interroge jusqu'à ce qu'elle atteigne un état terminal et renvoie l'état/les données d'exploration finaux.

Idéal pour :

  • Extraire du contenu de plusieurs pages liées, lorsque vous avez besoin d'une couverture complète.

Non recommandé pour :

  • Extraire du contenu d'une seule page (utilisez la récupération)
  • Lorsque les limites de jetons sont un problème (utilisez map + récupération pour un contrôle plus strict)
  • Lorsque vous avez besoin de résultats rapides (l'exploration peut être lente)

Avertissement : Les réponses d'exploration peuvent être très volumineuses et dépasser les limites de jetons. Limitez la profondeur d'exploration et le nombre de pages, ou utilisez map + récupération pour un contrôle plus strict.

Erreurs courantes :

  • Définir une limite ou maxDiscoveryDepth trop élevée (provoque un débordement de jetons)
  • Utiliser l'exploration pour une seule page (utilisez plutôt la récupération)

Exemple d'invite :

« Récupère tous les articles de blog des deux premiers niveaux de exemple.com/blog. »

Exemple d'utilisation :

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

Renvoie :

  • État et données d'exploration finaux après interrogation interne, y compris id, status, completed, total, creditsUsed, expiresAt, next et data. Utilisez le id renvoyé avec firecrawl_check_crawl_status si vous devez revérifier la tâche plus tard.

5. Vérifier l'état de l'exploration (firecrawl_check_crawl_status)

Vérifiez l'état et les résultats d'une tâche d'exploration existante par ID.

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

Renvoie :

  • La réponse inclut l'état de la tâche d'exploration :

6. Outil d'analyse (firecrawl_parse)

Analysez des fichiers locaux ou des références de téléchargement hébergées avec le point de terminaison /v2/parse de Firecrawl.

Idéal pour : les PDF, documents Word, feuilles de calcul, fichiers HTML et autres documents nécessitant une sortie markdown ou JSON structuré. Le MCP hébergé prend en charge un flux de téléchargement-référence en deux étapes ; les lectures directes de fichiers locaux nécessitent un FIRECRAWL_API_URL auto-hébergé.

Non recommandé pour : les URL distantes (utilisez la récupération), plusieurs fichiers en un seul appel (appelez l'analyse une fois par fichier) ou les actions uniquement navigateur telles que les captures d'écran et les clics.

Flux MCP hébergé : Le MCP hébergé ne peut pas lire directement le système de fichiers de l'appelant. Appelez firecrawl_parse avec filePath pour recevoir une commande de téléchargement de courte durée et nextToolCall, téléchargez le fichier localement, puis appelez à nouveau firecrawl_parse avec le uploadRef renvoyé. La création de l'URL de téléchargement hébergée nécessite une authentification Firecrawl ou une éligibilité sans clé. En mode npx firecrawl-mcp local, l'analyse directe de fichiers nécessite actuellement FIRECRAWL_API_URL pointant vers une API Firecrawl auto-hébergée ; un serveur local avec clé API cloud uniquement ne peut pas lire et télécharger des fichiers via cet outil.

Exemple d'utilisation :

{
  "name": "firecrawl_parse",
  "arguments": {
    "filePath": "/absolute/path/to/document.pdf",
    "formats": ["markdown"],
    "parsers": ["pdf"],
    "zeroDataRetention": true
  }
}

Renvoie : Contenu du document analysé ou instructions de téléchargement hébergé avec un nextToolCall.

7. Outil d'extraction (firecrawl_extract)

Extrayez des informations structurées de pages web en utilisant les capacités LLM. Prend en charge à la fois l'IA cloud et l'extraction LLM auto-hébergée.

Idéal pour :

  • Extraire des données structurées spécifiques comme les prix, les noms, les détails.

Non recommandé pour :

  • Lorsque vous avez besoin du contenu complet d'une page (utilisez la récupération)
  • Lorsque vous ne cherchez pas de données structurées spécifiques

Arguments :

  • urls : Tableau d'URLs depuis lesquelles extraire des informations
  • prompt : Invite personnalisée pour l'extraction LLM
  • systemPrompt : Invite système pour guider le LLM
  • schema : Schéma JSON pour l'extraction de données structurées
  • allowExternalLinks : Autoriser l'extraction à partir de liens externes
  • enableWebSearch : Activer la recherche web pour un contexte supplémentaire
  • includeSubdomains : Inclure les sous-domaines dans l'extraction

Lors de l'utilisation d'une instance auto-hébergée, l'extraction utilisera votre LLM configuré. Pour l'API cloud, elle utilise le service LLM géré de Firecrawl. Exemple d'invite :

« Extrais le nom du produit, le prix et la description de ces pages produits. »

Exemple d'utilisation :

{
  "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
  }
}

Renvoie :

  • Données structurées extraites telles que définies par votre schéma
{
  "content": [
    {
      "type": "text",
      "text": {
        "name": "Example Product",
        "price": 99.99,
        "description": "This is an example product description"
      }
    }
  ],
  "isError": false
}

8. Outil Agent (firecrawl_agent)

Agent de recherche web autonome. Il s'agit d'une couche d'agent IA distincte qui navigue indépendamment sur Internet, recherche des informations, navigue à travers les pages et extrait des données structurées en fonction de votre requête.

Comment ça fonctionne :

L'agent effectue des recherches web, suit des liens, lit des pages et rassemble des données de manière autonome. Cela s'exécute de manière asynchrone - il renvoie un ID de tâche immédiatement, et vous interrogez firecrawl_agent_status pour vérifier quand c'est terminé et récupérer les résultats.

Flux de travail asynchrone :

  1. Appelez firecrawl_agent avec votre invite/schéma → renvoie l'ID de tâche
  2. Faites d'autres travaux pendant que l'agent recherche (peut prendre des minutes pour les requêtes complexes)
  3. Interrogez firecrawl_agent_status avec l'ID de tâche pour vérifier la progression
  4. Lorsque le statut est « completed », la réponse inclut les données extraites

Idéal pour :

  • Les tâches de recherche complexes où vous ne connaissez pas les URL exactes
  • La collecte de données multi-sources
  • La recherche d'informations dispersées sur le web
  • Les tâches où vous pouvez faire autre chose en attendant les résultats

Non recommandé pour :

  • La récupération simple d'une seule page où vous connaissez l'URL (utilisez la récupération avec le format JSON - plus rapide et moins cher)

Arguments :

  • prompt : Description en langage naturel des données que vous voulez (obligatoire, max 10 000 caractères)
  • urls : Tableau optionnel d'URLs pour concentrer l'agent sur des pages spécifiques
  • schema : Schéma JSON optionnel pour une sortie structurée

Exemple d'invite :

« Trouve les fondateurs de Firecrawl et leurs parcours »

Exemple d'utilisation (démarrer l'agent, puis interroger pour les résultats) :

{
  "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" }
            }
          }
        }
      }
    }
  }
}

Puis interrogez avec firecrawl_agent_status en utilisant l'ID de tâche renvoyé.

Exemple d'utilisation (avec des URLs - l'agent se concentre sur des pages spécifiques) :

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

Renvoie :

  • ID de tâche pour la vérification de l'état. Utilisez firecrawl_agent_status pour interroger les résultats.

9. Vérifier l'état de l'agent (firecrawl_agent_status)

Vérifiez l'état d'une tâche d'agent et récupérez les résultats lorsqu'elle est terminée. Utilisez ceci pour interroger les résultats après avoir démarré un agent.

Modèle d'interrogation : La recherche de l'agent peut prendre des minutes pour les requêtes complexes. Interrogez ce point de terminaison périodiquement (par exemple, toutes les 10-30 secondes) jusqu'à ce que le statut soit « completed » ou « failed ».

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

Statuts possibles :

  • processing : L'agent est toujours en train de rechercher - revenez plus tard
  • completed : Recherche terminée - la réponse inclut les données extraites
  • failed : Une erreur s'est produite

10. Outil d'interaction (firecrawl_interact)

Interagissez avec une nouvelle URL ou avec une page qui a déjà été ouverte par firecrawl_scrape.

Idéal pour : Cliquer, taper, naviguer et extraire l'état des pages dynamiques sans restaurer les outils de navigateur obsolètes.

Options d'utilisation :

  • Passez url pour récupérer et ouvrir une page pour interaction en un seul appel MCP.
  • Passez scrapeId pour continuer à interagir avec une page récupérée existante.
  • Passez exactement l'un de url ou scrapeId, plus soit prompt soit code.

Exemple d'utilisation :

{
  "name": "firecrawl_interact",
  "arguments": {
    "url": "https://example.com",
    "prompt": "Click the pricing link and summarize the visible plans"
  }
}

Renvoie : Résultat de l'interaction et, pour le mode URL, le scrapeId dérivé pour le suivi ou le nettoyage.

11. Outil d'arrêt d'interaction (firecrawl_interact_stop)

Arrêtez une session d'interaction pour une page récupérée lorsque vous avez fini d'interagir.

{
  "name": "firecrawl_interact_stop",
  "arguments": {
    "scrapeId": "scrape-id-here"
  }
}

12. Outils de recherche (firecrawl_research_*)

Recherchez et inspectez des articles et des dépôts GitHub via les outils MCP de recherche.

Outils de recherche disponibles :

  • firecrawl_research_search_papers : rechercher des articles de recherche.
  • firecrawl_research_inspect_paper : inspecter un article.
  • firecrawl_research_related_papers : trouver des articles connexes.
  • firecrawl_research_read_paper : lire le contenu d'un article.
  • firecrawl_research_search_github : rechercher des dépôts GitHub.

Idéal pour : Les flux de travail de revue de littérature, de consultation d'articles et de découverte de dépôts où l'agent a besoin d'une surface de recherche ciblée au lieu du web scraping général.

13. Outils de surveillance (firecrawl_monitor_*)

Créez et gérez des moniteurs de page récurrents. Les moniteurs exécutent des récupérations ou explorations planifiées, comparent chaque résultat avec le dernier instantané conservé et peuvent notifier par webhook ou email.

Idéal pour :

  • Surveiller une page ou quelques pages au fil du temps
  • Alerter sur les changements significatifs en utilisant un objectif en langage clair
  • Suivre l'historique des vérifications et les différences au niveau de la page

Modèle de création recommandé :

Utilisez page ou pages plus goal. Le serveur MCP construit la demande de moniteur avec un planning de 30 minutes et l'API active automatiquement le jugement de changement significatif.

Le jugement de changement significatif s'exécute automatiquement lorsque goal est défini. Les webhooks de page exposent isMeaningful et judgment lors des événements monitor.page.

Rédigez les objectifs sous forme d'instructions de surveillance concises de 2-3 phrases. Dites ce qui doit déclencher une alerte, préservez toute portée donnée par l'utilisateur et incluez des exclusions spécifiques à l'intention uniquement lorsque cela est évident d'après la demande. Le bruit générique tel que les espaces, les changements de formatage uniquement, les ID de requête, les paramètres de suivi, les métadonnées génériques et le chrome de page non pertinent est déjà géré par le juge, donc ne le répétez pas dans chaque objectif. Si l'utilisateur est vague, gardez l'objectif large ; s'il demande une surveillance large ou « tout changement », préservez cela. Si l'utilisateur dit qu'il ne se soucie pas de quelque chose, incluez-le explicitement.

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

Plusieurs pages avec 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"
  }
}

Demandes de création avancées :

Passez body lorsque vous avez besoin de cibles d'exploration, de suivi des changements JSON, de rétention personnalisée ou de contrôle explicite judgeEnabled.

{
  "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" }]
    }
  }
}

Autres outils de surveillance :

  • firecrawl_monitor_list : lister les moniteurs.
  • firecrawl_monitor_get : obtenir un moniteur.
  • firecrawl_monitor_update : mettre à jour les champs, y compris goal, judgeEnabled, webhook et notification.
  • firecrawl_monitor_run : déclencher une vérification maintenant.
  • firecrawl_monitor_delete : supprimer un moniteur (destructif ; n'appeler que lorsque l'utilisateur a l'intention de le supprimer).
  • firecrawl_monitor_checks : lister les vérifications, éventuellement filtrées par statut.
  • firecrawl_monitor_check : obtenir les résultats au niveau de la page, y compris diff, snapshot, judgment.meaningful et judgment.meaningfulChanges.

Système de journalisation

Le serveur inclut une journalisation complète :

  • Statut et progression des opérations
  • Métriques de performance
  • Suivi des limites de débit
  • Conditions d'erreur

Exemples de messages de journalisation :

[INFO] Firecrawl MCP Server initialized successfully
[INFO] Starting scrape for URL: https://example.com
[ERROR] Rate limit exceeded

Gestion des erreurs

Le serveur fournit une gestion robuste des erreurs :

  • Erreurs de limite de débit de l'API remontées au client MCP
  • Messages d'erreur détaillés
  • Résilience réseau

Exemple de réponse d'erreur :

{
  "content": [
    {
      "type": "text",
      "text": "Error: Rate limit exceeded"
    }
  ],
  "isError": true
}

Développement

# Install dependencies
npm install

# Build
npm run build

# Run tests
npm test

Contribuer

  1. Forker le dépôt
  2. Créer votre branche de fonctionnalité
  3. Exécuter les tests : npm test
  4. Soumettre une pull request

Remerciements aux contributeurs

Merci à @vrknetha, @cawstudios pour l'implémentation initiale !

Merci à MCP.so et Klavis AI pour l'hébergement et à @gstarwd, @xiangkaiz et @zihaolin96 pour l'intégration de notre serveur.

Licence

Licence MIT - voir le fichier LICENSE pour plus de détails