npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

rrcrawl

v0.1.0

Published

Tiny round-robin crawl MCP backed by Firecrawl, Tavily, and Scrape.do

Downloads

150

Readme

rrcrawl

A tiny stdio MCP server that gives agents two web-content tools:

  • scrape: fetch one URL as Markdown, round-robin across Firecrawl, Tavily, and Scrape.do.
  • crawl: crawl multiple pages as Markdown, round-robin across Firecrawl and Tavily. Scrape.do is intentionally excluded because it has no native multi-page crawl API.

Each call advances its tool's round-robin cursor. If the selected provider fails, rrcrawl tries every other provider in that tool's pool once.

Requirements

  • Node.js 22 or newer
  • At least one provider credential, or a OneCLI gateway configuration

Run with npx

Once the package is published, no local installation is needed:

npx -y rrcrawl@latest

An MCP client configuration can launch it directly:

{
  "mcpServers": {
    "rrcrawl": {
      "command": "npx",
      "args": ["-y", "rrcrawl@latest"],
      "env": {
        "FIRECRAWL_API_KEY": "fc-...",
        "TAVILY_API_KEY": "tvly-...",
        "SCRAPEDO_API_TOKEN": "..."
      }
    }
  }
}

With OneCLI:

RRCRAWL_AUTH_MODE=onecli onecli run -- npx -y rrcrawl@latest

Local development

npm install
npm run build

Copy .env.example to .env for local configuration. .env is loaded automatically and is ignored by Git.

Authentication modes

RRCRAWL_AUTH_MODE accepts:

  • env: read FIRECRAWL_API_KEY, TAVILY_API_KEY, and SCRAPEDO_API_TOKEN.
  • onecli: omit provider credentials from requests and rely on OneCLI's transparent gateway to inject them.
  • auto (default): use onecli when ONECLI_URL is present; otherwise use env.

RRCRAWL_PROVIDERS optionally restricts the active providers:

RRCRAWL_PROVIDERS=firecrawl,tavily,scrapedo

In env mode, providers without credentials are disabled unless explicitly listed, in which case startup fails with a useful configuration error.

OneCLI

Configure OneCLI secrets for the provider API hosts:

  • api.firecrawl.dev: inject Authorization: Bearer {secret} for /v2/*.
  • api.tavily.com: inject Authorization: Bearer {secret} for /extract and /crawl.
  • api.scrape.do: inject the token query parameter for /*.

Then run the built server through the gateway:

RRCRAWL_AUTH_MODE=onecli onecli run -- node dist/index.js

No placeholder provider keys are required: rrcrawl omits the credential fields in OneCLI mode.

When HTTPS_PROXY or HTTP_PROXY is set (as OneCLI's gateway does), rrcrawl installs a matching proxy dispatcher on startup so all provider calls route through the gateway. Node's global fetch does not honor these variables on its own, so this is required behind an egress-locked gateway. NODE_EXTRA_CA_CERTS (also injected by the gateway) is honored automatically for the gateway's CA.

Local MCP client configuration

After npm run build, configure an MCP client with:

{
  "mcpServers": {
    "rrcrawl": {
      "command": "node",
      "args": ["/absolute/path/to/rrcrawl/dist/index.js"],
      "env": {
        "RRCRAWL_AUTH_MODE": "env",
        "FIRECRAWL_API_KEY": "fc-...",
        "TAVILY_API_KEY": "tvly-...",
        "SCRAPEDO_API_TOKEN": "..."
      }
    }
  }
}

For .env configuration, set the MCP server's working directory to this project or pass the variables explicitly.

Tool schemas

scrape

{ "url": "https://example.com/article" }

Returns the selected provider, canonical URL when available, optional title, and Markdown.

crawl

{
  "url": "https://example.com/docs",
  "limit": 10,
  "maxDepth": 1,
  "includePaths": ["/docs/.*"],
  "allowExternal": false,
  "instructions": "Return API reference pages"
}

limit is capped at 100 and maxDepth at 5 to bound cost and response size.

Development

npm test
npm run check
npm run build

Tests use injected HTTP fakes and never call paid provider APIs.

Publishing

The package name rrcrawl was unclaimed on npm when this project was created. Availability is only guaranteed after the first successful publish.

npm login
npm publish

prepublishOnly runs tests and type-checking, while prepack always rebuilds the distributable executable.