Skip to main content
Glama
ZenRows
by ZenRows

ZenRows MCP-Server

Der ZenRows MCP-Server (Model Context Protocol) ist der Standardweg, wie KI-Systeme ZenRows nutzen. Eine einzige Verbindung gibt Ihrem KI-Assistenten, Agenten oder Ihrer Anwendung Echtzeitzugriff auf jede beliebige Website.

npm version MIT License

📚 Vollständige Dokumentation: docs.zenrows.com/integrations/mcp/mcp-overview


Warum ZenRows MCP

  • Erreichen Sie Websites, die normalerweise Bots blockieren. Erhalten Sie skalierten Zugriff auf jede Website, ohne von Anti-Bot-Systemen blockiert zu werden.

  • Verwaltete Scraping-Infrastruktur. Proxy-Rotation, Headless-Browser-Orchestrierung, Anti-Bot-Umgehung und Sitzungsverwaltung laufen auf der ZenRows-Infrastruktur.

  • Anbindung an jede KI, die Sie bereits nutzen. Funktioniert mit jedem MCP-Client, einschließlich KI-Assistenten, Agenten-Frameworks, KI-SDKs, IDE-Plugins und benutzerdefinierten Anwendungen.

  • Einfache Sprache, kein Scraping-Code. Beschreiben Sie die Aufgabe natürlich und die KI wählt das richtige Tool aus. Keine Selektoren, kein Proxy-Management, kein Anti-Bot-Tuning.


Related MCP server: defuddle-mcp

Schnellstart

ZenRows MCP unterstützt zwei Transportoptionen. Beide bieten denselben Satz an Tools und Funktionen. Wählen Sie diejenige, die zu Ihrem Client passt.

Remote-MCP-Server

Verwenden Sie den gehosteten ZenRows MCP-Server, wenn Ihre KI-Anwendung eine LLM-API direkt aufruft. Der Server läuft auf der ZenRows-Infrastruktur, daher muss nichts installiert, konfiguriert oder aktualisiert werden.

Server-URL:

https://mcp.zenrows.com/mcp

Transport: Streamable HTTP

Authentifizierung: OAuth-basiert. Übergeben Sie Ihren ZenRows-API-Schlüssel als Bearer-Token im Authorization-Header bei jeder Anfrage.

Authorization: Bearer YOUR_ZENROWS_API_KEY

Die meisten MCP-Clients akzeptieren dies über ein authorization-Kurzfeld in der Tool-Konfiguration und leiten es automatisch als Bearer-Token weiter. Einige Clients verwenden stattdessen ein freies headers-Feld. Beide Ansätze funktionieren.

Beispiel: OpenAI Responses API

import os
from openai import OpenAI

ZENROWS_API_KEY = os.environ["ZENROWS_API_KEY"]
client = OpenAI(api_key=os.environ["OPENAI_API_KEY"])

response = client.responses.create(
    model="gpt-5",
    tools=[
        {
            "type": "mcp",
            "server_label": "zenrows",
            "server_description": "Web scraping MCP server for accessing live web content.",
            "server_url": "https://mcp.zenrows.com/mcp",
            "authorization": ZENROWS_API_KEY,
            "require_approval": "never",
        }
    ],
    input="Visit https://news.ycombinator.com/ and summarize the three most recent posts.",
)

print(response.output_text)

Für die vollständige Anleitung mit Framework-spezifischen Beispielen siehe die Dokumentation zum Remote-MCP-Server.

Lokaler MCP-Server

Verwenden Sie die lokale stdio-Konfiguration, wenn Ihr MCP-Client den Server als lokalen Subprozess ausführt, anstatt eine Remote-URL aufzurufen. Dies ist das Standard-Setup für Desktop-KI-Tools und IDE-Plugins, einschließlich Claude Desktop, Claude Code, Cursor, Windsurf, VS Code, Zed und JetBrains IDEs.

Paket: @zenrows/mcp auf npm

Authentifizierung: API-Schlüssel über die Umgebungsvariable ZENROWS_API_KEY.

Anforderungen: Node.js installiert (damit npx funktioniert).

Konfiguration:

{
  "mcpServers": {
    "zenrows": {
      "command": "npx",
      "args": ["-y", "@zenrows/mcp"],
      "env": {
        "ZENROWS_API_KEY": "YOUR_ZENROWS_API_KEY"
      }
    }
  }
}

Der genaue Speicherort dieser Konfiguration variiert je nach Client. Siehe die Einrichtungsanleitungen pro Client für den Dateipfad Ihres Clients.


Tools

Das ZenRows MCP stellt zwei Tool-Familien bereit:

  • scrape: Fetch mit einer einzelnen Anfrage, der Markdown, Klartext, HTML, JSON, PDF oder einen Screenshot zurückgibt. Unterstützt durch die Universal Scraper API.

  • browser_*: 30+ Tools für vollständige Browser-Automatisierung, einschließlich Navigation, Klicks, Formularausfüllung, JavaScript-Ausführung, Cookies, Tabs und persistente Sitzungen. Unterstützt durch den Scraping Browser.

Die KI wählt das richtige Tool basierend auf Ihrem Prompt aus. Sie rufen Tools nicht direkt im Code auf.

Siehe die vollständige Tool-Referenz für jedes Tool, jeden Parameter und jeden Rückgabewert.


Entwicklung

git clone https://github.com/ZenRows/zenrows-mcp
cd zenrows-mcp
npm install
cp .env.example .env   # Add your API key
npm run dev            # Run with .env loaded (requires Node.js 20.6+)
npm run build          # Compile to dist/
npm run inspect        # Open the MCP inspector UI

Pull Requests und Issues sind willkommen.


Ressourcen


Lizenz

MIT

Available Tools

1 tool
scrapeA
Read-only
Inspect

Scrape any webpage and return its content using ZenRows.

Use this tool to fetch webpage content for analysis. By default it returns clean markdown, which is ideal for LLM processing.

When to enable options:

  • js_render: page uses React/Vue/Angular, loads content dynamically, or content appears missing on the first attempt

  • premium_proxy: site returns 403/blocked errors even with js_render enabled

  • wait_for: specific content loads after initial render (requires js_render)

  • css_extractor: you only need specific elements, not the whole page

  • autoparse: structured data pages like products or articles

Examples: Basic: { url: "https://example.com" } Dynamic: { url: "https://spa.com", js_render: true } Protected:{ url: "https://protected.com", js_render: true, premium_proxy: true } Extract: { url: "https://shop.com", css_extractor: '{"title":"h1","price":".price"}' }

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe webpage URL to scrape
js_renderNoEnable JavaScript rendering via headless browser. Required for SPAs (React, Vue, Angular) and pages that load content dynamically.
premium_proxyNoUse premium residential proxies to bypass anti-bot protection. Required for heavily protected sites. Implies higher credit cost.
proxy_countryNoCountry for geo-targeted scraping. ISO 3166-1 alpha-2 code (e.g. 'US', 'GB', 'DE'). Requires premium_proxy=true.
response_typeNoOutput format. 'markdown' (default) preserves structure and is ideal for LLMs. 'plaintext' strips all formatting for pure text extraction. 'pdf' returns a PDF of the page. 'html' returns the raw HTML source (omits the response_type param; ZenRows default). Ignored when autoparse, css_extractor, outputs, or screenshot params are set.markdown
autoparseNoAutomatically extract structured data from the page into JSON. Best for product pages, articles, and listings.
css_extractorNoExtract specific elements using CSS selectors. JSON object mapping names to selectors, e.g. '{"title":"h1","price":".price-tag"}'. Returns JSON instead of full page content.
wait_forNoCSS selector to wait for before capturing. Use when key content loads after the initial page render. Requires js_render=true.
waitNoMilliseconds to wait after page load before capturing content. Max 30000 (30s). Requires js_render=true.
js_instructionsNoJSON array of browser interactions to run before scraping. Requires js_render=true. Example: [{"click":"#load-more"},{"wait":1000},{"wait_for":".results"}]
outputsNoComma-separated list of data types to extract as structured JSON. Available: emails, headings, links, menus, images, videos, audios. Use '*' for all types. Returns JSON instead of full page content.
screenshotNoCapture an above-the-fold screenshot of the page. Returns an image instead of text content. Useful for visual verification or debugging.
screenshot_fullpageNoCapture a full-page screenshot including content below the fold. Returns an image instead of text content.
screenshot_selectorNoCapture a screenshot of a specific element using a CSS selector. Example: ".product-card". Returns an image instead of text content.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. Description adds valuable behavioral context: default markdown output ideal for LLMs, and crucially explains that certain parameters (css_extractor, autoparse, outputs, screenshot) change the return type from text to JSON or images. This output-switching behavior is not captured in annotations.

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?

Well-structured with clear information hierarchy: purpose statement, default behavior, conditional options guide, and examples. Every section earns its place. Examples section is slightly verbose but appropriate for a 14-parameter tool where syntax matters. Good use of formatting (bullet points, code blocks).

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 complex tool with 14 parameters and no output schema, description adequately explains return value variations (markdown default vs JSON vs images depending on params). Covers the ZenRows-specific options (premium_proxy credit cost mentioned in schema, wait_for interactions explained). Could mention error handling or rate limits, but sufficient for invocation.

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

Parameters4/5

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

Schema coverage is 100%, establishing baseline 3. Description adds significant value via the 'When to enable options' section which provides contextual semantics for when to use parameters (e.g., 'page uses React/Vue/Angular' triggers js_render). The concrete examples demonstrate parameter interactions and valid value formats (e.g., CSS selector JSON syntax).

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

Purpose5/5

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

Opens with specific verb+resource ('Scrape any webpage') and identifies the underlying service ('using ZenRows'). Clearly states default output format ('clean markdown') and primary use case ('fetch webpage content for analysis'). No siblings to differentiate from, but scope is precisely defined.

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

Usage Guidelines5/5

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

Contains explicit 'When to enable options' section that maps specific technical conditions (React/Vue/Angular, 403 errors, delayed content loading) to parameter usage. Provides concrete decision trees for selecting js_render, premium_proxy, and other options. Includes practical JSON examples showing parameter combinations.

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

TDQS

A4.3/5.0
Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap between tools. The single 'scrape' tool has a clear, distinct purpose of fetching webpage content.

Naming Consistency5/5

There is only one tool name, so consistency is inherently perfect. The name 'scrape' follows a clear verb-based pattern appropriate for its function.

Tool Count2/5

A single tool is too few for most server purposes, as it limits functionality and flexibility. While scraping is a focused domain, having only one tool feels thin and may not cover related needs like batch processing or error handling.

Completeness3/5

The tool covers basic webpage scraping with options for dynamic content and proxies, but there are notable gaps. Missing operations might include checking scrape status, managing sessions, or handling rate limits, which could lead to agent workarounds or failures in complex scenarios.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP-native web scraping and search API for AI agents. Converts any URL to clean Markdown with 90% success rate, including Cloudflare-protected sites and JS SPAs. Real-time web search via Brave Search API. CAPTCHA solving built-in. 10 free scrapes/day.
    5
    9
    5
    MIT
  • A
    license
    Not graded
    quality
    F
    maintenance
    An MCP server that extracts clean Markdown or HTML content from web pages by stripping away ads, navigation, and clutter. It offers tools to process URLs or raw HTML, returning structured metadata alongside the main article content.
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Remote MCP server for web scraping with anti-bot evasion. Provides stealth HTTP fetching, headless browser with Cloudflare bypass, CSS selectors, YouTube transcripts, and Markdown conversion.
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ZenRows/zenrows-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server