scrapingdog-mcp

scrapingdog-mcp

MCP server that exposes Scrapingdog APIs for web scraping, search engine queries, social media profiles/posts, screenshots, and datacenter proxy usage via nine tools.

Category
访问服务器

README

scrapingdog-mcp

A Model Context Protocol server that exposes the Scrapingdog scraping APIs as tools for MCP-compatible clients (Claude Desktop, Claude Code, and others).

Communicates over stdio. Built with TypeScript and the official MCP SDK.

What it does

Nine tools, each wrapping one Scrapingdog endpoint:

Tool Endpoint What it returns
scrape /scrape Raw HTML of any URL (JS rendering, premium proxies, geotargeting, sessions, stealth, wait)
screenshot /screenshot Page screenshot metadata (png/jpg/webp, full-page, viewport, quality)
google_search /google Google organic results, ads, knowledge graph, SERP features (JSON or HTML)
bing_search /bing/search Bing search results (market/geo/pagination/safe-search)
duckduckgo_search /duckduckgo/search DuckDuckGo results (region, date filter, pagination token)
baidu_search /baidu/search Baidu results (Chinese-language restriction, pagination)
x_profile /x/profile X (Twitter) profile data (name, handle, follower counts, bio)
x_post /x/post X (Twitter) post (tweet) data
datacenter_proxy (forward proxy) Connection details + ready-to-paste curl/Python for proxy.scrapingdog.com:8081

Every tool accepts an optional api_key argument to override the configured key for that call.

Prerequisites

  • Node.js ≥ 18.17 (tested on 20.x).
  • A Scrapingdog API key — get one from your Scrapingdog dashboard after signing up.

Install & build

npm install
npm run build      # outputs to dist/

Provide your API key

The key is resolved in this order (first wins):

  1. The api_key argument on an individual tool call.
  2. The SCRAPINGDOG_API_KEY environment variable.
  3. A .env file containing SCRAPINGDOG_API_KEY=... in the working directory, ~/.scrapingdog.env, or ~/.env.

Option 2 (env var) is recommended — the key never touches disk beyond your MCP client config, and nothing ends up in tool-call logs.

Configure your MCP client

Claude Desktop / Claude Code (claude_desktop_config.json)

{
  "mcpServers": {
    "scrapingdog": {
      "command": "node",
      "args": ["/absolute/path/to/scrcpy/dist/index.js"],
      "env": {
        "SCRAPINGDOG_API_KEY": "your-key-here"
      }
    }
  }
}

Install from npm (no clone needed)

Published as @0pen1/scrapingdog-mcp. Run directly with npx (no install):

npx @0pen1/scrapingdog-mcp

The server reads SCRAPINGDOG_API_KEY from the environment. Pick your CLI below for a one-line setup.

Claude Code

claude mcp add scrapingdog --scope user \
  --env SCRAPINGDOG_API_KEY=your-key-here \
  -- npx -y @0pen1/scrapingdog-mcp

--scope user makes it available in all your projects (use local or project to scope it tighter).

OpenAI Codex CLI

codex mcp add scrapingdog \
  --env SCRAPINGDOG_API_KEY=your-key-here \
  -- npx -y @0pen1/scrapingdog-mcp

This writes to ~/.codex/config.toml. The equivalent TOML block is:

[mcp_servers.scrapingdog]
command = "npx"
args = ["-y", "@0pen1/scrapingdog-mcp"]

[mcp_servers.scrapingdog.env]
SCRAPINGDOG_API_KEY = "your-key-here"

Gemini CLI

gemini mcp add scrapingdog \
  --env SCRAPINGDOG_API_KEY=your-key-here \
  -- npx -y @0pen1/scrapingdog-mcp

Cursor / Windsurf / Claude Desktop (JSON config)

For clients that use a JSON config file, add this block. Typical locations:

  • Claude Desktop — ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
  • Cursor — ~/.cursor/mcp.json (or .cursor/mcp.json per-project)
  • Windsurf — ~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "scrapingdog": {
      "command": "npx",
      "args": ["-y", "@0pen1/scrapingdog-mcp"],
      "env": { "SCRAPINGDOG_API_KEY": "your-key-here" }
    }
  }
}

Replace your-key-here with your Scrapingdog API key from the dashboard. After editing a JSON config, restart the client so it picks up the server.

Run standalone (for testing)

SCRAPINGDOG_API_KEY=your-key node dist/index.js

It speaks JSON-RPC over stdio, so you can pipe messages to it directly.

Example tool calls

scrape          { "url": "https://example.com", "dynamic": true, "country": "us" }
google_search   { "query": "best espresso machines 2026", "results": "10", "country": "us" }
bing_search     { "query": "site:github.com mcp server", "count": "20" }
duckduckgo_search { "query": "rust async runtime", "df": "m" }
baidu_search    { "query": "人工智能", "ct": 2 }
x_profile       { "profileId": "elonmusk" }
x_post          { "tweetId": "1655608985058267139" }
screenshot      { "url": "https://example.com", "fullPage": true, "format": "png" }
datacenter_proxy { "target_url": "https://httpbin.org/ip" }

How responses are handled

  • JSON endpoints (search, social, etc.): the parsed JSON is returned as text so the host can reason about it directly.
  • /scrape: raw HTML is returned as text.
  • /screenshot: the endpoint returns binary image bytes, which can't be carried as text cleanly. The tool reports the content type and byte length, and notes how to fetch the image directly. (If you need true image delivery, extend the handler to base64-encode into an image content block.)
  • Non-2xx responses: returned as MCP error results (isError: true) with the upstream status, content type, and body. Note Scrapingdog reports invalid keys as HTTP 400 with a JSON "Unauthorized request" message — the body makes this clear.

Credit costs (per request)

Scrape: 1 (rotating proxy) → 25 (JS render + premium). Google/Bing/DDG/Baidu search: ~5. Screenshot: 5. Profile/Post scrapers: 5–10. See the pricing/credit table for the full breakdown. Requests time out after 60s upstream.

Project layout

src/
  index.ts          # entry point — creates McpServer, connects stdio transport
  scrapingdog.ts    # API key resolution + shared HTTP request helper
  result.ts         # response → MCP tool-result formatting (ok / error / fromResponse)
  tools.ts          # the 9 tool definitions (schema + handler) and registration

License

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选