CrawlEngine MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CrawlEngine MCPscrape https://news.ycombinator.com and give me the clean markdown"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CrawlEngine MCP (Lite Edition)
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:
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.
Instant HTTP 403 Blocks: Default Python
urlliborrequestsUser-Agents trigger anti-bot WAFs immediately.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
httpxandbeautifulsoup4.
๐ Quick Setup in 2 Minutes
1. Installation
git clone https://github.com/johannschiffer/crawlengine-mcp.git
cd crawlengine-mcp
pip install -r requirements.txt2. 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 |
|
| Fetches web page and extracts clean, token-efficient Markdown |
|
| Returns structured array of hyperlinks with anchor texts |
|
| 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 toolsextract_linksC
Extract all navigable hyperlinks, anchors, and references from a web page.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target web page URL | |
| internal_only | No | Filter links to only those belonging to the same domain (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, yet it says nothing about network fetching, timeouts, rate limits, error behavior for unreachable pages, or whether JS-rendered links are captured. It only implies a read-only scrape, which is a significant disclosure gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. It is efficient, though its brevity contributes to the gaps in usage and behavioral detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should explain the shape of the result (e.g., a list of link objects with absolute URLs, anchor text, and possibly internal/external flags) and how failures are surfaced. It covers purpose only, which is adequate but incomplete for a fetch-dependent tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with both 'url' and 'internal_only' fully documented in the schema, so the baseline of 3 applies. The description adds no extra semantics such as URL format expectations or what 'same domain' means for subdomains.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description pairs the specific verb 'extract' with a concrete resource: navigable hyperlinks, anchors, and references from a web page. It is clear what the tool returns, though it never distinguishes itself from sibling tools like scrape_url or extract_metadata, leaving the agent to infer boundaries.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus scrape_url or extract_metadata, and no stated preconditions. The agent must guess at the division of labor between the three siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_metadataB
Retrieve page title, OpenGraph tags, meta descriptions, and canonical links.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target web page URL |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target HTTP/HTTPS web page URL | |
| timeout | No | Request timeout in seconds (default: 15) | |
| extract_markdown | No | Convert HTML into semantic Markdown (default: true) |
TDQS
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.
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.
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.
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.
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.
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.
3 tool updates
v1.0.0- First observed
extract_links - First observed
extract_metadata - First observed
scrape_url
TDQS
Scored across 3 tools
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.
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.
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.
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
Related MCP Connectors
Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.
Web scraping for AI agents. Converts URLs to clean, LLM-ready Markdown with anti-bot bypass.
Unblocking and fresh web data for agents: URL to Markdown, YouTube, Maps, Amazon, jobs. Pay per call
Fetch pages as markdown, search web and news, extract structured data. For AI agents.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to read web pages reliably, returning clean markdown content, hyperlinks, and metadata without navigation or ad noise.36 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables 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
- AlicenseNot gradedqualityAmaintenanceEnables 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
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to fetch and crawl webpages, strip noise, and convert content into clean Markdown while preserving links for token-efficient scraping.MIT