NestDaddy

polite-crawler

io.github.mark1russell7/polite-crawler · v0.6.1

A polite crawler for agents: obeys robots.txt, fetches each page once, finds and verifies quotes.

Connect Runs on your machine

Terminal
claude mcp add polite-crawler -e POLITE_CRAWLER_DIR=<POLITE_CRAWLER_DIR> -e POLITE_CRAWLER_CONTACT=<POLITE_CRAWLER_CONTACT> -e POLITE_CRAWLER_ALLOW_PRIVATE=<POLITE_CRAWLER_ALLOW_PRIVATE> -e POLITE_CRAWLER_ALLOW_USER_PROVIDED=<POLITE_CRAWLER_ALLOW_USER_PROVIDED> -e POLITE_CRAWLER_SIGN_KEY=<POLITE_CRAWLER_SIGN_KEY> -e POLITE_CRAWLER_SIGNATURE_AGENT=<POLITE_CRAWLER_SIGNATURE_AGENT> -- npx -y [email protected]
claude_desktop_config.json
{
  "mcpServers": {
    "polite-crawler": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "POLITE_CRAWLER_DIR": "<POLITE_CRAWLER_DIR>",
        "POLITE_CRAWLER_CONTACT": "<POLITE_CRAWLER_CONTACT>",
        "POLITE_CRAWLER_ALLOW_PRIVATE": "<POLITE_CRAWLER_ALLOW_PRIVATE>",
        "POLITE_CRAWLER_ALLOW_USER_PROVIDED": "<POLITE_CRAWLER_ALLOW_USER_PROVIDED>",
        "POLITE_CRAWLER_SIGN_KEY": "<POLITE_CRAWLER_SIGN_KEY>",
        "POLITE_CRAWLER_SIGNATURE_AGENT": "<POLITE_CRAWLER_SIGNATURE_AGENT>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "polite-crawler": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "POLITE_CRAWLER_DIR": "<POLITE_CRAWLER_DIR>",
        "POLITE_CRAWLER_CONTACT": "<POLITE_CRAWLER_CONTACT>",
        "POLITE_CRAWLER_ALLOW_PRIVATE": "<POLITE_CRAWLER_ALLOW_PRIVATE>",
        "POLITE_CRAWLER_ALLOW_USER_PROVIDED": "<POLITE_CRAWLER_ALLOW_USER_PROVIDED>",
        "POLITE_CRAWLER_SIGN_KEY": "<POLITE_CRAWLER_SIGN_KEY>",
        "POLITE_CRAWLER_SIGNATURE_AGENT": "<POLITE_CRAWLER_SIGNATURE_AGENT>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "polite-crawler": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "POLITE_CRAWLER_DIR": "<POLITE_CRAWLER_DIR>",
        "POLITE_CRAWLER_CONTACT": "<POLITE_CRAWLER_CONTACT>",
        "POLITE_CRAWLER_ALLOW_PRIVATE": "<POLITE_CRAWLER_ALLOW_PRIVATE>",
        "POLITE_CRAWLER_ALLOW_USER_PROVIDED": "<POLITE_CRAWLER_ALLOW_USER_PROVIDED>",
        "POLITE_CRAWLER_SIGN_KEY": "<POLITE_CRAWLER_SIGN_KEY>",
        "POLITE_CRAWLER_SIGNATURE_AGENT": "<POLITE_CRAWLER_SIGNATURE_AGENT>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
POLITE_CRAWLER_DIR
Optional
The folder of the store. The default is ~/.polite-crawler.
POLITE_CRAWLER_CONTACT
Optional
An email address or URL for the From header of each request.
POLITE_CRAWLER_ALLOW_PRIVATE
Optional
Set it to 1 to let the crawler fetch loopback, private and link-local addresses. The default refuses them.
POLITE_CRAWLER_ALLOW_USER_PROVIDED
Optional
Set it to 1 to let user_provided read a page that refuses AI input when the client cannot ask the user to confirm.
POLITE_CRAWLER_SIGN_KEY
Optional
The file of an Ed25519 private key (PKCS#8 PEM or JWK). The crawler signs each request with it (Web Bot Auth). It needs POLITE_CRAWLER_SIGNATURE_AGENT.
POLITE_CRAWLER_SIGNATURE_AGENT
Optional
Where a site finds the public key of POLITE_CRAWLER_SIGN_KEY: the https origin of the key directory, or the URL of a JSON Web Key Set.

Details

Package[email protected] (NPM, stdio)
First published13 Nov 2026
Last updated13 Nov 2026
Registry nameio.github.mark1russell7/polite-crawler

More search and web servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.