fastCRW MCP
A Rust server that turns pages into Markdown or JSON: search, scrape, site map, crawl and PDF through MCP, a CLI and a Firecrawl-compatible API
- 1,172 ★ on the repository
- Last commit
- AGPL-3.0
Extended access
Why this level
- Fetches addresses the agent supplies and, in cloud mode, sends them and search queries to the fastcrw.com server
- The installer writes the MCP server and skills into the settings of detected agents and keeps the key in a config file
Install
- Works in
Manual install
npx -y crw-mcp@latest installInstalls the skill and MCP server into detected agents, in local mode without a key. Needs Node.js 18 or newer.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- Fetches addresses the agent supplies and, in cloud mode, sends them and search queries to the fastcrw.com server
- The installer writes the MCP server and skills into the settings of detected agents and keeps the key in a config file
This is third-party code. Review the repository files before installing.
What it does
fastCRW is a single Rust binary with an engine for working with web pages. Give it a URL and it returns Markdown, HTML, a list of links, images or JSON matching your schema. Plain pages are fetched with an ordinary request, and for pages built by scripts the engine switches to a built-in lightweight browser or Chrome. The command `npx -y crw-mcp@latest install` puts both the `crw` MCP server and a set of skills into the agents it finds on your machine; without a key the server runs locally in embedded mode. The MCP server gives the agent `crw_scrape`, `crw_crawl` with progress polling through `crw_check_crawl_status`, `crw_map`, `crw_search`, `crw_extract` and `crw_parse_file`. The map tool collects addresses from the sitemap and links without downloading content. A crawl runs breadth first from a start URL and follows `robots.txt` by default. `crw_parse_file` turns a base64 PDF into Markdown. By default a response is cut to 15,000 characters so it does not flood the agent's context, and `maxLength: 0` lifts the cut. The repository holds thirteen skills built around one ladder of steps: search first, then scrape a single page, map, crawl, parse a PDF, extract by schema and watch for changes. Separate skills cover moving from Firecrawl by swapping the base URL and standing up your own server in Docker. The same operations are available from the `crw` command line, from Python and Node.js SDKs and over REST. The cloud needs a key from fastcrw.com, while local mode is free.
Who it is for. For developers and analysts whose agents in Claude Code, Cursor or Codex read sites, documentation and search results, and for anyone who wants the page collector on their own server.
Good fit when
- The agent needs a documentation page as Markdown without navigation and footer, and a plain request returns an empty shell
- You have to collect a whole site's documentation for RAG: `crw_map` estimates the size first, then `crw_crawl` fetches the pages
- Your code already uses the Firecrawl SDK and you want to move to your own server by changing the base URL
- You need to track a price or text change on a page: the `crw-watch` skill compares two snapshots
Not a fit when
- You need an interactive browser with clicks and form filling: `crw-mcp` has none, it lives in a separate `crw-browse` binary
- You run Windows: the npm package `crw-mcp` ships binaries for macOS and Linux only, and on Windows you are left with the install script or a build from source
- You embed the engine in a closed product: it is AGPL-3.0, only the SDKs are MIT, and the author issues an embedding license separately
- You want search to work out of the box in local mode: embedded mode searches only when a search backend is connected
Example request
Collect the documentation from docs.example.com as Markdown: first show how many pages there are, then fetch the first fiftyMCP
- Transport
- stdio
- Authentication
- not required
Environment variables
CRW_API_KEYsecret- fastcrw.com cloud key; without it the server runs locally
CRW_API_URL- API address, https://api.fastcrw.com for the cloud
Limitations
- The engine and MCP server are AGPL-3.0, while the Python and TypeScript SDKs are MIT. For embedding in a closed product the author asks you to write by email.
- Cloud mode is paid by credits: an account gets 1000 free credits once, not monthly. The key can be stored in `~/.config/crw/config.toml` and is not copied into each agent's settings.
- `crw_extract` and the `json` and `summary` formats of `crw_parse_file` need a connected language model: your own provider key or a model on the server.
- To keep agent settings untouched, set `CRW_NO_AGENTS=1`; without it the installer with a key registers the server in Claude Code, Cursor, Codex, Gemini CLI, OpenCode and Windsurf by itself.
- Available features depend on the deployment: the `/v1/capabilities` address returns the list. Crawl and map follow `robots.txt`, and respecting site rules is up to the user.
How to disable. Remove the `crw` entry from your agent's MCP configuration and the `crw*` skill folders from its skills directory. The `crw` binary placed by the install script sits in `/usr/local/bin` or the folder from `CRW_INSTALL_DIR`; deleting it is enough. The key and settings are kept in `~/.config/crw/config.toml`.
FAQ
Do I need a key to start working with fastCRW?
No. After `npx -y crw-mcp@latest install` the server starts in local mode without a key and scrapes pages on your machine. A key from fastcrw.com is needed for the cloud with managed proxies, script rendering and built-in search.
How does connecting fastCRW differ from Firecrawl?
The `/v1` and `/v2` interface is compatible with Firecrawl, so code on its SDK usually switches by changing the base URL. The `crw-migrate` skill describes the move. Responses differ between deployments, and `/v1/capabilities` shows how.
How does fastCRW handle pages built with JavaScript?
The engine detects that a page is built by scripts and steps from a plain request to a lightweight browser and then to Chrome. You can force rendering with `renderJs: true` and set a pause after load with `waitFor`.
How much of a page does the agent receive?
By default about 15,000 characters from `crw_scrape` and crawl results, with `truncated: true` in the response when something is cut. The `maxLength: 0` parameter turns the cut off. A site map returns at most 100 addresses unless you pass `limit: 0`.
Can I run fastCRW as my own API server?
Yes. The `crw serve` command or the `ghcr.io/fastcrw/crw` image brings up a server on port 3000. The `crw-self-host` skill covers the separate `crw-server` binary, the configuration file, proxies and connecting a language model for extraction.
How do I check what changed on a page?
The server stores nothing between calls. You scrape the page, save the snapshot, scrape again later and send both to `/v1/change-tracking/diff`. A response with the `changed` status can be tied to a scheduled alert.
Discussion
No questions or reviews yet.
Related
MCP serversOfficial Firecrawl MCP server: web search, page scraping to Markdown, site crawling and in-page actions
The Firecrawl command-line client with agent skills: web search, scraping, crawling, URL mapping and page interaction
An MCP server that opens pages in headless Chromium through Playwright and hands the agent the main text as Markdown, even from JavaScript-heavy sites
An open-source crawler that turns websites into clean Markdown for AI agents: install from PyPI, run in Docker and connect to Claude Code over MCP
Local-first Rust tool for web extraction: scrape, crawl and structured data for LLMs, with a CLI, REST API and MCP server
DrissionPage MCP: browser control
DrissionPage MCP Server
A Python MCP server for Codex, Claude Code and Cursor: 69 atomic tools for driving Chromium on top of DrissionPage, with page and network observation
Comparison with similar tools
Entries that share the main search query, and how they differ.
| Entry | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| fastCRW (this entry) | yes | not required | 1,172 | |
| Firecrawl MCP Server | yes | API key | 7,672 | the official MCP server of the Firecrawl cloud, needs an API key and has page actions |
| Tavily MCP Server | yes | API key | 2,454 | the official Tavily MCP server: web search, page text extraction, site map and crawl |
| Crawl4AI | yes | API key | 86,076 | a Python crawler installed from PyPI and run in Docker |
README in short
The repository holds the engine sources split into Rust crates (server, CLI, MCP, search, rendering, page comparison), a Python SDK, thirteen skills, plugin manifests for Claude Code, Codex and Cursor, speed benchmarks with their methodology, and blog articles. The front page opens with a one-command install and a table of operations, followed by a choice between the cloud and your own server and links to the docs.