fastCRW (crw-mcp)

Web scraping, crawling, URL mapping and search for agents, run locally or through the fastcrw.com API

Official · fastCRW Rust Remote (hosted) · Streamable HTTPLocal · stdio, Streamable HTTP Browser automationWeb search

55 popularity score ★ 1.2k ↓ 881/wk

Connect your client

Remote (hosted)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Its docs show no set-up for a particular client: add this address in your client the way it adds a remote MCP server.

Addressits hosted endpoint
https://fastcrw.com/mcp
Local (once it is running)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add --transport http fastcrw-crw http://localhost:3000/mcp
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "fastcrw-crw": {
      "url": "http://localhost:3000/mcp"
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "fastcrw-crw": {
      "type": "http",
      "url": "http://localhost:3000/mcp"
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.fastcrw-crw]
url = "http://localhost:3000/mcp"
Gemini CLITerminal
gemini mcp add --scope user --transport http fastcrw-crw http://localhost:3000/mcp
Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add fastcrw-crw -- npx -y crw-mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "fastcrw-crw": {
      "command": "npx",
      "args": [
        "-y",
        "crw-mcp"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "fastcrw-crw": {
      "command": "npx",
      "args": [
        "-y",
        "crw-mcp"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "fastcrw-crw": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "crw-mcp"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.fastcrw-crw]
command = "npx"
args = ["-y", "crw-mcp"]
Gemini CLITerminal
gemini mcp add --scope user fastcrw-crw npx -- -y crw-mcp

Settings 8

CRW_API_URL Optional: Remote CRW server to forward calls to (https://api.fastcrw.com for the cloud); switches to proxy mode.
CRW_API_KEY Optional: Bearer key for the fastcrw.com cloud or a secured self-hosted server.
CRW_LOCAL Optional: Truthy value forces embedded mode and ignores any configured API URL.
CRW_RENDERER__LIGHTPANDA__WS_URL Optional: WebSocket address of a CDP browser for JavaScript rendering in embedded mode.
CRW_CONFIG Optional: Path to a config file (embedded mode only).
CRW_MCP__HIDE_CREDITS Optional: Strips credit-cost fields from tool results.
CRW_MCP_BINARY Optional: Path to a crw-mcp binary the npm launcher runs instead of downloading one.
RUST_LOG Optional: Log level; logs go to stderr.

What it does

crw-mcp is the MCP server for CRW, a web scraping engine written in Rust. It turns a page into markdown, HTML, a link list or schema-shaped JSON, follows a bounded crawl across a site, lists a site's URLs from its sitemap and a short link walk, runs web searches, and converts PDFs to markdown.

It runs in one of two modes. In embedded mode, the default, the scraping engine runs inside the MCP process on your machine and needs no account. In proxy mode, chosen when an API URL is found (the --api-url flag, CRW_API_URL, CRW_CLIENT__API_URL, or client.api_url in ~/.config/crw/config.toml written by `crw setup`), every tool call is forwarded to a remote CRW server: the paid fastcrw.com cloud or your own self-hosted crw-server. Setting CRW_LOCAL to a truthy value pins embedded mode even when a config file names an API URL. A running crw-server also serves MCP over HTTP at /mcp, and fastcrw.com runs a hosted endpoint at https://fastcrw.com/mcp that signs in with OAuth (scope mcp:tools, per its protected-resource metadata).

The npm package is a small Node launcher. It looks for a binary named in CRW_MCP_BINARY, then a prebuilt platform package, and otherwise downloads the matching release archive from GitHub on first run, refuses it unless it matches the release's SHA256SUMS, and caches it under ~/.cache/crw-mcp/v<version> (%LOCALAPPDATA% on Windows) (bin/crw-mcp.js at v0.37.2). Its `install` subcommand instead registers the server and a CRW skill file in the AI tools it detects.

What it needs

To run it yourselfNode.js

Node.js for npx; the launcher runs a prebuilt binary for macOS, Linux or Windows on x64 or arm64. Embedded mode needs no account. JavaScript rendering locally needs a CDP browser such as LightPanda (CRW_RENDERER__LIGHTPANDA__WS_URL); without one it fetches over plain HTTP. Cloud mode needs a fastcrw.com account and API key (CRW_API_URL plus CRW_API_KEY); calls spend credits. crw_extract and json/summary output need an LLM, configured on the server or passed as a key.

Limits

In embedded mode crw_search is listed only when a search backend is configured, so most local setups have 8 tools; proxy mode always lists all 9. Content fields are cut to about 15,000 characters by default (maxLength: 0 lifts it) and crw_map returns up to 100 URLs by default (limit: 0 lifts it). crw_crawl stops at depth 2 and 10 pages by default. crw_parse_file has no OCR: scanned PDFs come back empty with a warning. Crawl and map follow robots.txt by default. Clicking and form filling are not in this server; the makers point to their separate crw-browse server for that.

Who it suits

Suits developers who want scraping and crawling tools without an account: embedded mode keeps fetching on their own machine and is free. Pick cloud mode for managed proxies, JavaScript rendering and always-on search, at a per-credit cost. Teams that already host crw-server can point the client at its /mcp endpoint. For multi-step browsing (logging in, clicking through flows) the makers' own crw-browse server fits better. AGPL-3.0 licensing matters to anyone embedding the engine in a product.

Tools 9

crw_scrape
Fetches one URL and returns markdown, HTML, links, a screenshot or schema-shaped JSON
crw_crawl
Starts a bounded crawl from a URL and returns a job id
crw_check_crawl_status
Polls a crawl job and returns the pages collected so far
crw_map
Lists a site's URLs from its sitemap and a short link walk without scraping them
crw_extract
Starts a job that pulls structured JSON from URLs using a prompt or schema and an LLM
crw_check_extract_status
Polls an extract job for its status and results
crw_cancel_extract
Asks a running extract job to stop and returns its status
crw_parse_file
Converts a base64-encoded PDF to markdown, without OCR
crw_search
Searches the web and can scrape the top results; up to 20 results, 5 by default

Similar servers