Skip to main content
Glama

crawlengine-mcp

PyPI version CI License: MIT Python 3.10+ MCP Compliant Awesome MCP Servers

CrawlEngine MCP is a Model Context Protocol (2024-11-05) web extraction server built on httpx and beautifulsoup4 that converts HTML pages into clean Markdown, resolves relative links, extracts JSON-LD and HTML tables, and rotates browser headers and HTTP/SOCKS5 proxies.

Listed in TensorBlock/awesome-mcp-servers.

Why CrawlEngine MCP?

  1. Context Window Efficiency: Strips <script>, <style>, <nav>, <footer>, cookie banners, and ads before returning Markdown to the model.

  2. Resolved Canonical Links: Converts relative <a href="/docs/start"> paths into full URLs using the page's base_url.

  3. Outbound SSRF Protection: Blocks loopback, RFC1918 private networks, and cloud metadata (169.254.169.254) on both initial requests and HTTP redirects.

Related MCP server: read-website-fast

Features

  • Semantic Markdown Extraction: Preserves headings, lists, code blocks, blockquotes, and resolved inline links without duplicating nested list paragraphs.

  • Browser Header Rotation: Rotates realistic Chrome, Firefox, and Safari User-Agent and Sec-Ch-Ua client-hint headers.

  • HTTP & SOCKS5 Proxy Pool: Round-robin rotation via CRAWLENGINE_PROXIES (httpx[socks]) with automatic ejection after 3 consecutive failures.

  • Structured Data & Metadata: Extracts application/ld+json schemas, HTML <table> rows, OpenGraph tags, canonical URLs, and filtered internal/external links.

Quickstart

Run with uvx

uvx crawlengine-mcp

Claude Desktop / Cursor Configuration

{
  "mcpServers": {
    "crawlengine-mcp": {
      "command": "uvx",
      "args": ["crawlengine-mcp"]
    }
  }
}

CLI Usage

crawlengine-cli scrape https://example.com
crawlengine-cli links https://example.com --internal-only
crawlengine-cli meta https://example.com

MCP Tools Available

Tool

Parameters

Description

scrape_url

url, extract_markdown, use_proxy, timeout

Fetch an HTTP(S) page and convert its main content into Markdown

extract_structured_data

url

Parse application/ld+json blocks and HTML tables into JSON records

extract_links

url, internal_only

Return deduplicated absolute hyperlinks with anchor text

extract_metadata

url

Extract page title, meta description, OpenGraph tags, and canonical URL

get_proxy_status

(none)

Inspect total, healthy, and ejected proxy counts in CRAWLENGINE_PROXIES

Genesis MCP Ecosystem

Module

Description

Repository

CrawlEngine MCP

HTTP web extraction to clean Markdown, JSON-LD parsing, and proxy rotation

GitHub

BrowserBridge MCP

Lightweight HTTP/DOM session automation with SHA-256 action receipts

GitHub

PgSafe MCP

Read-only PostgreSQL/SQLite query guard, PII masking, and dry-run mutations

GitHub

OmniBridge MCP

Multi-channel notification bus with SQLite retry queue

GitHub

SysFlow MCP

Linux systemd inspection, confined log tailing, and port auditing

GitHub

FastMCP Forge

Zero-dependency FastMCP framework, CLI scaffolder, and SSE middleware

GitHub

Support

If you find this project useful, you can support maintenance on Ko-fi.

License

MIT (c) 2026 Johann Schiffer

Available Tools

3 tools
extract_metadataB

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

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.

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
    12 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