When to pick Fetch (MCP Reference Server)
- You already have the documentation or article URL and want its text in the conversation. The
fetchtool retrieves the page and converts HTML into Markdown without an account or API key. - You need to read a long page in sections. Set
max_lengthto bound each response and movestart_indexforward for subsequent chunks. Userawwhen you want content without Markdown conversion. - You need to read a development server or intranet page from the machine running MCP. Fetch supports this with
--allow-private-ips; private addresses are blocked by default, including during redirects. Enabling the flag removes that guard. - Your environment routes web requests through a proxy. Fetch accepts
--proxy-urland standard proxy environment variables, includingNO_PROXY, with HTTP and SOCKS5 support.
When to pick Firecrawl MCP
- You are starting with a question rather than a URL.
firecrawl_searchreturns search results with excerpts. Scrape selected URLs afterward, or usescrapeOptionsto fetch result pages in the same call. - You need content from a documentation section or an entire site. Use
firecrawl_mapto discover URLs before selecting pages, orfirecrawl_crawlto collect content with page, path and discovery-depth limits. - The page renders content with JavaScript or requires interaction before the information appears. Firecrawl supports JavaScript-rendered pages, and
firecrawl_interactcan click, type and navigate in a browser. - You need specific fields rather than page text. Supply a JSON schema to
firecrawl_scrapefor a known URL. Usefirecrawl_agentwhen the data spans sources or you do not know the URLs; it returns a job ID for subsequent status checks.
Main differences
- Fetch runs as a local Python process over stdio. Firecrawl's Node process defaults to stdio, but also supports local Streamable HTTP and hosted MCP connections. A hosted connection avoids launching the MCP process locally.
- Fetch requests the target website from its running environment, directly or through a configured proxy. Firecrawl sends work to its cloud API by default, even when its MCP process runs locally. Set
FIRECRAWL_API_URLto route work to a self-hosted Firecrawl API. - Fetch needs no credentials. Firecrawl's hosted keyless tier permits rate-limited scraping, search and parsing; tools such as crawl, map and agent require a key. Hosted account connections also support OAuth. Self-hosted authentication depends on the instance.
- Fetch controls response size through character limits and offsets. Firecrawl offers schema-based JSON extraction and crawl boundaries. Its crawl tool polls internally and returns final status and data, which can still be large; mapping followed by selected scrapes gives tighter control.
- Fetch exposes a read-only retrieval tool. Firecrawl also exposes browser actions, with each
firecrawl_interactcall completing one prompt or code turn. AscrapeIdcan preserve the session across calls, but the client cannot steer individual steps within a running call.
Setup
For Fetch, configure your MCP client to launch uvx mcp-server-fetch over stdio. No account setup is needed. Add optional arguments such as --proxy-url or --allow-private-ips to that command when your environment requires them.
For Firecrawl, launch npx -y firecrawl-mcp and configure FIRECRAWL_API_KEY in the client's environment settings for cloud API access. Alternatively, connect to https://mcp.firecrawl.dev/v2/mcp for the hosted keyless tier or an API-key connection. For the latter, configure Authorization: Bearer <FIRECRAWL_API_KEY> in the client's secure header settings.
· github.com/modelcontextprotocol/servers/src/fetch, github.com/firecrawl/firecrawl-mcp-server
