{
  "name": "firecrawl",
  "display_name": "Firecrawl",
  "description": "Advanced web scraping with JavaScript rendering, PDF support, and smart rate limiting",
  "repository": {
    "type": "git",
    "url": "https://github.com/mendableai/firecrawl-mcp-server"
  },
  "homepage": "https://github.com/mendableai/firecrawl-mcp-server",
  "author": {
    "name": "mendableai"
  },
  "license": "MIT",
  "categories": [
    "Web Services"
  ],
  "tags": [
    "firecrawl",
    "scraping",
    "web",
    "api",
    "automation"
  ],
  "examples": [
    {
      "title": "Basic Scraping Example",
      "description": "Scrape content from a single URL",
      "prompt": "firecrawl_scrape with url 'https://example.com'"
    },
    {
      "title": "Batch Scraping",
      "description": "Scrape multiple URLs",
      "prompt": "firecrawl_batch_scrape with urls ['https://example1.com', 'https://example2.com']"
    }
  ],
  "installations": {
    "npm": {
      "type": "npm",
      "command": "npx",
      "args": [
        "-y",
        "firecrawl-mcp"
      ],
      "env": {
        "FIRECRAWL_API_KEY": "${FIRECRAWL_API_KEY}"
      }
    },
    "docker": {
      "type": "docker",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "FIRECRAWL_API_URL",
        "-e",
        "FIRECRAWL_RETRY_MAX_ATTEMPTS",
        "-e",
        "FIRECRAWL_RETRY_INITIAL_DELAY",
        "-e",
        "FIRECRAWL_RETRY_MAX_DELAY",
        "-e",
        "FIRECRAWL_RETRY_BACKOFF_FACTOR",
        "-e",
        "FIRECRAWL_CREDIT_WARNING_THRESHOLD",
        "-e",
        "FIRECRAWL_CREDIT_CRITICAL_THRESHOLD",
        "-e",
        "FIRECRAWL_API_KEY",
        "mcp/firecrawl"
      ],
      "env": {
        "FIRECRAWL_API_URL": "https://api.firecrawl.dev/v1",
        "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",
        "FIRECRAWL_API_KEY": "${FIRECRAWL_API_KEY}"
      }
    }
  },
  "arguments": {
    "FIRECRAWL_API_KEY": {
      "description": "Your FireCrawl API key. Required for using the cloud API (default) and optional for self-hosted instances.",
      "required": true,
      "example": "fc-YOUR_API_KEY"
    }
  },
  "tools": [
    {
      "name": "firecrawl_scrape",
      "description": "Scrape a single webpage with advanced options for content extraction. Supports various formats including markdown, HTML, and screenshots. Can execute custom actions like clicking or scrolling before scraping.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The URL to scrape"
          },
          "formats": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "markdown",
                "html",
                "rawHtml",
                "screenshot",
                "links",
                "screenshot@fullPage",
                "extract"
              ]
            },
            "description": "Content formats to extract (default: ['markdown'])"
          },
          "onlyMainContent": {
            "type": "boolean",
            "description": "Extract only the main content, filtering out navigation, footers, etc."
          },
          "includeTags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "HTML tags to specifically include in extraction"
          },
          "excludeTags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "HTML tags to exclude from extraction"
          },
          "waitFor": {
            "type": "number",
            "description": "Time in milliseconds to wait for dynamic content to load"
          },
          "timeout": {
            "type": "number",
            "description": "Maximum time in milliseconds to wait for the page to load"
          },
          "actions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "type": {
                  "type": "string",
                  "enum": [
                    "wait",
                    "click",
                    "screenshot",
                    "write",
                    "press",
                    "scroll",
                    "scrape",
                    "executeJavascript"
                  ],
                  "description": "Type of action to perform"
                },
                "selector": {
                  "type": "string",
                  "description": "CSS selector for the target element"
                },
                "milliseconds": {
                  "type": "number",
                  "description": "Time to wait in milliseconds (for wait action)"
                },
                "text": {
                  "type": "string",
                  "description": "Text to write (for write action)"
                },
                "key": {
                  "type": "string",
                  "description": "Key to press (for press action)"
                },
                "direction": {
                  "type": "string",
                  "enum": [
                    "up",
                    "down"
                  ],
                  "description": "Scroll direction"
                },
                "script": {
                  "type": "string",
                  "description": "JavaScript code to execute"
                },
                "fullPage": {
                  "type": "boolean",
                  "description": "Take full page screenshot"
                }
              },
              "required": [
                "type"
              ]
            },
            "description": "List of actions to perform before scraping"
          },
          "extract": {
            "type": "object",
            "properties": {
              "schema": {
                "type": "object",
                "description": "Schema for structured data extraction"
              },
              "systemPrompt": {
                "type": "string",
                "description": "System prompt for LLM extraction"
              },
              "prompt": {
                "type": "string",
                "description": "User prompt for LLM extraction"
              }
            },
            "description": "Configuration for structured data extraction"
          },
          "mobile": {
            "type": "boolean",
            "description": "Use mobile viewport"
          },
          "skipTlsVerification": {
            "type": "boolean",
            "description": "Skip TLS certificate verification"
          },
          "removeBase64Images": {
            "type": "boolean",
            "description": "Remove base64 encoded images from output"
          },
          "location": {
            "type": "object",
            "properties": {
              "country": {
                "type": "string",
                "description": "Country code for geolocation"
              },
              "languages": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Language codes for content"
              }
            },
            "description": "Location settings for scraping"
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "firecrawl_map",
      "description": "Discover URLs from a starting point. Can use both sitemap.xml and HTML link discovery.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Starting URL for URL discovery"
          },
          "search": {
            "type": "string",
            "description": "Optional search term to filter URLs"
          },
          "ignoreSitemap": {
            "type": "boolean",
            "description": "Skip sitemap.xml discovery and only use HTML links"
          },
          "sitemapOnly": {
            "type": "boolean",
            "description": "Only use sitemap.xml for discovery, ignore HTML links"
          },
          "includeSubdomains": {
            "type": "boolean",
            "description": "Include URLs from subdomains in results"
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of URLs to return"
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "firecrawl_crawl",
      "description": "Start an asynchronous crawl of multiple pages from a starting URL. Supports depth control, path filtering, and webhook notifications.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "Starting URL for the crawl"
          },
          "excludePaths": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "URL paths to exclude from crawling"
          },
          "includePaths": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Only crawl these URL paths"
          },
          "maxDepth": {
            "type": "number",
            "description": "Maximum link depth to crawl"
          },
          "ignoreSitemap": {
            "type": "boolean",
            "description": "Skip sitemap.xml discovery"
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of pages to crawl"
          },
          "allowBackwardLinks": {
            "type": "boolean",
            "description": "Allow crawling links that point to parent directories"
          },
          "allowExternalLinks": {
            "type": "boolean",
            "description": "Allow crawling links to external domains"
          },
          "webhook": {
            "oneOf": [
              {
                "type": "string",
                "description": "Webhook URL to notify when crawl is complete"
              },
              {
                "type": "object",
                "properties": {
                  "url": {
                    "type": "string",
                    "description": "Webhook URL"
                  },
                  "headers": {
                    "type": "object",
                    "description": "Custom headers for webhook requests"
                  }
                },
                "required": [
                  "url"
                ]
              }
            ]
          },
          "deduplicateSimilarURLs": {
            "type": "boolean",
            "description": "Remove similar URLs during crawl"
          },
          "ignoreQueryParameters": {
            "type": "boolean",
            "description": "Ignore query parameters when comparing URLs"
          },
          "scrapeOptions": {
            "type": "object",
            "properties": {
              "formats": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "markdown",
                    "html",
                    "rawHtml",
                    "screenshot",
                    "links",
                    "screenshot@fullPage",
                    "extract"
                  ]
                }
              },
              "onlyMainContent": {
                "type": "boolean"
              },
              "includeTags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "excludeTags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "waitFor": {
                "type": "number"
              }
            },
            "description": "Options for scraping each page"
          }
        },
        "required": [
          "url"
        ]
      }
    },
    {
      "name": "firecrawl_batch_scrape",
      "description": "Scrape multiple URLs in batch mode. Returns a job ID that can be used to check status.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of URLs to scrape"
          },
          "options": {
            "type": "object",
            "properties": {
              "formats": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "markdown",
                    "html",
                    "rawHtml",
                    "screenshot",
                    "links",
                    "screenshot@fullPage",
                    "extract"
                  ]
                }
              },
              "onlyMainContent": {
                "type": "boolean"
              },
              "includeTags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "excludeTags": {
                "type": "array",
                "items": {
                  "type": "string"
                }
              },
              "waitFor": {
                "type": "number"
              }
            }
          }
        },
        "required": [
          "urls"
        ]
      }
    },
    {
      "name": "firecrawl_check_batch_status",
      "description": "Check the status of a batch scraping job.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Batch job ID to check"
          }
        },
        "required": [
          "id"
        ]
      }
    },
    {
      "name": "firecrawl_check_crawl_status",
      "description": "Check the status of a crawl job.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Crawl job ID to check"
          }
        },
        "required": [
          "id"
        ]
      }
    },
    {
      "name": "firecrawl_search",
      "description": "Search and retrieve content from web pages with optional scraping. Returns SERP results by default (url, title, description) or full page content when scrapeOptions are provided.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Search query string"
          },
          "limit": {
            "type": "number",
            "description": "Maximum number of results to return (default: 5)"
          },
          "lang": {
            "type": "string",
            "description": "Language code for search results (default: en)"
          },
          "country": {
            "type": "string",
            "description": "Country code for search results (default: us)"
          },
          "tbs": {
            "type": "string",
            "description": "Time-based search filter"
          },
          "filter": {
            "type": "string",
            "description": "Search filter"
          },
          "location": {
            "type": "object",
            "properties": {
              "country": {
                "type": "string",
                "description": "Country code for geolocation"
              },
              "languages": {
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Language codes for content"
              }
            },
            "description": "Location settings for search"
          },
          "scrapeOptions": {
            "type": "object",
            "properties": {
              "formats": {
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "markdown",
                    "html",
                    "rawHtml"
                  ]
                },
                "description": "Content formats to extract from search results"
              },
              "onlyMainContent": {
                "type": "boolean",
                "description": "Extract only the main content from results"
              },
              "waitFor": {
                "type": "number",
                "description": "Time in milliseconds to wait for dynamic content"
              }
            },
            "description": "Options for scraping search results"
          }
        },
        "required": [
          "query"
        ]
      }
    },
    {
      "name": "firecrawl_extract",
      "description": "Extract structured information from web pages using LLM. Supports both cloud AI and self-hosted LLM extraction.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "List of URLs to extract information from"
          },
          "prompt": {
            "type": "string",
            "description": "Prompt for the LLM extraction"
          },
          "systemPrompt": {
            "type": "string",
            "description": "System prompt for LLM extraction"
          },
          "schema": {
            "type": "object",
            "description": "JSON schema for structured data extraction"
          },
          "allowExternalLinks": {
            "type": "boolean",
            "description": "Allow extraction from external links"
          },
          "enableWebSearch": {
            "type": "boolean",
            "description": "Enable web search for additional context"
          },
          "includeSubdomains": {
            "type": "boolean",
            "description": "Include subdomains in extraction"
          }
        },
        "required": [
          "urls"
        ]
      }
    },
    {
      "name": "firecrawl_deep_research",
      "description": "Conduct deep research on a query using web crawling, search, and AI analysis.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "The query to research"
          },
          "maxDepth": {
            "type": "number",
            "description": "Maximum depth of research iterations (1-10)"
          },
          "timeLimit": {
            "type": "number",
            "description": "Time limit in seconds (30-300)"
          },
          "maxUrls": {
            "type": "number",
            "description": "Maximum number of URLs to analyze (1-1000)"
          }
        },
        "required": [
          "query"
        ]
      }
    },
    {
      "name": "firecrawl_generate_llmstxt",
      "description": "Generate standardized LLMs.txt file for a given URL, which provides context about how LLMs should interact with the website.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "The URL to generate LLMs.txt from"
          },
          "maxUrls": {
            "type": "number",
            "description": "Maximum number of URLs to process (1-100, default: 10)"
          },
          "showFullText": {
            "type": "boolean",
            "description": "Whether to show the full LLMs-full.txt in the response"
          }
        },
        "required": [
          "url"
        ]
      }
    }
  ],
  "is_official": true,
  "docker_url": "https://hub.docker.com/r/mcp/firecrawl"
}
