Doramagic Project Pack · Human Manual

firecrawl-mcp-server

MCP server for Firecrawl — search, scrape, and interact with the web. Supports both cloud and self-hosted instances. Features include web search, scraping, page interaction, batch processing, and LLM-powered content analysis.

Server Overview and Architecture

Related topics: Available Tools and Capabilities, Configuration, Authentication, and Client Integration

Section Related Pages

Continue reading this section for the full explanation and source context.

Section Transport and Registration

Continue reading this section for the full explanation and source context.

Section Session-Scoped Authentication

Continue reading this section for the full explanation and source context.

Section Tool Surface

Continue reading this section for the full explanation and source context.

Related topics: Available Tools and Capabilities, Configuration, Authentication, and Client Integration

Server Overview and Architecture

Purpose and Scope

The firecrawl-mcp-server is the official Model Context Protocol (MCP) server that exposes Firecrawl — a web search, scraping, and interaction platform — to MCP-compatible clients such as Claude Desktop, Cursor, and n8n. The server translates MCP tool calls into requests against the Firecrawl REST API (v1/v2) and returns markdown, JSON, or branding payloads to the LLM client. Source: package.json:1-3 declares the package as "MCP server for Firecrawl — search, scrape, and interact with the web. Supports both cloud and self-hosted instances."

Architecturally the project is a thin TypeScript layer over two external packages:

ComponentRoleSource
firecrawl-fastmcpMCP transport + tool-registration framework (FastMCP)src/index.ts:1-50
@mendable/firecrawl-js (4.25.2)Firecrawl REST SDK providing FirecrawlApp and the authenticated HTTP clientpackage.json:42-44

The runtime artifact is a single executable, dist/index.js, published to npm as firecrawl-mcp and started via the firecrawl-mcp bin or through npx -y firecrawl-mcp Source: package.json:5-9, 20-22.

High-Level Architecture

The server follows a standard MCP request/response pipeline. Each tool is registered with FastMCP using a Zod-validated parameter schema, and the executor delegates to a per-session Firecrawl SDK client that injects the API key.

flowchart LR
    Client[MCP Client<br/>Claude / Cursor / n8n] -- JSON-RPC over stdio --> Server[firecrawl-mcp-server<br/>FastMCP]
    Server -- tool call --> Tool[Registered Tool<br/>e.g. firecrawl_scrape]
    Tool -- getClient(session) --> SDK[mendable/firecrawl-js]
    SDK -- HTTPS --> API[Firecrawl REST API<br/>v1 or v2]
    API -- markdown / JSON --> SDK
    SDK --> Tool
    Tool -- string response --> Server
    Server --> Client

Transport and Registration

The official MCP manifest declares a single transport — stdio — which is the path most local clients use. Source: server.json:11-21 advertises "transport": { "type": "stdio" } for the npm package firecrawl-mcp at version 3.20.2. The runtime package.json is intentionally ahead of the manifest (3.21.0) and uses the canonical MCP name io.github.firecrawl/firecrawl-mcp-server Source: package.json:4, 6.

Session-Scoped Authentication

Authentication is per-session rather than global. Each call site receives a SessionData object that may carry firecrawlApiKey, and a getClient(session) factory builds (or reuses) a FirecrawlApp for that session. Source: src/index.ts:40-95 shows the SessionData interface and the client construction pattern. This allows MCP hosts that forward per-user credentials (e.g. proxying from n8n) to isolate keys, and it is the layer that produced the regression tracked in issue #246 where stdio calls returned Unauthorized because the session key stopped being propagated in 3.18.0+.

Tool Surface

Tools are registered through server.addTool(...) blocks in src/index.ts. The visible surface (from descriptions, schemas, and the firecrawl_* family) includes at least:

  • firecrawl_scrape — fetch a single URL with markdown / JSON / branding formats, waitFor, lockdown, redactPII, and maxAge cache hints. Source: src/index.ts:200-300 documents the format-selection rules and lockdown mode (5 credits, errors on cache miss).
  • firecrawl_parse — parse a local file (.html, .htm, .xhtml, .pdf, .docx, .doc, .odt, .rtf, .xlsx, .xls) into markdown or JSON. Source: src/index.ts:120-180.
  • firecrawl_map — discover URLs on a site, with optional search filter used as a recovery step when firecrawl_scrape returns empty content. Source: src/index.ts:300-340.
  • firecrawl_extract — LLM-driven structured extraction across a list of URLs with a JSON schema. Source: src/index.ts:340-400.
  • firecrawl_agent — asynchronous research agent that returns a job ID; clients must poll firecrawl_agent_status for 1–5 minutes. Source: src/index.ts:380-420.
  • firecrawl_feedback — submit a quality rating (good / partial / bad) with valuableSources, missingContent, and querySuggestions; the server enforces a substantive-feedback minimum and a ~2 minute time window. Source: src/index.ts:400-460.
  • firecrawl_research_* — experimental wrappers over /v2/search/research/* for arXiv papers and GitHub history/readme search. Source: src/research.ts:1-180.
  • firecrawl_monitor_* — goal-based change monitoring returning judgment / meaningfulChanges payloads. Source: src/monitor.ts:1-50 and CHANGELOG.md:1-10 (entries for 3.19.x documenting the simplified firecrawl_monitor_create API).

The firecrawl_batch_scrape name referenced in older documentation is not registered as a tool; the description string in server.addTool that mentions it is stale and tracked in issue #130. Clients that need batch behavior should call firecrawl_scrape per URL or use the async batch endpoints via the SDK.

Build, Distribution, and Versioning

The repository is a TypeScript ESM project that compiles with tsc and emits a dist/ directory. Source: package.json:18-34 defines build, start, start:cloud (CLOUD_SERVICE=true node dist/index.js), lint, format, and two publish scripts (publish-prod and publish-beta with the --tag beta flag). Distribution is npm-only with publishConfig.access: "public" and files: ["dist"] Source: package.json:7-16.

Versioning has had friction in the community: the npm package.json reports 3.21.0 while server.json reports 3.20.2, and no GitHub release has been tagged since v3.2.1 (2025-09-26), per issue #255. Operators pinning the server should rely on the npm version, not GitHub tags. The mcpName field in package.json and the name field in server.json are the stable identifiers MCP hosts use for resolution Source: package.json:6, server.json:4-5.

Common Failure Modes

Several recurring deployment issues are tied to the server's architecture:

  1. Docker binding to IPv6 loopback only. The provided image binds the stdio/HTTP listener to ::1; front-ends like NGINX that proxy to 127.0.0.1 get connection refused. See issue #251. Workaround: bind to 0.0.0.0 or proxy to [::1].
  2. Self-hosted still demanding an API key. After v3.2.0 a FIRECRAWL_API_URL should make the key optional, but regression #126 shows the key is still required for some self-hosted configurations. Setting CLOUD_SERVICE=true (npm run start:cloud) bypasses the local client.
  3. stdio Unauthorized regression (3.18.0+). Issue #246 — every tool call fails with API key is required when not using a self-hosted instance. Pin to 3.17.0 or pass the key explicitly in the MCP client config.
  4. n8n 404s. Issue #64 — n8n's MCP client can hit a wrong route when the server is fronted by a path prefix; expose the server on a bare host:port rather than behind a sub-path.

See Also

  • Tool reference: firecrawl_scrape, firecrawl_map, firecrawl_agent, firecrawl_extract, firecrawl_feedback (descriptions inlined in src/index.ts).
  • Research endpoints: arXiv and GitHub history in src/research.ts.
  • Monitor endpoints: firecrawl_monitor_create and firecrawl_monitor_checks in src/monitor.ts.
  • Versioning policy: VERSIONING.md and CHANGELOG.md for the v1/v2 client compatibility matrix.

Source: https://github.com/firecrawl/firecrawl-mcp-server / Human Manual

Available Tools and Capabilities

Related topics: Server Overview and Architecture, Configuration, Authentication, and Client Integration

Section Related Pages

Continue reading this section for the full explanation and source context.

Related topics: Server Overview and Architecture, Configuration, Authentication, and Client Integration

Available Tools and Capabilities

Overview

The Firecrawl MCP Server exposes a curated set of Model Context Protocol (MCP) tools that wrap Firecrawl's web data platform, letting LLM agents search, scrape, extract, research, and monitor web content. Tools are registered through the FastMCP server and dispatched via the Firecrawl JS SDK (@mendable/firecrawl-js 4.25.2) defined in package.json. The official MCP server name is io.github.firecrawl/firecrawl-mcp-server, versioned separately from the npm package as shown in server.json.

The server is designed to be transport-agnostic and to work against either the managed Firecrawl cloud (when CLOUD_SERVICE=true) or a self-hosted instance, with FIRECRAWL_API_KEY resolved per-session from environment or request headers.

Tool Inventory

The following table summarizes the tools registered by the server, grouped by capability. Each row links to the source file that defines or documents the tool.

ToolPurposeSource
firecrawl_scrapeExtract content from a single URL in markdown, JSON, branding, or other formats; supports lockdown and redactPIIsrc/index.ts
firecrawl_parseParse a local file (HTML, PDF, DOCX, XLSX, etc.) into structured outputsrc/index.ts
firecrawl_mapDiscover indexed URLs on a website, optionally filtered by a search termsrc/index.ts
firecrawl_extractRun LLM-driven structured extraction across one or more URLs using a prompt and JSON schemasrc/index.ts
firecrawl_searchWeb search returning ranked results with optional sources/categoriessrc/index.ts
firecrawl_agentAsynchronously dispatch a research agent that browses the web autonomouslysrc/index.ts
firecrawl_agent_statusPoll the status of a previously submitted agent jobsrc/index.ts
firecrawl_feedbackSubmit structured feedback (rating, issues, valuable sources, missing content) for a searchsrc/index.ts
firecrawl_research_arxivSearch arXiv papers by query, returning formatted hitssrc/research.ts
firecrawl_research_githubSearch GitHub issue/PR history and repository READMEssrc/research.ts
firecrawl_monitor_createCreate a monitor that watches one or more pages for goal-relevant changessrc/monitor.ts
firecrawl_monitor_checksList or fetch monitor check results, with judgment and meaningfulChanges fieldssrc/monitor.ts

Synchronous Extraction Tools

The synchronous tools — firecrawl_scrape, firecrawl_parse, firecrawl_map, and firecrawl_extract — return a result inline and are best used when the target is known. Each tool carries a Zod-validated schema and an LLM-oriented description explaining when to prefer it, common mistakes, and example payloads. For example, firecrawl_scrape accepts formats (markdown, json, branding, etc.), maxAge for cached responses, lockdown for cache-only retrieval, and redactPII for privacy filtering (Source: src/index.ts).

firecrawl_map is positioned in its description as the recommended first step when firecrawl_scrape returns empty or minimal content: pass a search term to discover the correct page URL before re-scraping. firecrawl_parse is restricted to local file paths and explicitly rejects URL inputs, screenshots, and most proxy/location options; its supported extensions are .html, .htm, .xhtml, .pdf, .docx, .doc, .odt, .rtf, .xlsx, and .xls (Source: src/index.ts).

Asynchronous and Feedback Tools

Three tools operate outside the request/response cycle:

  • firecrawl_search — Returns search results and optionally a searchId that can be passed to feedback (Source: src/index.ts).
  • firecrawl_feedback — Accepts a rating of good, partial, or bad together with structured payloads (valuableSources, missingContent, querySuggestions, issues). Substantive content is required: good must include at least one valuableSources entry, bad must include missingContent or querySuggestions. Feedback is idempotent per searchId and has a ~2-minute submission window, after which the API returns FEEDBACK_WINDOW_EXPIRED (Source: src/index.ts).
  • firecrawl_agent and firecrawl_agent_status — The agent runs asynchronously and returns a job ID immediately; clients are instructed to poll firecrawl_agent_status patiently (every 15–30 seconds for 2–5 minutes) since complex research can take several minutes (Source: src/index.ts).

Research and Monitoring Tools

The research tools in src/research.ts call /v2/search/research/* directly through the SDK's HTTP layer (the installed SDK predates the native research client). firecrawl_research_arxiv formats paper hits with capped author lists and inline affiliations, while firecrawl_research_github searches issue/PR history and READMEs, rendering results as [repo#number] blocks with a 1,200-character content cap to stay within MCP output limits.

Monitoring tools were simplified in version 3.19.0: firecrawl_monitor_create accepts a single page or a pages array plus a goal string, and firecrawl_monitor_checks returns structured results that include isMeaningful, judgment, and meaningfulChanges for goal-based diff interpretation (Source: CHANGELOG.md). When summarizing a check, the tool description recommends using diff.json paths and judgment.meaningfulChanges over raw markdown diffs (Source: src/monitor.ts).

Tool Registration and Data Flow

flowchart LR
    A[MCP Client<br/>Claude, Cursor, n8n] -->|JSON-RPC| B[FastMCP Server<br/>src/index.ts]
    B --> C[getClient<br/>per-session API key]
    C --> D[@mendable/firecrawl-js]
    D --> E[Firecrawl Cloud<br/>or Self-hosted]
    B --> F[src/research.ts<br/>research tools]
    B --> G[src/monitor.ts<br/>monitor tools]
    F --> D
    G --> D

getClient resolves a Firecrawl client per session, threading through the API key supplied via FIRECRAWL_API_KEY or the per-request session header. The transport (stdio or Streamable HTTP) is declared in server.json; stdio is the default registry transport.

Community Notes

Several community-reported issues intersect with the tool surface:

  • A regression in 3.18.0+ caused every stdio tool call to return Unauthorized: API key is required even when FIRECRAWL_API_KEY was set (Source: #246).
  • Self-hosted users still report that the server requires an API key despite the v3.2.0 fix intended to remove that requirement when a custom base URL is configured (Source: #126).
  • Documentation references firecrawl_batch_scrape, but the tool was removed and the registered descriptions still mention it, leading to inconsistent model behavior (Source: #113, #130).
  • The firecrawl_search tool's sources schema has been reported as inconsistent between documentation and runtime, producing 422 errors in some clients (Source: #127).
  • The Docker image binds only to IPv6 ::1, breaking NGINX proxies that forward to 127.0.0.1 (Source: #251).
  • Windows 11 clients have reported "Client Closed or Failed to create" errors when launching the server (Source: #36).
  • An n8n integration reported 404 errors when proxying the MCP server (Source: #64).

See Also

Source: https://github.com/firecrawl/firecrawl-mcp-server / Human Manual

Configuration, Authentication, and Client Integration

Related topics: Server Overview and Architecture, Available Tools and Capabilities, Deployment, Infrastructure, and Troubleshooting

Section Related Pages

Continue reading this section for the full explanation and source context.

Related topics: Server Overview and Architecture, Available Tools and Capabilities, Deployment, Infrastructure, and Troubleshooting

Configuration, Authentication, and Client Integration

Overview

The Firecrawl MCP Server is a Model Context Protocol (MCP) server that exposes Firecrawl's web search, scrape, crawl, extract, and agent capabilities as tools callable by MCP clients such as Claude Desktop, Cursor, and n8n. The server is published as the npm package firecrawl-mcp and is registered in the MCP registry under the identifier io.github.firecrawl/firecrawl-mcp-server Source: [package.json, server.json].

Configuration, authentication, and client integration form the boundary between the MCP server and the rest of the world: environment variables select transport and cloud behavior, the API key authorizes Firecrawl API calls, and the session abstraction lets the server support both shared deployments and per-request credentials.

Environment Variables and Build Targets

The package.json defines the runtime scripts and the single published binary dist/index.js, which is the compiled MCP server entrypoint. Two notable npm scripts gate behavior at startup:

  • npm start runs the local server in V2 mode by default.
  • npm run start:cloud sets CLOUD_SERVICE=true to enable versioned cloud endpoints.

The server also recognizes two transport flags documented in VERSIONING.md:

  • SSE_LOCAL=true switches the local server to Server-Sent Events.
  • HTTP_STREAMABLE_SERVER=true switches the local server to the Streamable HTTP transport introduced in v2.0.0.

The server depends on @mendable/firecrawl-js 4.25.2 for the underlying Firecrawl SDK and on dotenv for loading .env files Source: [package.json, VERSIONING.md].

VariablePurposeMode
FIRECRAWL_API_KEYAuthenticates requests to the Firecrawl API (cloud or self-hosted)All modes
CLOUD_SERVICEEnables versioned cloud endpoint pathsCloud
SSE_LOCALSelects the SSE transport for local developmentLocal
HTTP_STREAMABLE_SERVERSelects the Streamable HTTP transportLocal
FIRECRAWL_API_URL (implicit)Custom base URL for self-hosted Firecrawl instancesSelf-hosted

Source: package.json, VERSIONING.md, server.json

The MCP registry entry only declares FIRECRAWL_API_KEY as an environment variable and marks it as a secret, reflecting that the API key is the only required credential for cloud usage Source: [server.json].

Authentication Model and Session Data

Every tool executor in src/index.ts follows the same authentication pattern: it receives a session: SessionData object alongside a log: Logger, and constructs its Firecrawl client via getClient(session). The SessionData interface minimally carries an optional firecrawlApiKey, allowing the server to read the API key from the MCP session header, from the environment, or from a self-hosted override Source: [src/index.ts].

The same pattern is reused in auxiliary modules. src/research.ts defines its own SessionData shape with firecrawlApiKey? and uses the getClient callback to obtain an SDK instance whose private http layer is used to call the /v2/search/research/* endpoints directly. src/monitor.ts exposes long-running monitor checks whose JSON-mode responses include diff, snapshot, and an LLM judgment block, all of which are produced through the same authenticated client. This consistent shape is what allows the same deployment to serve both cloud and self-hosted Firecrawl instances without per-tool branching Source: [src/research.ts, src/monitor.ts].

The v3.2.0 release note is the canonical reference for how this model is supposed to behave: self-hosted instances should not require an API key when a custom base URL is configured. Community reports of "Self-hosted Firecrawl still requires API key after v3.2.0 fix" indicate that callers must still ensure their base URL is actually picked up by the SDK client, otherwise the client falls back to the cloud endpoint and demands a key Source: [VERSIONING.md, GitHub issue #126].

Client Integration Patterns

Clients integrate with the Firecrawl MCP server in three main ways, all of which are surfaced through package.json and the registry manifest:

MCP client (Claude Desktop / Cursor / n8n)
        │
        ├── stdio transport ──►  npx -y firecrawl-mcp   (FIRECRAWL_API_KEY env)
        ├── SSE transport  ──►  SSE_LOCAL=true npm start
        └── Streamable HTTP ─►  HTTP_STREAMABLE_SERVER=true npm start

The stdio path is the default and the one used by the registry server.json declaration. Cloud and self-hosted modes are differentiated at runtime through the same client, with CLOUD_SERVICE=true enabling versioned endpoint paths such as /v2/sse and /v2/messages (introduced in v2.0.0) Source: [server.json, VERSIONING.md, package.json].

For the n8n use case in particular, the community reports of 404 errors typically trace back to the client targeting the wrong URL path: the v1 paths (/:apiKey/sse, /:apiKey/messages) were retired in v2.0.0 in favor of /v2/sse and /v2/messages. Self-hosters must also confirm that the MCP process is reachable on the address the client uses; the official Docker image binds to IPv6 ::1 by default, which is incompatible with IPv4-only reverse proxies such as NGINX that target 127.0.0.1 Source: [VERSIONING.md, GitHub issues #64 and #251].

Common Failure Modes

Three recurring failure modes are visible in the issue tracker and in the source:

  1. "Unauthorized: API key is required when not using a self-hosted instance" (3.18.0+ stdio regression). Calls over stdio failed even when FIRECRAWL_API_KEY was set, because session credentials were not being propagated to the SDK client. Operators rolling back to 3.17.0 or fixing the session wiring are the documented workarounds [Source: GitHub issue #246].
  2. Self-hosted requires an API key. v3.2.0 fixed the case where a custom base URL was ignored; remaining reports (#126) suggest verifying that the base URL is actually read by getClient(session) so the SDK does not fall back to the cloud endpoint Source: [VERSIONING.md, GitHub issue #126].
  3. Tool description drift. Some tool descriptions passed to the LLM still mention firecrawl_batch_scrape, but the tool is no longer registered with the server. Clients and prompts that rely on these descriptions will see inconsistent behavior; the canonical tool list is what src/index.ts registers with the MCP framework Source: GitHub issues #113 and #130, [src/index.ts].

See Also

  • Tools and Capabilities — reference for each registered MCP tool
  • Versioning and Migration Guide — V1→V2 path changes and defaults
  • Self-Hosting Guide — running the server against a self-hosted Firecrawl instance

Source: https://github.com/firecrawl/firecrawl-mcp-server / Human Manual

Deployment, Infrastructure, and Troubleshooting

Related topics: Configuration, Authentication, and Client Integration, Server Overview and Architecture

Section Related Pages

Continue reading this section for the full explanation and source context.

Related topics: Configuration, Authentication, and Client Integration, Server Overview and Architecture

Deployment, Infrastructure, and Troubleshooting

Overview

The firecrawl-mcp-server package is published to npm as firecrawl-mcp and is the official Model Context Protocol (MCP) bridge between an MCP-capable client (Claude Desktop, Cursor, n8n, etc.) and the Firecrawl web data platform. It exposes a large tool surface — firecrawl_scrape, firecrawl_search, firecrawl_crawl, firecrawl_map, firecrawl_extract, firecrawl_agent, firecrawl_monitor_*, plus research tools (firecrawl_research_search, firecrawl_research_github) — that all delegate to the upstream @mendable/firecrawl-js SDK. Source: package.json.

The server can target either the managed Firecrawl cloud or a self-hosted Firecrawl instance. Which target it talks to is decided at startup from environment variables, which makes environment configuration the central concern of any deployment. Source: src/index.ts.

Package Metadata & Distribution

The npm package identity, runtime requirements, and entry points are declared in package.json:

FieldValue
namefirecrawl-mcp
version3.21.0 (latest in repo)
mcpNameio.github.firecrawl/firecrawl-mcp-server
binfirecrawl-mcpdist/index.js
engines.node>=18.0.0
typemodule (ESM)
main SDK@mendable/[email protected]
MCP frameworkfirecrawl-fastmcp@^1.0.5
Validationzod@^4.1.5

Source: package.json.

The package is also published to the MCP server registry under the same mcpName, with a separate version: 3.20.2 and a single environmentVariables slot for FIRECRAWL_API_KEY (declared isSecret: true, isRequired: false). Source: server.json.

Release hygiene note (community): issue #255 reports that the GitHub repository is already on 3.20.2 (and the in-tree package.json is at 3.21.0) but no GitHub Release tag has been cut since v3.2.0 (2025-09-26). When you pin a version in production, pin the npm tag rather than relying on GitHub release notes. Source: issue #255.

Deployment Surfaces & Run Scripts

package.json defines the canonical build and run flow:

npm run build         # tsc + chmod dist/index.js 755
npm start             # node dist/index.js (self-hosted friendly)
npm run start:cloud   # CLOUD_SERVICE=true node dist/index.js
npm test              # jest via --experimental-vm-modules
npm run test:endpoints
npm run lint / lint:fix

Source: package.json.

The compiled entrypoint is dist/index.js and is published with mode 755 so npx firecrawl-mcp works directly. The CLOUD_SERVICE=true flag switches the client into cloud mode (managed Firecrawl API), while the default start script keeps the self-hosted code path active. Source: src/index.ts.

Two transports are relevant to deployment, both routed through firecrawl-fastmcp:

  1. stdio — what npx firecrawl-mcp and most desktop clients use. Issue #246 documents a regression in the 3.18.0 → 3.19.1 burst where every stdio tool call returned Unauthorized: API key is required when not using a self-hosted instance, even with a valid FIRECRAWL_API_KEY set. Source: issue #246.
  2. Streamable HTTP — added in v2.0.0 for HTTP-based MCP hosts. The v2.0.0 release notes are the canonical confirmation of this transport. Source: v2.0.0 release notes.

Configuration & Environment

Tool execution goes through a shared getClient(session) factory in src/index.ts that resolves an @mendable/firecrawl-js client from either the per-session API key or the environment. Research tools (firecrawl_research_search, firecrawl_research_github) reuse the same client via the SDK's client.http.get(...) layer, hitting /v2/search/research/*. Source: src/research.ts. Monitor tools (e.g. firecrawl_monitor_create, firecrawl_monitor_checks) likewise reuse the shared client and return structured judgment + diff.json results. Source: src/monitor.ts.

The minimum configuration surface for a deployment is:

  • FIRECRAWL_API_KEY — required when targeting the cloud; declared as a secret in the registry manifest. Source: server.json.
  • FIRECRAWL_API_URL / CLOUD_SERVICE — flip the client to your self-hosted instance. The v3.2.0 release notes explicitly fixed a bug where self-hosted deployments were still demanding an API key even when a custom base URL was set. Source: v3.2.0 release notes.

CHANGELOG.md also documents FIRECRAWL_RETRY_MAX_ATTEMPTS, FIRECRAWL_RETRY_INITIAL_DELAY, FIRECRAWL_RETRY_MAX_DELAY, FIRECRAWL_RETRY_BACKOFF_FACTOR, FIRECRAWL_CREDIT_WARNING_THRESHOLD, and FIRECRAWL_CREDIT_CRITICAL_THRESHOLD as configurable retry and credit-monitoring knobs. Source: CHANGELOG.md.

Troubleshooting Common Failures

flowchart TD
  A[Tool call fails] --> B{Error message}
  B -->|Unauthorized / API key required| C{CLOUD_SERVICE?}
  C -->|true| D[Set FIRECRAWL_API_KEY env or per-session]
  C -->|false| E[Confirm FIRECRAWL_API_URL points at self-hosted]
  B -->|404 from MCP host| F[Check path: n8n expects /mcp or SSE path]
  B -->|Connection refused on Windows| G[Issue #36: verify npx + PATH, see Client Closed bug]
  B -->|IPv6 ::1 only in Docker| H[Issue #251: bind to 0.0.0.0 or proxy to ::1]
  B -->|422 from firecrawl_search| I[Issue #127: sources must be objects with 'type']
  B -->|batch_scrape not found| J[Issue #113/#130: tool was removed; use batch/crawl instead]
  • Cloud vs self-hosted API key confusion — even after the v3.2.0 fix, issue #126 reports self-hosted instances still demanding an API key. Verify FIRECRAWL_API_URL is set, then re-check that the deployed package.json is >= 3.2.0. Source: issue #126.
  • n8n / non-stdio hosts returning 404 — issue #64 shows a self-hosted Firecrawl working via cURL on /v1/scrape, but n8n hitting the MCP returns 404; this is almost always a path/transport mismatch, not a Firecrawl bug. Source: issue #64.
  • Windows client crashes — issue #36 documents "Client Closed or Failed to create" on Windows 11. Check Node version (>=18.0.0 is required), PATH, and that no antivirus is blocking the stdio pipe. Source: issue #36.
  • Docker IPv6-only bind — issue #251 reports the provided container only listens on ::1 while NGINX proxies to 127.0.0.1. Bind to 0.0.0.0 or update the proxy to the IPv6 loopback. Source: issue #251.
  • Schema regressions — issue #127 documents that firecrawl_search requires sources entries to be objects with a type field; flat strings produce HTTP 422. Source: issue #127.
  • Stale docs referencing removed tools — issues #113 and #130 note that docs and server.AddTool descriptions still reference firecrawl_batch_scrape, which has been removed; rely on firecrawl_crawl / firecrawl_batch_scrape_urls instead. Source: issue #113, issue #130.

For each failure, the first triage step is to confirm which version is actually running (npx firecrawl-mcp --version or check package.json) and to capture the exact error string from the MCP host — the Unauthorized, 404, and 422 classes above each have a single, version-pinned root cause.

See Also

  • Tool Reference (per-tool schemas in src/index.ts)
  • Self-Hosted Firecrawl Integration
  • Configuration Reference (env-var matrix)

Citations and version-pinning guidance adapted from CHANGELOG.md, package.json, server.json, src/index.ts, src/research.ts, and src/monitor.ts.

Source: https://github.com/firecrawl/firecrawl-mcp-server / Human Manual

Doramagic Pitfall Log

Source-linked risks stay visible on the manual page so the preview does not read like a recommendation.

high Installation risk requires verification

May increase setup, validation, or first-run risk for the user.

high Security or permission risk requires verification

Developers may expose sensitive permissions or credentials: Proposal: Free AI Agent identity verification for Firecrawl MCP

medium Installation risk requires verification

Developers may fail before the first successful local run: Project is on 3.20.2 (2026-06-01) but has no tags or releases since 3.2.0 (2025-09-26)

medium Installation risk requires verification

Developers may fail before the first successful local run: stdio: every tool call returns "Unauthorized" in 3.18.0+ with FIRECRAWL_API_KEY (regression from 3.17.0)

Doramagic Pitfall Log

Found 29 structured pitfall item(s), including 2 high/blocking item(s). Top priority: Installation risk - Installation risk requires verification.

1. Installation risk: Installation risk requires verification

  • Severity: high
  • Finding: Project evidence flags a installation risk. Review the linked source before relying on this workflow.
  • User impact: May increase setup, validation, or first-run risk for the user.
  • Recommended check: Reproduce the official install and quickstart path in an isolated environment.
  • Evidence: community_evidence:github | https://github.com/firecrawl/firecrawl-mcp-server/issues/64

2. Security or permission risk: Security or permission risk requires verification

  • Severity: high
  • Finding: Developers should check this security_permissions risk before relying on the project: Proposal: Free AI Agent identity verification for Firecrawl MCP
  • User impact: Developers may expose sensitive permissions or credentials: Proposal: Free AI Agent identity verification for Firecrawl MCP
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: Proposal: Free AI Agent identity verification for Firecrawl MCP. Context: Observed when using python
  • Evidence: failure_mode_cluster:github_issue | https://github.com/firecrawl/firecrawl-mcp-server/issues/243

3. Installation risk: Installation risk requires verification

  • Severity: medium
  • Finding: Developers should check this installation risk before relying on the project: Project is on 3.20.2 (2026-06-01) but has no tags or releases since 3.2.0 (2025-09-26)
  • User impact: Developers may fail before the first successful local run: Project is on 3.20.2 (2026-06-01) but has no tags or releases since 3.2.0 (2025-09-26)
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: Project is on 3.20.2 (2026-06-01) but has no tags or releases since 3.2.0 (2025-09-26). Context: Observed when using node
  • Evidence: failure_mode_cluster:github_issue | https://github.com/firecrawl/firecrawl-mcp-server/issues/255

4. Installation risk: Installation risk requires verification

  • Severity: medium
  • Finding: Developers should check this installation risk before relying on the project: stdio: every tool call returns "Unauthorized" in 3.18.0+ with FIRECRAWL_API_KEY (regression from 3.17.0)
  • User impact: Developers may fail before the first successful local run: stdio: every tool call returns "Unauthorized" in 3.18.0+ with FIRECRAWL_API_KEY (regression from 3.17.0)
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: stdio: every tool call returns "Unauthorized" in 3.18.0+ with FIRECRAWL_API_KEY (regression from 3.17.0). Context: Observed when using node, macos, linux
  • Evidence: failure_mode_cluster:github_issue | https://github.com/firecrawl/firecrawl-mcp-server/issues/246

5. Installation risk: Installation risk requires verification

  • Severity: medium
  • Finding: Developers should check this installation risk before relying on the project: v1.12.0
  • User impact: Upgrade or migration may change expected behavior: v1.12.0
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: v1.12.0. Context: Observed when using docker
  • Evidence: failure_mode_cluster:github_release | https://github.com/firecrawl/firecrawl-mcp-server/releases/tag/v1.12.0

6. Installation risk: Installation risk requires verification

  • Severity: medium
  • Finding: Project evidence flags a installation risk. Review the linked source before relying on this workflow.
  • User impact: May increase setup, validation, or first-run risk for the user.
  • Recommended check: Reproduce the official install and quickstart path in an isolated environment.
  • Evidence: community_evidence:github | https://github.com/firecrawl/firecrawl-mcp-server/issues/271

7. Configuration risk: Configuration risk requires verification

  • Severity: medium
  • Finding: Developers should check this configuration risk before relying on the project: v1.2.3: Optimize Batch Processing
  • User impact: Upgrade or migration may change expected behavior: v1.2.3: Optimize Batch Processing
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: v1.2.3: Optimize Batch Processing. Context: Source discussion did not expose a precise runtime context.
  • Evidence: failure_mode_cluster:github_release | https://github.com/firecrawl/firecrawl-mcp-server/releases/tag/v1.2.3

8. Configuration risk: Configuration risk requires verification

  • Severity: medium
  • Finding: Developers should check this configuration risk before relying on the project: v1.2.4: Configurable Settings & Enhanced Documentation
  • User impact: Upgrade or migration may change expected behavior: v1.2.4: Configurable Settings & Enhanced Documentation
  • Recommended check: Before packaging this project, run the relevant install/config/quickstart check for: v1.2.4: Configurable Settings & Enhanced Documentation. Context: Source discussion did not expose a precise runtime context.
  • Evidence: failure_mode_cluster:github_release | https://github.com/firecrawl/firecrawl-mcp-server/releases/tag/v1.2.4

9. Configuration risk: Configuration risk requires verification

  • Severity: medium
  • Finding: Project evidence flags a configuration risk. Review the linked source before relying on this workflow.
  • User impact: May increase setup, validation, or first-run risk for the user.
  • Recommended check: Reproduce the official install and quickstart path in an isolated environment.
  • Evidence: community_evidence:github | https://github.com/firecrawl/firecrawl-mcp-server/issues/279

10. Capability evidence risk: Capability evidence risk requires verification

  • Severity: medium
  • Finding: README/documentation is current enough for a first validation pass.
  • User impact: May increase setup, validation, or first-run risk for the user.
  • Recommended check: Reproduce the official install and quickstart path in an isolated environment.
  • Evidence: capability.assumptions | https://www.npmjs.com/package/firecrawl-mcp

11. Runtime risk: Runtime risk requires verification

  • Severity: medium
  • Finding: Project evidence flags a runtime risk. Review the linked source before relying on this workflow.
  • User impact: May increase setup, validation, or first-run risk for the user.
  • Recommended check: Reproduce the official install and quickstart path in an isolated environment.
  • Evidence: packet_text.keyword_scan | https://www.npmjs.com/package/firecrawl-mcp

12. Maintenance risk: Maintenance risk requires verification

  • Severity: medium
  • Finding: Project evidence flags a maintenance risk. Review the linked source before relying on this workflow.
  • User impact: May increase setup, validation, or first-run risk for the user.
  • Recommended check: Reproduce the official install and quickstart path in an isolated environment.
  • Evidence: evidence.maintainer_signals | https://www.npmjs.com/package/firecrawl-mcp

Source: Doramagic discovery, validation, and Project Pack records

Community Discussion Evidence

These external discussion links are review inputs, not standalone proof that the project is production-ready.

Sources 12

Count of project-level external discussion links exposed on this manual page.

Use Review before install

Open the linked issues or discussions before treating the pack as ready for your environment.

Community Discussion Evidence

Doramagic exposes project-level community discussion separately from official documentation. Review these links before using firecrawl-mcp-server with real data or production workflows.

Source: Project Pack community evidence and pitfall evidence