Firecrawl
officielExtraire 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_scrapeavec 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_mapavant de décider quelles pages extraire. - Lancer une recherche autonome multi-sources — Demandez à l'IA de démarrer une tâche
firecrawl_agentqui navigue et collecte des données de manière indépendante, puis interrogezfirecrawl_agent_statuspour 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_interactavec 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
- Ouvrez les paramètres de Cursor
- Allez dans Fonctionnalités > Serveurs MCP
- Cliquez sur "+ Ajouter un nouveau serveur MCP global"
- 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
- Ouvrez les paramètres de Cursor
- Allez dans Fonctionnalités > Serveurs MCP
- Cliquez sur "+ Ajouter un nouveau serveur MCP"
- 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...
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)
- Exemple :
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=trueouSSE_LOCAL=true) : Les clients doivent envoyerAuthorization: Bearer <fco_access_token>sur les requêtes MCP. Un jeton porteur OAuth a priorité surx-firecrawl-api-key/x-api-keylorsque les deux sont présents. - stdio : Utilisez
FIRECRAWL_OAUTH_TOKENpour un jeton d'accès statique, ou continuez à utiliserFIRECRAWL_API_KEYpour 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
| Outil | Idéal pour | Renvoie |
|---|---|---|
| scrape | Contenu d'une seule page | JSON (préféré) ou markdown |
| interact | Interagir avec une URL ou une page scrapée | Résultat d'exécution + scrapeId pour le mode URL |
| map | Découvrir des URL sur un site | URL[] |
| crawl | Extraction multi-pages (avec limites) | statut/données finales du crawl après interrogation interne |
| parse | Fichiers et références de téléchargement hébergées | markdown, JSON ou sortie document |
| extract | Extraction structurée à partir d'URL | Données structurées JSON |
| search | Recherche web d'informations | results[] |
| agent | Recherche multi-sources complexe | JSON (données structurées) |
| monitor | Vérifications de page récurrentes | métadonnées et différences de monitor/check |
| research | Recherche d'articles et de dépôts GitHub | ré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 ceidàfirecrawl_search_feedbackaprè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,nextetdata. Utilisez leidrenvoyé avecfirecrawl_check_crawl_statussi 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 informationsprompt: Invite personnalisée pour l'extraction LLMsystemPrompt: Invite système pour guider le LLMschema: Schéma JSON pour l'extraction de données structuréesallowExternalLinks: Autoriser l'extraction à partir de liens externesenableWebSearch: Activer la recherche web pour un contexte supplémentaireincludeSubdomains: 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 :
- Appelez
firecrawl_agentavec votre invite/schéma → renvoie l'ID de tâche - Faites d'autres travaux pendant que l'agent recherche (peut prendre des minutes pour les requêtes complexes)
- Interrogez
firecrawl_agent_statusavec l'ID de tâche pour vérifier la progression - 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écifiquesschema: 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_statuspour 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 tardcompleted: Recherche terminée - la réponse inclut les données extraitesfailed: 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
urlpour récupérer et ouvrir une page pour interaction en un seul appel MCP. - Passez
scrapeIdpour continuer à interagir avec une page récupérée existante. - Passez exactement l'un de
urlouscrapeId, plus soitpromptsoitcode.
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 comprisgoal,judgeEnabled,webhooketnotification.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 comprisdiff,snapshot,judgment.meaningfuletjudgment.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
- Forker le dépôt
- Créer votre branche de fonctionnalité
- Exécuter les tests :
npm test - 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