Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

HasData Web Scraping

de HasDataversión 1.0.2i★ –iComputadora o nube
Nombre en el registrocom.hasdata/web-scraping

Instalar

Resumen

Descripción del creador (original en inglés)

Fetch any public web page through managed proxies, with optional JS rendering and extraction rules.

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Computadora o nube
  • Transporte: stdio, Streamable HTTP
  • Categoría: Web y navegadores
  • Debes completar: HASDATA_API_KEY, x-api-key

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

Los valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.

Necesitas

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Esta dirección necesita una clave en un header de la solicitud, y el menú para agregar conectores no puede ponerla. Usa Claude Code, Cursor o VS Code.

O ejecútalo en tu computadora

Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json

{
  "mcpServers": {
    "web-scraping": {
      "command": "npx",
      "args": [
        "-y",
        "@hasdata/web-scraping-mcp"
      ],
      "env": {
        "HASDATA_API_KEY": "your-value"
      }
    }
  }
}

Ejecuta esto en tu terminal

claude mcp add --transport http web-scraping 'https://mcp.hasdata.com/mcp?apis=web_scraping' --header 'x-api-key: your-value'

O ejecútalo en tu computadora

claude mcp add web-scraping --env HASDATA_API_KEY=your-value -- npx -y @hasdata/web-scraping-mcp

Completa los valores vacíos antes de ejecutarlo.

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "web-scraping": {
      "url": "https://mcp.hasdata.com/mcp?apis=web_scraping",
      "headers": {
        "x-api-key": "your-value"
      }
    }
  }
}

O ejecútalo en tu computadora

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "web-scraping": {
      "command": "npx",
      "args": [
        "-y",
        "@hasdata/web-scraping-mcp"
      ],
      "env": {
        "HASDATA_API_KEY": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "web-scraping": {
      "type": "http",
      "url": "https://mcp.hasdata.com/mcp?apis=web_scraping",
      "headers": {
        "x-api-key": "your-value"
      }
    }
  }
}

O ejecútalo en tu computadora

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "web-scraping": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@hasdata/web-scraping-mcp"
      ],
      "env": {
        "HASDATA_API_KEY": "your-value"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Esta dirección necesita una clave en un header de la solicitud, y el menú para agregar conectores no puede ponerla. Usa Claude Code, Cursor o VS Code.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Valores que debes completar

  • HASDATA_API_KEY secreto obligatorio env
    HasData API key, created at app.hasdata.com. 1,000 free credits every month, no card.
  • x-api-key secreto obligatorio HTTP header
    HasData API key, created at app.hasdata.com. 1,000 free credits every month, no card.

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

Todavía no hemos leído la lista de herramientas de este servidor; revisamos los endpoints por turnos.

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 6 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con el dominio hasdata.com (el registro comprueba quién es dueño del dominio)

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    El endpoint responde

    Aún sin revisar; revisamos los endpoints por turnos

  • … Aún sin revisar

    Inicio de sesión con OAuth

    Aún sin revisar; revisamos los endpoints por turnos

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Aún sin revisar; leemos la lista de herramientas cuando revisamos el endpoint

Comparado con otros en Web y navegadoresi

  • Más estrellas que el 0% de los otros 876 servidores de esta categoría
  • Publicado en el registro más recientemente que el 45% de los otros 876 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 876 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro HasData Web Scraping?

Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

Debes completar: HASDATA_API_KEY, x-api-key

¿Se ejecuta en mi computadora o en la nube?

Funciona de las dos formas: instálalo en tu computadora o conéctate a la versión en la nube.

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (1.0.2) llegó al registro hace 43 días.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.

¿Qué puedo usar en su lugar?

En la misma categoría: Browser Use, Chrome DevTools MCP, MCP Server Browser

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

Browser Use

de browser-use

Browser agents and stealth cloud browsers for AI: run web tasks, fill forms, extract data.

Computadora o nube★ 120.087MITActualizado hace 16 días
Instalar

Chrome DevTools MCP

de ChromeDevTools

MCP server for Chrome DevTools

Se ejecuta en tu computadora★ 54.821Apache-2.0Actualizado hace 15 días
Instalar

MCP Server Browser

de bytedance

MCP server for browser use access

Se ejecuta en tu computadora★ 39.550Apache-2.0Actualizado hace 14 meses
Instalar

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

Web Scraping MCP Server

A hosted Web Scraping MCP server that gives Claude, Cursor, Windsurf and any other MCP client one read-only tool for fetching any public web page. It goes out through managed proxies, renders JavaScript when a page needs it, and returns clean markdown, plain text, raw HTML or structured JSON, with nothing to host and no browser in your stack.

This is the fallback for sites with no dedicated API. When a site does have one in the HasData catalogue, that tool returns parsed fields and this one returns a page.

1,000 free credits every month, no card required. A plain fetch costs 1 credit, so the free tier covers 1,000 of them.

https://mcp.hasdata.com/mcp?apis=web_scraping
  • Prompts and resources

Contents

  • What you need
  • Quick start
  • Example prompts
  • Tools
  • Output formats
  • Errors and failure paths
  • Pricing, free tier and limits
  • How it compares
  • FAQ
  • HasData links
  • Development
  • Contributing
  • License

What you need

An MCP client and a HasData API key from the dashboard, free to create with no card. This is a remote server, so the simplest path is a URL and an x-api-key header, with no container to run. A client that only speaks stdio reaches it through a thin launcher, published as @hasdata/web-scraping-mcp on npm and hasdata-web-scraping-mcp on PyPI, shown below.

Quick start

The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.

FieldValue
URLhttps://mcp.hasdata.com/mcp?apis=web_scraping
TransportHTTP, streamable
Auth headerx-api-key: HASDATA_API_KEY

Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.

Claude Code

claude mcp add --transport http web-scraping "https://mcp.hasdata.com/mcp?apis=web_scraping" \

--header "x-api-key: HASDATA_API_KEY"

Claude Desktop

Settings, then Connectors, then Add custom connector, then paste https://mcp.hasdata.com/mcp?apis=web_scraping and sign in.

For the config-file route, Claude Desktop loads only local (stdio) servers, so it reaches a remote server through a stdio launcher. The @hasdata/web-scraping-mcp package is that launcher, and it reads the key from the environment. Add this to claude_desktop_config.json:

{

"mcpServers": { "web-scraping": { "command": "npx", "args": ["-y", "@hasdata/web-scraping-mcp"], "env": { "HASDATA_API_KEY": "YOUR_KEY" } } } }

For Python instead of Node, swap the launcher for the PyPI package, which uvx runs without a manual install:

{

"mcpServers": { "web-scraping": { "command": "uvx", "args": ["hasdata-web-scraping-mcp"], "env": { "HASDATA_API_KEY": "YOUR_KEY" } } } }

Cursor

~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:

{

"mcpServers": { "web-scraping": { "url": "https://mcp.hasdata.com/mcp?apis=web_scraping", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }

Windsurf

~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl, not url:

{

"mcpServers": { "web-scraping": { "serverUrl": "https://mcp.hasdata.com/mcp?apis=web_scraping", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }

VS Code

.vscode/mcp.json in the workspace:

{

"servers": { "web-scraping": { "type": "http", "url": "https://mcp.hasdata.com/mcp?apis=web_scraping", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }

Example prompts

  • Fetch this page as markdown and summarise it.
  • Read this documentation page and pull out every code block.
  • Get the titles and links from the front page of this site as JSON.
  • This page loads its content with JavaScript, so render it and wait for the results list before reading.
  • Fetch this page through a German residential proxy and tell me whether the pricing differs.
  • Take a screenshot of this page.

One call answers each of these. What changes between them is how much of the browser you asked for, and that is what the call costs.

Tools

ToolWhat it returns
hasdata_web_scraping_web_scraping_scrapeWebPageHTML, text, markdown, and/or JSON along with status code, extracted emails and links, CSS-selector extractions, and AI-structured fields per schema. 1 credit a call for a plain fetch, 10 with JS rendering

One tool. The cost depends on what you turn on, and the table is in Pricing.

Scrape web page

hasdata_web_scraping_web_scraping_scrapeWebPage

Fetch one URL.

ParameterTypeRequiredNotes
urlstringyesThe page to fetch
outputFormatarrayAny of markdown, text, html, json. See Output formats
jsRenderingbooleanRender the page in a browser. On by default, and the main cost lever
proxyTypestringdatacenter or residential
proxyCountrystringUS, UK, DE, IE, FR, IT, SE, BR, CA, JP, SG, IN or ID
headersobjectCustom request headers
waitnumberMilliseconds to wait after load
waitForstringCSS selector to wait for before reading
jsScenarioarrayActions to run on the page. See below
extractRulesobjectCSS selectors to pull named fields
aiExtractRulesobjectA typed schema an LLM fills from the page
extractLinksbooleanCollect the page's links
extractEmailsbooleanCollect email addresses on the page
screenshotbooleanCapture the rendered page
blockResourcesbooleanSkip images and stylesheets
blockAdsbooleanSkip ad requests
blockUrlsarraySkip these URLs
includeOnlyTagsarrayKeep only elements matching these selectors
excludeTagsarrayDrop elements matching these selectors
removeBase64ImagesbooleanStrip inline base64 images from the output

extractRules maps a field name to a CSS selector, with @attr to read an attribute rather than text.

{ "title": "h1", "link_href": "a#link @href", "page_text": "body" }

jsScenario is an array of actions run in order, covering click, wait, waitFor, waitForAndClick, scrollX, scrollY, fill and evaluate for arbitrary JavaScript. It needs jsRendering on.

aiExtractRules describes the shape you want and lets a model fill it from the HTML. Each key is an output field, typed as string, number, boolean, list or item for a nested object.

Prompts and resources

The server ships one prompt, a ready-made workflow a client can offer instead of making the user compose a tool call.

PromptWhat it does
scrape_web_pageFetch any public web page and summarize its content.

Alongside them the server exposes 2 resources, one per parameter whose accepted values are a fixed list. Reading one is cheaper than learning the vocabulary from a rejected call, and it costs no credits. Each URI is hasdata://web_scraping/ .

ParameterValuesWhat it selects
proxyType2Type of proxy to use.
proxyCountry13Optional proxy country code.

Both lists are served without an API key, so a client can read them before a user has signed up.

Output formats

This is the part worth reading before your first call, because the response shape moves with outputFormat.

Ask for exactly one of markdown, text or html, and the content arrives as a plain string in text at the top level.

{

"url": "https://api.hasdata.com/scrape/web/", "status": 200, "json": null, "text": "# Example Domain\n\nThis domain is for use in documentation examples without needing permission. Avoid use in operations.\n\nLearn more\n" }

Include json, alone or alongside another format, and everything moves inside json, the top-level text becomes null, and the requested formats become keys in there next to the page metadata.

{

"json": { "requestMetadata": { "id": "7764031a-43f7-4102-8561-a7b7a6f1cbf5", "status": "ok" }, "statusCode": 200, "statusText": "OK", "headers": { "server": "nginx", "content-type": "text/html; charset=utf-8" }, "extractedData": { "title": "Hacker News", "firstStory": ["iPhone Duo", "apple.com", "Show HN: What if the speed of light was 5 km/h?"] } }, "text": null }

extractedData holds the extractRules results. A selector matching several elements returns all of them as an array, so .titleline a on a listing page returns every match rather than the first.

Errors and failure paths

Plan for these rather than assuming a happy path.

`extractLinks` and `extractEmails` do nothing unless `outputFormat` includes `json`. They put links and emails inside the json object, and there is nowhere for them to go in a plain markdown response. Asking for them with outputFormat: ["text"] returns the text and silently no links.

A 404 or a 403 on the target page is a successful call. The page's own status comes back as statusCode inside json, or as status at the top level, and the request is billed either way. Check the status before you parse the body.

`jsRendering` is on by default, and it is what the call costs. Turning it off takes a fetch from 10 credits to 1. Most static pages, documentation, articles and anything server-rendered do not need it. Turn it on when the content arrives empty without it.

`waitFor` beats `wait`. A fixed delay is a guess that is either too short on a slow load or wasted on a fast one. A CSS selector waits for the thing you actua

Solo se muestra el principio; lee el resto en el repo

Pregunta a PopNx