Une implémentation de serveur Model Context Protocol (MCP) intégrant Firecrawl pour le web scraping. Notre serveur MCP est open source et disponible sur GitHub.
- Scraping, crawling et découverte du web
- Recherche et extraction de contenu
- Recherche approfondie et scraping en lots
- Prise en charge du cloud et de l’auto‑hébergement
- Prise en charge du streaming HTTP
Vous pouvez utiliser notre URL hébergée ou exécuter le serveur en local. Récupérez votre clé API sur https://firecrawl.dev/app/api-keys
https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp
env FIRECRAWL_API_KEY=fc-YOUR_API_KEY npx -y firecrawl-mcp
Installation manuelle
npm install -g firecrawl-mcp
Configuration de Cursor 🖥️
Remarque : nécessite Cursor version 0.45.6+
Pour des instructions de configuration à jour, consultez la documentation officielle de Cursor sur la configuration des serveurs MCP :
Guide de configuration du serveur MCP de Cursor
Pour configurer Firecrawl MCP dans Cursor v0.48.6
- Ouvrez les paramètres de Cursor
- Allez dans Features > MCP Servers
- Cliquez sur ”+ Add new global MCP server”
- Saisissez 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 Features > MCP Servers
- Cliquez sur ”+ Add New MCP Server”
- Renseignez les éléments suivants :
- Name: “firecrawl-mcp” (ou le nom de votre choix)
- Type: “command”
- Command:
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, créez un compte et récupérez-la via https://www.firecrawl.dev/app/api-keys
Après l’ajout, actualisez la liste des serveurs MCP pour voir les nouveaux outils. Le Composer Agent utilisera automatiquement Firecrawl MCP lorsque c’est pertinent, mais vous pouvez aussi le demander explicitement en décrivant vos besoins en web scraping. Accédez au Composer via Command+L (Mac), sélectionnez « Agent » à côté du bouton d’envoi, puis saisissez votre requête.
Ajoutez ceci à votre ./codeium/windsurf/model_config.json :
{
"mcpServers": {
"mcp-server-firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "VOTRE_API_KEY"
}
}
}
}
Exécution avec le mode HTTP en streaming
Pour exécuter le serveur localement en utilisant le transport HTTP en streaming 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 suivante : http://localhost:3000/v2/mcp ou https://mcp.firecrawl.dev/{FIRECRAWL_API_KEY}/v2/mcp
Installation via Smithery (ancienne méthode)
Pour installer Firecrawl pour Claude Desktop automatiquement via Smithery :
npx -y @smithery/cli install @mendableai/mcp-server-firecrawl --client claude
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": "Clé API Firecrawl",
"password": true
}
],
"servers": {
"firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "${input:apiKey}"
}
}
}
}
}
Vous pouvez également l’ajouter à un fichier nommé .vscode/mcp.json dans votre espace de travail. Cela vous permettra de partager la configuration avec d’autres :
{
"inputs": [
{
"type": "promptString",
"id": "apiKey",
"description": "Clé API Firecrawl",
"password": true
}
],
"servers": {
"firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "${input:apiKey}"
}
}
}
}
Remarque : Certains utilisateurs ont signalé des problèmes lors de l’ajout du serveur MCP à VS Code, du fait que VS Code valide le JSON à l’aide d’un format de schéma obsolète (microsoft/vscode#155379).
Cela affecte plusieurs outils MCP, dont Firecrawl.
Solution de contournement : Désactivez la validation JSON dans VS Code pour permettre au serveur MCP de se charger correctement.
Voir la discussion : directus/directus#25906 (commentaire).
Le serveur MCP continue de fonctionner correctement lorsqu’il est invoqué via d’autres extensions, mais le problème se produit spécifiquement lors de son enregistrement directement dans la liste des serveurs MCP. Nous prévoyons d’ajouter des recommandations une fois que VS Code aura mis à jour la validation de son schéma.
Utilisation avec Claude Desktop
Ajoutez ce qui suit au fichier de configuration de Claude :
{
"mcpServers": {
"firecrawl": {
"url": "https://mcp.firecrawl.dev/v2/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Utilisation avec Claude Code
Ajoutez le serveur MCP Firecrawl à l’aide de la CLI Claude Code :
claude mcp add firecrawl -e FIRECRAWL_API_KEY=your-api-key -- npx -y firecrawl-mcp
Utilisation avec Google Antigravity
Google Antigravity vous permet de configurer des serveurs MCP directement depuis son interface Agent.
- Ouvrez la barre latérale Agent dans l’Editor ou la vue Agent Manager
- Cliquez sur le menu « … » (More Actions) et sélectionnez MCP Servers
- Sélectionnez View raw config pour ouvrir votre fichier local
mcp_config.json
- Ajoutez la configuration suivante :
{
"mcpServers": {
"firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "YOUR_FIRECRAWL_API_KEY"
}
}
}
}
- Enregistrez le fichier et cliquez sur Refresh dans l’interface MCP d’Antigravity pour voir les nouveaux outils.
Remplacez YOUR_FIRECRAWL_API_KEY par votre clé API à partir de https://firecrawl.dev/app/api-keys.
Pour connecter le serveur MCP de Firecrawl dans n8n :
- Récupérez votre clé API Firecrawl à partir de https://firecrawl.dev/app/api-keys
- Dans votre workflow n8n, ajoutez un nœud AI Agent
- Dans la configuration du nœud AI Agent, ajoutez un nouveau Tool
- Sélectionnez MCP Client Tool comme type d’outil
- Saisissez l’Endpoint du serveur MCP (remplacez
{YOUR_FIRECRAWL_API_KEY} par votre clé API) :
https://mcp.firecrawl.dev/{YOUR_FIRECRAWL_API_KEY}/v2/mcp
- Définissez Server Transport sur HTTP Streamable
- Définissez Authentication sur None
- Pour Tools to include, vous pouvez sélectionner All, Selected ou All Except – cela rendra disponibles les outils Firecrawl (scrape, crawl, map, search, extract, etc.)
Pour les déploiements auto-hébergés, exécutez le serveur MCP avec npx et activez le mode de transport HTTP :
env HTTP_STREAMABLE_SERVER=true \
FIRECRAWL_API_KEY=fc-YOUR_API_KEY \
FIRECRAWL_API_URL=YOUR_FIRECRAWL_INSTANCE \
npx -y firecrawl-mcp
Cela démarre le serveur sur http://localhost:3000/v2/mcp, que vous pouvez utiliser comme endpoint dans votre workflow n8n. La variable d’environnement HTTP_STREAMABLE_SERVER=true est requise, car n8n a besoin d’un transport via HTTP.
Variables d’environnement
FIRECRAWL_API_KEY : votre clé API Firecrawl
- Requise lors de l’utilisation de l’API cloud (par défaut)
- Facultative lors de l’utilisation d’une instance auto-hébergée avec
FIRECRAWL_API_URL
FIRECRAWL_API_URL (facultatif) : point de terminaison API personnalisé pour les instances auto-hébergées
- Exemple :
https://firecrawl.your-domain.com
- Si elle n’est pas renseignée, l’API cloud sera utilisée (nécessite une clé API)
Configuration facultative
Configuration des relances
FIRECRAWL_RETRY_MAX_ATTEMPTS: Nombre maximal de tentatives de relance (par défaut : 3)
FIRECRAWL_RETRY_INITIAL_DELAY: Délai initial en millisecondes avant la première relance (par défaut : 1000)
FIRECRAWL_RETRY_MAX_DELAY: Délai maximal en millisecondes entre les relances (par défaut : 10000)
FIRECRAWL_RETRY_BACKOFF_FACTOR: Facteur de backoff exponentiel (par défaut : 2)
Surveillance de l’utilisation des crédits
FIRECRAWL_CREDIT_WARNING_THRESHOLD: Seuil d’avertissement pour l’utilisation des crédits (par défaut : 1000)
FIRECRAWL_CREDIT_CRITICAL_THRESHOLD: Seuil critique pour l’utilisation des crédits (par défaut : 100)
Exemples de configuration
Pour l’utilisation de l’API cloud avec des tentatives de reprise personnalisées et le suivi des crédits :
# Requis pour l’API cloud
export FIRECRAWL_API_KEY=your-api-key
# Paramètres de nouvelle tentative (facultatif)
export FIRECRAWL_RETRY_MAX_ATTEMPTS=5 # Augmenter le nombre maximal de tentatives
export FIRECRAWL_RETRY_INITIAL_DELAY=2000 # Commencer avec un délai de 2 s
export FIRECRAWL_RETRY_MAX_DELAY=30000 # Délai maximal de 30 s
export FIRECRAWL_RETRY_BACKOFF_FACTOR=3 # Backoff plus agressif
# Surveillance des crédits (facultatif)
export FIRECRAWL_CREDIT_WARNING_THRESHOLD=2000 # Avertissement à 2000 crédits
export FIRECRAWL_CREDIT_CRITICAL_THRESHOLD=500 # Seuil critique à 500 crédits
Pour une instance auto‑hébergée :
# Requis pour l’auto‑hébergement
export FIRECRAWL_API_URL=https://firecrawl.your-domain.com
# Authentification facultative pour l’auto‑hébergement
export FIRECRAWL_API_KEY=your-api-key # Si votre instance requiert une authentification
# Configuration personnalisée des tentatives
export FIRECRAWL_RETRY_MAX_ATTEMPTS=10
export FIRECRAWL_RETRY_INITIAL_DELAY=500 # Démarrer avec des tentatives plus rapides
Configuration personnalisée avec Claude Desktop
Ajoutez ceci dans votre claude_desktop_config.json :
{
"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"
}
}
}
}
Le serveur comporte plusieurs paramètres configurables pouvant être définis via des variables d’environnement. Voici les valeurs par défaut lorsqu’ils ne sont pas configurés :
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, // Alerte critique lorsque l'utilisation des crédits atteint ce niveau
},
};
Ces paramètres contrôlent :
-
Comportement de réessai
- Réessaie automatiquement les requêtes ayant échoué à cause des limites de débit
- Utilise un backoff exponentiel pour éviter de surcharger l’API
- Exemple : avec les paramètres par défaut, les réessais seront effectués aux intervalles suivants :
- 1ʳᵉ tentative de réessai : délai de 1 seconde
- 2ᵉ tentative de réessai : délai de 2 secondes
- 3ᵉ tentative de réessai : délai de 4 secondes (plafonné par
maxDelay)
-
Suivi de la consommation de crédits
- Suit la consommation de crédits de l’API pour l’utilisation de l’API cloud
- Fournit des avertissements à des seuils définis
- Aide à éviter les interruptions de service inattendues
- Exemple : avec les paramètres par défaut :
- Avertissement à 1 000 crédits restants
- Alerte critique à 100 crédits restants
Limitation de débit et traitement par lots
Le serveur exploite les fonctionnalités intégrées de Firecrawl en matière de limitation de débit et de traitement par lots :
- Gestion automatique de la limitation de débit avec backoff exponentiel
- Traitement parallèle efficace pour les opérations par lots
- Mise en file d’attente et régulation intelligente des requêtes
- Réessais automatiques en cas d’erreurs transitoires
Extraire le contenu d’une URL unique avec des options avancées.
{
"name": "firecrawl_scrape",
"arguments": {
"url": "https://example.com",
"formats": ["markdown"],
"onlyMainContent": true,
"waitFor": 1000,
"timeout": 30000,
"mobile": false,
"includeTags": ["article", "main"],
"excludeTags": ["nav", "footer"],
"skipTlsVerification": false
}
}
Extrayez le contenu de plusieurs URL de manière efficace grâce à la limitation de débit intégrée et au traitement parallèle.
{
"name": "firecrawl_batch_scrape",
"arguments": {
"urls": ["https://example1.com", "https://example2.com"],
"options": {
"formats": ["markdown"],
"onlyMainContent": true
}
}
}
La réponse inclut l’ID d’opération pour vérifier son statut :
{
"content": [
{
"type": "text",
"text": "Opération batch mise en file d'attente avec l'ID : batch_1. Utilisez firecrawl_check_batch_status pour vérifier le statut."
}
],
"isError": false
}
3. Vérifier l’état d’un batch (firecrawl_check_batch_status)
Vérifiez l’état d’une opération batch.
{
"name": "firecrawl_check_batch_status",
"arguments": {
"id": "batch_1"
}
}
Cartographier un site web pour découvrir toutes les URL indexées du site.
{
"name": "firecrawl_map",
"arguments": {
"url": "https://example.com",
"search": "blog",
"sitemap": "include",
"includeSubdomains": false,
"limit": 100,
"ignoreQueryParameters": true
}
}
url: L’URL de base du site web à cartographier
search: Terme de recherche facultatif pour filtrer les URL
sitemap: Contrôle l’utilisation du sitemap : « include », « skip » ou « only »
includeSubdomains: Indique s’il faut inclure les sous-domaines dans la cartographie
limit: Nombre maximal d’URL à retourner
ignoreQueryParameters: Indique s’il faut ignorer les paramètres de requête lors de la cartographie
Idéal pour : Découvrir les URL d’un site web avant de décider quoi extraire ; trouver des sections spécifiques d’un site.
Renvoie : Tableau d’URL trouvées sur le site.
Effectuez une recherche sur le web et, si besoin, extrayez le contenu des résultats.
{
"name": "firecrawl_search",
"arguments": {
"query": "votre requête de recherche",
"limit": 5,
"lang": "en",
"country": "us",
"scrapeOptions": {
"formats": ["markdown"],
"onlyMainContent": true
}
}
}
Démarre un crawl asynchrone avec des options avancées.
{
"name": "firecrawl_crawl",
"arguments": {
"url": "https://example.com",
"maxDepth": 2,
"limit": 100,
"allowExternalLinks": false,
"deduplicateSimilarURLs": true
}
}
7. Vérifier l’état du crawl (firecrawl_check_crawl_status)
Vérifiez l’état d’une tâche de crawl.
{
"name": "firecrawl_check_crawl_status",
"arguments": {
"id": "550e8400-e29b-41d4-a716-446655440000"
}
}
Renvoie : le statut et l’avancement du job de crawl, y compris les résultats le cas échéant.
Extrait des informations structurées depuis des pages web en utilisant les capacités des LLM. Prend en charge aussi bien l’IA dans le cloud que l’extraction avec des LLM auto-hébergés.
{
"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
}
}
Exemple de réponse :
{
"content": [
{
"type": "text",
"text": {
"name": "Example Product",
"price": 99.99,
"description": "This is an example product description"
}
}
],
"isError": false
}
urls: Liste d’URL à partir desquelles extraire des informations
prompt: Prompt personnalisé pour l’extraction par le LLM
systemPrompt: Prompt 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 sur le web pour obtenir 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 le LLM que vous avez configuré. Pour l’API cloud, elle utilise le service LLM géré de Firecrawl.
Système de journalisation
Le serveur inclut une journalisation complète :
- État et progression des opérations
- Indicateurs de performance
- Suivi de l’utilisation des crédits
- Suivi des limites de débit
- Conditions d’erreur
Exemples de messages de journal :
[INFO] Serveur MCP Firecrawl initialisé avec succès
[INFO] Lancement du scraping pour l’URL : https://example.com
[INFO] Opération par lots mise en file d’attente avec l’ID : batch_1
[WARNING] L’utilisation des crédits a atteint le seuil d’alerte
[ERROR] Limite de débit dépassée, nouvelle tentative dans 2 s…
Le serveur propose une gestion robuste des erreurs :
- Nouveaux essais automatiques en cas d’erreurs transitoires
- Gestion des limites de débit avec backoff
- Messages d’erreur détaillés
- Alertes sur l’utilisation des crédits
- Résilience du réseau
Exemple de réponse d’erreur :
{
"content": [
{
"type": "text",
"text": "Erreur : Limite de débit dépassée. Nouvelle tentative dans 2 secondes..."
}
],
"isError": true
}
# Installer les dépendances
npm install
# Build
npm run build
# Run tests
npm test
- Créez un fork du dépôt
- Créez une branche pour votre fonctionnalité
- Exécutez les tests :
npm test
- Ouvrez une pull request
Merci à @vrknetha et @cawstudios pour la mise en œuvre initiale !
Merci à MCP.so et Klavis AI pour l’hébergement, ainsi qu’à @gstarwd, @xiangkaiz et @zihaolin96 d’avoir intégré notre serveur.
Licence MIT — voir le fichier LICENSE pour plus de détails