MCP server for Firecrawl web scraping integration. Supports both cloud and self-hosted instances. Features include web scraping, search, batch processing, structured data extraction, and LLM-powered content analysis.
Two tools with comprehensive parameter schemas and detailed descriptions. Both tools have well-structured input schemas with type definitions and descriptions for most parameters. Descriptions are lengthy (200+ chars) and include usage guidance, best practices, and examples. However, output schemas are not explicitly documented in the code, and error handling guidance is minimal. Tool naming follows verb_noun convention (firecrawl_scrape, firecrawl_map). No security issues detected (API keys handled server-side via headers). Composition is sound, tools are single-purpose and chainable.
Map a website to discover all indexed URLs on the site. **Best for:** Discovering URLs on a website before deciding what to scrape; finding specific sections of a website. **Not recommended for:** When you already know which specific URL you need (use scrape or batch_scrape); when you need the content of the pages (use scrape after mapping). **Common mistakes:** Using crawl to discover URLs instead of map. **Prompt Example:** "List all URLs on example.com." **Usage Example:** ```json { "name": "firecrawl_map", "arguments": { "url": "https://example.com" } } ``` **Returns:** Array of URLs found on the site.
Scrape content from a single URL with advanced options. This is the most powerful, fastest and most reliable scraper tool, if available you should always default to using this tool for any web scraping needs. **Best for:** Single page content extraction, when you know exactly which page contains the information. **Not recommended for:** Multiple pages (use batch_scrape), unknown page (use search), structured data (use extract). **Common mistakes:** Using scrape for a list of URLs (use batch_scrape instead). If batch scrape doesnt work, just use scrape and call it multiple times. **Other Features:** Use 'branding' format to extract brand identity (colors, fonts, typography, spacing, UI components) for design analysis or style replication. **Prompt Example:** "Get the content of the page at https://example.com." **Usage Example:** ```json { "name": "firecrawl_scrape", "arguments": { "url": "https://example.com", "formats": ["markdown"], "maxAge": 172800000 } } ``` **Performance:** Add maxAge parameter for 500% faster scrapes using cached data. **Returns:** Markdown, HTML, or other formats as specified.
Output schemas not documented. Tool descriptions explain what is returned (Markdown, HTML, array of URLs) but do not specify the structured response format, field names, or types. LLMs cannot plan downstream tool calls without knowing response structure.
Error handling lacks recovery guidance. No tool description explains what to do if a URL is invalid, unreachable, or returns an error. LLMs need actionable error messages (e.g., 'URL unreachable. Verify the domain is correct and try again.').
Parameter 'formats' in firecrawl_scrape accepts an array but lacks enum constraint. Description lists valid options (markdown, html, rawHtml, screenshot, links, summary, changeTracking, branding, json/screenshot objects) but does not enforce them. LLMs may hallucinate invalid format values.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Parameter 'actions' in firecrawl_scrape references disabled actions in safe mode but does not document this constraint in the parameter description. LLMs calling this tool in cloud mode may attempt to use click, write, press, executeJavascript, or generatePDF and receive silent failures.
No pagination guidance for firecrawl_map. If a website has thousands of URLs, the tool may return a very large result set. No limit parameter is documented, and no guidance on handling large result sets is provided.