Firecrawl MCP server returns 404 on tool calls in n8n while the tool list loads
I self-hosted Firecrawl and firecrawl-mcp-server in Docker Compose and connected the MCP server to n8n via SSE on port 3000 with
SSE_LOCAL: true. n8n can fetch the tool list, but running the MCP client test returns404 Not Foundwith no logs on either container, while a direct cURL call tohttp://127.0.0.1:3002/v1/scrapeworks. Others report the same 404 with Cherry Studio. What causes this and how do I fix it?Originally asked on GitHub: https://github.com/firecrawl/firecrawl-mcp-server/issues/64
5 answers
This issue is still open, and no maintainer response or confirmed fix appears in the thread. The most concrete lead is a commenter's suggestion:
FIRECRAWL_API_URLmust not include the/v1(or/v2) path segment that direct Firecrawl API calls use.The reporter's docker-compose set:
yamlFIRECRAWL_API_URL: "http://host.docker.internal:3002/v1" SSE_LOCAL: trueWith that config, n8n could list the MCP tools over SSE on port 3000, but invoking a tool returned
404 Not Foundwith no logs from either the firecrawl backend or the MCP server. A direct cURL call tohttp://127.0.0.1:3002/v1/scrapeworked, so the backend itself was fine.The commenter's suggested fix is to drop the version segment:
yamlFIRECRAWL_API_URL: "http://YOUR_INTERNAL_DNS_OR_IP:3002"They noted that cURL commands need
/v1, but the MCP server container settings do not. Important: nobody in the thread reported back whether this change actually resolves the 404. A second commenter reproduced the same symptom with Cherry Studio (tool list generated, 404 on invocation, no logs), and another found that stopping the firecrawl container made n8n report it could not connect to the firecrawl service — indicating the MCP server itself was running and the request URL was the problem. General advice: after changing the environment variable, restart the MCP container so the new value is picked up.Did this work for you?What @jinsonxu84 tried on GitHub (Outcome unclear)
Suggested removing the
/v1or/v2suffix fromFIRECRAWL_API_URL, setting it to justhttp://YOUR_INTERNAL_DNS_OR_IP:3002, because cURL needs the suffix but the MCP server container settings don't. No one in the thread confirmed whether this fixed the 404.Did this work for you?What a GitHub user tried on GitHub (Didn't work)
Self-hosted firecrawl-mcp-server in Docker Compose with
FIRECRAWL_API_URL: "http://host.docker.internal:3002/v1",SSE_LOCAL: true, and port 3000 mapped. n8n fetched the tool list, but the MCP client test returned 404 Not Found with no logs from either container.Source: https://github.com/firecrawl/firecrawl-mcp-server/issues/64 (opens external site)
Did this work for you?What a GitHub user tried on GitHub (Worked)
Verified the self-hosted Firecrawl backend with
curl -X POST http://127.0.0.1:3002/v1/scrapeusing a JSON body with"formats": ["markdown", "html"]; it successfully returned Baidu content.Source: https://github.com/firecrawl/firecrawl-mcp-server/issues/64 (opens external site)
Did this work for you?What @wuhuanyan tried on GitHub (Outcome unclear)
Stopped the firecrawl container as a diagnostic; n8n then reported it could not connect to the firecrawl service. This suggested the MCP server was running but its request URL did not match firecrawl's.
Did this work for you?
Related questions
- How do I make firecrawl-mcp-server use a self-hosted Firecrawl URL?
- How do I raise the 3/min RATE_LIMIT in firecrawl-mcp-server for a self-hosted Firecrawl instance?
- firecrawl_check_batch_status returns a localhost URL that doesn't work in Docker — how to get batch results?
- How to fix firecrawl-mcp hanging on stdio during init and tool calls?
- Firecrawl MCP server not deployed on Smithery after repo moved to Mendable