Skip to main content
Glama
johannschiffer

CrawlEngine MCP

CrawlEngine MCP (Lite Edition)

License: MIT Python 3.10+ MCP Compliant

CrawlEngine MCP is a resilient Model Context Protocol server that gives AI agents in Claude Desktop, Cursor, Windsurf, and Antigravity clean web-reading superpowers without choking context windows on raw HTML or getting instantly blocked by basic anti-bot firewalls.


๐Ÿ•ท๏ธ Why CrawlEngine MCP?

Most default web-fetching tools used by AI models suffer from severe drawbacks:

  1. Raw HTML Token Bloat: A 150KB web page contains ~90% useless boilerplate (navbars, tracking pixels, CSS bundles, cookie banners) that burns LLM tokens and induces hallucinations.

  2. Instant HTTP 403 Blocks: Default Python urllib or requests User-Agents trigger anti-bot WAFs immediately.

  3. Broken Relative Links: Naive scrapers return unnavigable relative paths (/docs/quickstart) instead of canonical URLs.

CrawlEngine solves this by rotating realistic modern browser fingerprints and transforming messy DOM trees into pristine, semantic Markdown.


Related MCP server: read-website-fast

โšก Features (Lite Edition)

  • ๐Ÿงน Semantic Markdown Conversion: Strips scripts, styles, popups, cookie consent overlays, and ads, keeping only the core article or documentation.

  • ๐ŸŽญ Realistic Browser Fingerprinting: Automatically rotates User-Agent, Sec-Ch-Ua, and platform headers across Chrome, Safari, and Firefox.

  • ๐Ÿ”— Deep Link Discovery: Extracts all outbound and internal links with anchor text.

  • ๐Ÿท๏ธ Metadata Extraction: Gathers OpenGraph, Twitter Cards, meta descriptions, and canonical URLs.

  • ๐Ÿชถ Zero Complex Dependencies: Pure Python using httpx and beautifulsoup4.


๐Ÿš€ Quick Setup in 2 Minutes

1. Installation

git clone https://github.com/johannschiffer/crawlengine-mcp.git
cd crawlengine-mcp
pip install -r requirements.txt

2. Configure Claude Desktop (claude_desktop_config.json)

On Linux: ~/.config/Claude/claude_desktop_config.json
On macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "crawlengine": {
      "command": "python",
      "args": ["-m", "crawlengine.server"],
      "cwd": "/path/to/crawlengine-mcp"
    }
  }
}

3. Verify via CLI

python -m crawlengine.cli scrape https://news.ycombinator.com

๐Ÿ› ๏ธ MCP Tools Exposed to AI Agents

Tool

Parameters

Description

scrape_url

url, extract_markdown, timeout

Fetches web page and extracts clean, token-efficient Markdown

extract_links

url, internal_only

Returns structured array of hyperlinks with anchor texts

extract_metadata

url

Retrieves page title, meta description, and OpenGraph data


๐Ÿ’Ž Need Enterprise Anti-Bot Scraping? Upgrade to CrawlEngine Pro

Dealing with complex JavaScript SPAs, Cloudflare Turnstile, or scraping behind proxy pools?

Feature

Lite (Open Source)

Pro ($14.99 USD)

Semantic Markdown Extraction

โœ…

โœ…

Browser Fingerprint Rotation

โœ…

โœ…

OpenGraph & Link Extraction

โœ…

โœ…

Automatic Headless Browser Fallback (Playwright Chromium)

โŒ

โœ…

JavaScript SPA Hydration (React, Next.js, Vue)

โŒ

โœ…

Proxy Pool Rotation (HTTP & SOCKS5 with auto-ejection)

โŒ

โœ…

Structured Data Extractor (JSON-LD, Pricing Tables, Products)

โŒ

โœ…

Production Docker Container

โŒ

โœ…

Full Pytest Suite & Anti-Detection Guide

โŒ

โœ…

๐Ÿ‘‰ Get CrawlEngine Pro on Gumroad ($14.99)


๐Ÿ“„ License

MIT License. See LICENSE for details.

Available Tools

3 tools
extract_metadataB

Retrieve page title, OpenGraph tags, meta descriptions, and canonical links.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTarget web page URL

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral burden. "Retrieve" implies a read-only network fetch, but there is no disclosure of failure modes (non-HTML pages, blocked/403 responses, empty metadata), rate limits, or whether the page is actually downloaded. For a no-annotation tool this is a substantial gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence that front-loads the verb and lists the return payload without filler. It is appropriately sized, though it stops short of any routing or caveat content that would make the compactness maximally useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema, enumerating the extracted fields effectively documents the return shape. What is missing is behavioral context (failure modes, page-type requirements), which matters given the absence of both annotations and an output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage ("Target web page URL"), so the schema already fully documents it. The description adds no syntax, format, or constraint detail beyond what the schema states, which is the baseline-3 case for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ("Retrieve") and enumerates exactly which metadata artifacts are returned: page title, OpenGraph tags, meta descriptions, canonical links. This differentiates it from siblings like scrape_url and extract_links by scope, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over scrape_url or extract_links, nor any stated preconditions (e.g., must be an HTML page, must be reachable). The agent is left to infer usage from the tool's name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrape_urlB

Scrape a web page with browser fingerprinting and convert its content into clean, token-efficient Markdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTarget HTTP/HTTPS web page URL
timeoutNoRequest timeout in seconds (default: 15)
extract_markdownNoConvert HTML into semantic Markdown (default: true)

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses 'browser fingerprinting' (implying anti-bot evasion) and the Markdown output form, but says nothing about what happens on blocked/failed requests, whether JavaScript is rendered, rate limits, or whether the scrape is subject to robots/permission constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence, front-loaded with the action and resource, and every clause earns its place by naming the distinguishing output behavior. No filler or repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, so the description is the only source of behavioral information. It covers the core purpose adequately but omits failure modes, blocking behavior, and any indication of cost or latency, which matter for a scraper that relies on fingerprint evasion.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: url, timeout, and extract_markdown are all documented in the schema with types and defaults. The description adds no syntax or format detail beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Scrape a web page') and adds the output transformation ('convert its content into clean, token-efficient Markdown'), so the agent knows exactly what it produces. It does not explicitly contrast itself with the siblings extract_links and extract_metadata, which an agent would need to choose among for a given page.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of prerequisites, and no routing to alternatives. The siblings extract_links and extract_metadata are never referenced, so selection between the three tools is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv1.0.0
    • First observedextract_links
    • First observedextract_metadata
    • First observedscrape_url

TDQS

B3.4/5.0

Scored across 3 tools

Disambiguation5/5

Each tool targets a distinct page-extraction concern: full content as Markdown, hyperlinks, and metadata. An agent can choose unambiguously based on the desired output.

Naming Consistency5/5

All names follow a verb_noun snake_case pattern (scrape_url, extract_links, extract_metadata). The two extract_* tools share a clear family, and the slight verb difference is semantically appropriate.

Tool Count4/5

Three tools is a lean but reasonable surface for a page-level scraping utility, and each tool earns its place. However, for a server branded as a 'CrawlEngine,' the count feels slightly under-scoped for crawling workflows.

Completeness3/5

The set covers single-page content, links, and metadata, but no tool actually crawls a site, follows extracted links, or handles batches/sitemaps. This is a notable gap for a crawl engine, though an agent could chain extract_links and scrape_url manually.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to read web pages reliably, returning clean markdown content, hyperlinks, and metadata without navigation or ad noise.
    3
    6 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents and LLM pipelines to fetch and crawl web pages, extract readable content, and convert it into clean Markdown with preserved links while minimizing token usage.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to fetch and crawl web pages, strip noise, and convert content into clean Markdown with preserved links for token-efficient scraping and downstream processing.
    MIT