mcpField
S
ScrAPI MCP Server

ScrAPI MCP Server

本地服务
scrapi.tech浏览器自动化18今天更新

关于 ScrAPI MCP Server

ScrAPI MCP Server 让 MCP 客户端通过 ScrAPI 抓取网页,适用于需要读取页面内容或结构的场景。它可返回 HTML 或 Markdown,并支持抓取前执行浏览器操作。

主要功能

  1. 01抓取网页并返回 HTML
  2. 02抓取网页并返回 Markdown
  3. 03抓取前执行浏览器操作
  4. 04支持 stdio 与 Streamable HTTP

适用场景

  1. 01提取网页文章文本供分析
  2. 02获取页面链接、表格或元数据
  3. 03接受 Cookie 横幅后抓取页面

MCP 相关

它向 MCP 客户端提供网页抓取工具,可通过 stdio 或 Streamable HTTP 连接;工具能以 HTML 或 Markdown 返回页面内容。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"scrapi": {
"command": "npx",
"args": [
"-y",
"@deventerprisesoftware/scrapi-mcp"
]
}
}
}
启动命令npx -y @deventerprisesoftware/scrapi-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@deventerprisesoftware/scrapi-mcp

工具

2

收录的工具列表 · 更新于 3 周前

参数类型必填说明
urlstring是要抓取的 URL
browserCommandsstring否可选的 JSON 浏览器命令数组,在抓取前执行。可用命令和格式请参见工具说明。

详细介绍

ScrAPI 标志

ScrAPI MCP 服务

License: MIT NPM Downloads Docker Pulls LightNow capabilities scrapi-mcp MCP server

ScrAPI MCP 服务让兼容 MCP 的客户端通过 ScrAPI 抓取网页。

如果网页需要真实浏览器会话、验证码处理、住宅代理访问、Cookie 横幅处理、JavaScript 渲染、基于地理位置的抓取,或抓取前执行点击、滚动等浏览器操作,ScrAPI 都很实用。

目录

功能

  • 通过 ScrAPI 抓取任何有效的 https:// 或 http:// URL。
  • 返回原始 HTML 或易读的 Markdown。
  • 抓取前执行浏览器命令。
  • 为桌面 MCP 客户端使用 stdio 传输。
  • 为远程 MCP 客户端和本地测试使用 Streamable HTTP 传输。
  • 通过 npx、Docker、Smithery 或从源代码运行。

可用工具

scrape_url_html

抓取 URL 并以 HTML 形式返回结果。

当你需要页面结构、链接、表格、嵌入的元数据或自定义后续解析时,请使用此工具。

输入:

名称类型必填描述
urlstring是要抓取的绝对 URL。必须是有效的 URL。
browserCommandsstring否JSON 数组字符串,包含抓取前要执行的浏览器命令。

返回:

  • 请求页面的 text/html 内容。
  • 当上游请求失败时,返回带有 ScrAPI 错误正文的 isError: true。
scrape_url_markdown

抓取 URL 并以 Markdown 形式返回结果。

当文本内容比 HTML 结构更重要时,请使用此工具,例如提取文章内容、产品文案、搜索结果摘要或适合大模型分析的网页内容。

输入:

名称类型必填描述
urlstring是要抓取的绝对 URL。必须是有效的 URL。
browserCommandsstring否JSON 数组字符串,包含抓取前要执行的浏览器命令。

返回:

  • 请求页面的 text/markdown 内容。
  • 当上游请求失败时,返回带有 ScrAPI 错误正文的 isError: true。

前置条件

选择以下一种运行环境:

  • 使用 npx 或进行本地开发,需要 Node.js 18 或更高版本。
  • 使用容器运行,需要 Docker。
  • 使用兼容 MCP 的客户端,例如 Claude Desktop、MCP Inspector,或其他支持 stdio 或 Streamable HTTP MCP 服务的客户端。

API 密钥

设置 SCRAPI_API_KEY 以使用你的 ScrAPI 账户:

export SCRAPI_API_KEY="your-scrapi-api-key"

PowerShell:

$env:SCRAPI_API_KEY = "your-scrapi-api-key"

必须提供 API 密钥。没有密钥时,ScrAPI 目前允许在某些域名上有限免费使用,但并发数和排队优先级较低。

快速开始

使用 NPX 运行

默认传输方式是 stdio,这是大多数桌面 MCP 客户端在启动本地服务进程时使用的传输方式。

npx -y @deventerprisesoftware/scrapi-mcp

使用 API 密钥:

SCRAPI_API_KEY="your-scrapi-api-key" npx -y @deventerprisesoftware/scrapi-mcp

PowerShell:

$env:SCRAPI_API_KEY = "your-scrapi-api-key"
npx -y @deventerprisesoftware/scrapi-mcp
使用 Docker 运行

已发布的 Docker 镜像默认以 HTTP 模式启动,并监听端口 5000。

docker run --rm -p 5000:5000 -e SCRAPI_API_KEY="your-scrapi-api-key" deventerprisesoftware/scrapi-mcp

MCP 端点:

http://localhost:5000/mcp

要将容器作为本地 MCP 客户端使用的 stdio 服务运行:

docker run -i --rm -e TRANSPORT=stdio -e SCRAPI_API_KEY="your-scrapi-api-key" deventerprisesoftware/scrapi-mcp

MCP 客户端配置

大多数本地编码助手使用以下两种配置格式之一:

  • Stdio:客户端通过 npx 或 Docker 启动此软件包,并通过 stdin/stdout 通信。
  • Streamable HTTP:先使用 TRANSPORT=http 自行启动此服务,然后将客户端指向 http://localhost:5000/mcp 或已部署的 URL。

如果客户端提供工具超时设置,请将其设为约 300000 毫秒或 300 秒。对于需要解决 CAPTCHA、浏览器渲染或执行多条浏览器命令的页面,ScrAPI 可能需要几分钟。

使用 NPX 配置 Claude Desktop

将以下内容添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "ScrAPI": {
      "command": "npx",
      "args": ["-y", "@deventerprisesoftware/scrapi-mcp"],
      "env": {
        "SCRAPI_API_KEY": "your-scrapi-api-key"
      }
    }
  }
}
使用 Docker 配置 Claude Desktop
{
  "mcpServers": {
    "ScrAPI": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "SCRAPI_API_KEY",
        "deventerprisesoftware/scrapi-mcp"
      ],
      "env": {
        "SCRAPI_API_KEY": "your-scrapi-api-key"
      }
    }
  }
}

修改配置后,重启 Claude Desktop。你应该会在 MCP 工具列表中看到两个 ScrAPI 工具。

Claude Desktop

Cursor

Cursor 支持在 .cursor/mcp.json 中配置项目,也支持在 ~/.cursor/mcp.json 中进行全局配置。请参阅 Cursor MCP 文档。

Stdio 配置:

{
  "mcpServers": {
    "scrapi": {
      "command": "npx",
      "args": ["-y", "@deventerprisesoftware/scrapi-mcp"],
      "env": {
        "SCRAPI_API_KEY": "${env:SCRAPI_API_KEY}"
      }
    }
  }
}

HTTP 配置:

{
  "mcpServers": {
    "scrapi": {
      "url": "http://localhost:5000/mcp"
    }
  }
}

对于 HTTP,请先启动服务:

TRANSPORT=http PORT=5000 SCRAPI_API_KEY="your-scrapi-api-key" npx -y @deventerprisesoftware/scrapi-mcp
Windsurf

Windsurf Cascade 将 MCP 服务配置保存在 ~/.codeium/windsurf/mcp_config.json 中。你也可以通过 Windsurf Settings > Cascade > MCP Servers 添加服务。请参阅 Windsurf MCP 文档。

Stdio 配置:

{
  "mcpServers": {
    "scrapi": {
      "command": "npx",
      "args": ["-y", "@deventerprisesoftware/scrapi-mcp"],
      "env": {
        "SCRAPI_API_KEY": "${env:SCRAPI_API_KEY}"
      }
    }
  }
}

HTTP 配置:

{
  "mcpServers": {
    "scrapi": {
      "serverUrl": "http://localhost:5000/mcp"
    }
  }
}

Windsurf 支持使用 serverUrl 或 url 连接远程 HTTP MCP 服务。如果团队使用企业级 MCP 控制,管理员白名单中的服务 ID 必须与键名匹配,例如 scrapi。

Kilo Code

Kilo Code 将 MCP 配置保存在主 Kilo 配置文件中。全局配置使用 ~/.config/kilo/kilo.jsonc,项目根目录中的 kilo.jsonc,或项目专属配置文件 .kilo/kilo.jsonc。请参阅 Kilo Code MCP 文档。

本地 stdio 配置:

{
  "mcp": {
    "scrapi": {
      "type": "local",
      "command": ["npx", "-y", "@deventerprisesoftware/scrapi-mcp"],
      "environment": {
        "SCRAPI_API_KEY": "your-scrapi-api-key"
      },
      "enabled": true,
      "timeout": 300000
    }
  }
}

远程 HTTP 配置:

{
  "mcp": {
    "scrapi": {
      "type": "remote",
      "url": "http://localhost:5000/mcp",
      "enabled": true,
      "timeout": 300000
    }
  }
}

在 Windows 上,如果无法从 Kilo Code UI 找到 npx,请将 cmd 用作命令,并将 /c、npx、-y 和 @deventerprisesoftware/scrapi-mcp 作为参数传入。

Codex

Codex 在 CLI 和 IDE 扩展中均支持 MCP 服务。两者使用相同的 MCP 配置。默认情况下,Codex 将配置保存在 ~/.codex/config.toml 中;受信任的项目也可以使用 .codex/config.toml。请参阅 Codex MCP 文档。

使用 Codex CLI 添加 stdio 服务:

codex mcp add scrapi --env SCRAPI_API_KEY="your-scrapi-api-key" -- npx -y @deventerprisesoftware/scrapi-mcp
codex mcp list

等效的 config.toml stdio 配置:

[mcp_servers.scrapi]
command = "npx"
args = ["-y", "@deventerprisesoftware/scrapi-mcp"]
startup_timeout_sec = 20
tool_timeout_sec = 300

[mcp_servers.scrapi.env]
SCRAPI_API_KEY = "your-scrapi-api-key"

HTTP 配置:

[mcp_servers.scrapi]
url = "http://localhost:5000/mcp"
tool_timeout_sec = 300

在 Codex 终端 UI 中运行 /mcp,确认服务已连接。

VS Code

VS Code 将 MCP 配置保存在工作区的 .vscode/mcp.json 中,或保存在用户配置文件中。顶层键是 servers,而不是 mcpServers。请参阅 VS Code MCP 配置参考。

Stdio 配置:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "scrapi-api-key",
      "description": "ScrAPI API key",
      "password": true
    }
  ],
  "servers": {
    "scrapi": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@deventerprisesoftware/scrapi-mcp"],
      "env": {
        "SCRAPI_API_KEY": "${input:scrapi-api-key}"
      }
    }
  }
}

HTTP 配置:

{
  "servers": {
    "scrapi": {
      "type": "http",
      "url": "http://localhost:5000/mcp"
    }
  }
}

使用命令面板中的 MCP: Add Server、MCP: List Servers 和 MCP: Reset Cached Tools 命令添加、查看和刷新 MCP 服务。

Claude Code

Claude Code 通过 claude mcp CLI 和 Claude Code 内部的 /mcp 命令支持 MCP 服务。请参阅 Claude Code MCP 文档。

添加一个 stdio 服务:

claude mcp add --transport stdio --env SCRAPI_API_KEY="your-scrapi-api-key" scrapi -- npx -y @deventerprisesoftware/scrapi-mcp
claude mcp list

添加一个 HTTP 服务:

claude mcp add --transport http scrapi http://localhost:5000/mcp
claude mcp list

若要让所有 Claude Code 项目都能使用该服务,请在服务名称前添加 --scope user:

claude mcp add --transport stdio --scope user --env SCRAPI_API_KEY="your-scrapi-api-key" scrapi -- npx -y @deventerprisesoftware/scrapi-mcp

在 Claude Code 中运行 /mcp,确认服务已连接。

通用 Stdio MCP 客户端

对于接受命令、参数和环境变量的客户端,请使用以下格式:

{
  "name": "ScrAPI",
  "command": "npx",
  "args": ["-y", "@deventerprisesoftware/scrapi-mcp"],
  "env": {
    "SCRAPI_API_KEY": "your-scrapi-api-key"
  }
}

HTTP 传输

设置 TRANSPORT=http,即可通过 Streamable HTTP 运行该服务。

TRANSPORT=http PORT=5000 SCRAPI_API_KEY="your-scrapi-api-key" npx -y @deventerprisesoftware/scrapi-mcp

PowerShell:

$env:TRANSPORT = "http"
$env:PORT = "5000"
$env:SCRAPI_API_KEY = "your-scrapi-api-key"
npx -y @deventerprisesoftware/scrapi-mcp

MCP 端点:

http://localhost:5000/mcp

环境变量:

名称默认值描述
SCRAPI_API_KEY有限默认密钥调用 ScrAPI 抓取 API 时使用的 ScrAPI API 密钥。
TRANSPORTstdio使用 stdio 或 http。
PORT5000TRANSPORT=http 时使用的端口。
使用 MCP Inspector 测试

Stdio 模式:

npx @modelcontextprotocol/inspector npx -y @deventerprisesoftware/scrapi-mcp

HTTP 模式:

TRANSPORT=http PORT=5000 npx -y @deventerprisesoftware/scrapi-mcp

然后打开 MCP Inspector 并连接到:

http://localhost:5000/mcp

MCP Inspector

云托管服务

ScrAPI 还提供托管的 MCP 端点:

Streamable HTTP: https://api.scrapi.tech/mcp

目前并非所有 MCP 客户端都支持云 MCP 服务。它们最适用于自定义客户端、MCP Inspector,或支持远程 MCP 服务的平台。

若要使用 ScrAPI API 密钥进行身份验证,请将其作为查询参数或请求标头传递:

  • 查询参数:https://api.scrapi.tech/mcp?apiKey=<YOUR_API_KEY>
  • 请求标头:X-API-KEY: <YOUR_API_KEY>

使用示例

具体交互方式取决于 MCP 客户端。在大多数客户端中,你可以让模型使用 ScrAPI 工具,也可以直接从工具检查器调用该工具。

将网页抓取为 Markdown

工具:

scrape_url_markdown

参数:

{
  "url": "https://example.com"
}

提示词示例:

Use ScrAPI to scrape https://example.com as Markdown and summarize the page.
将网页抓取为 HTML

工具:

scrape_url_html

参数:

{
  "url": "https://example.com"
}

提示词示例:

Use ScrAPI to scrape https://example.com as HTML and extract every link.
抓取前接受 Cookie

browserCommands 值必须是包含 JSON 数组的字符串。

{
  "url": "https://example.com",
  "browserCommands": "[{\"click\":\"#accept-cookies\"},{\"wait\":1000}]"
}
抓取结果前先搜索网站
{
  "url": "https://example.com/search",
  "browserCommands": "[{\"input\":{\"input[name='q']\":\"web scraping\"}},{\"click\":\"button[type='submit']\"},{\"waitfor\":\"#results\"}]"
}
加载更多内容
{
  "url": "https://example.com/products",
  "browserCommands": "[{\"scroll\":1200},{\"wait\":1000},{\"click\":\"button.load-more\"},{\"waitfor\":\".product-card:nth-child(25)\"}]"
}

浏览器命令

这两个工具都支持可选的浏览器命令,可在 ScrAPI 捕获最终结果前与网页交互。

命令以 JSON 数组字符串的形式提供。执行时会模拟真人操作,例如随机移动鼠标和变速输入。

命令格式描述
单击{"click": "#buttonId"}根据 CSS 选择器单击元素。
输入{"input": {"input[name='email']": "value"}}填写输入字段。
选择{"select": {"select[name='country']": "USA"}}根据值或可见文本选择选项。
滚动{"scroll": 1000}向下滚动指定像素。使用负值向上滚动。
等待{"wait": 5000}等待指定毫秒数。最长:15000。
等待元素{"waitfor": "#elementId"}等待元素出现在 DOM 中。
JavaScript{"javascript": "console.log('test')"}执行自定义 JavaScript。

易读的命令数组:

[
  { "click": "#accept-cookies" },
  { "wait": 2000 },
  { "input": { "input[name='search']": "web scraping" } },
  { "click": "button[type='submit']" },
  { "waitfor": "#results" },
  { "scroll": 500 }
]

转义后作为 MCP 工具参数:

{
  "url": "https://example.com",
  "browserCommands": "[{\"click\":\"#accept-cookies\"},{\"wait\":2000},{\"input\":{\"input[name='search']\":\"web scraping\"}},{\"click\":\"button[type='submit']\"},{\"waitfor\":\"#results\"},{\"scroll\":500}]"
}

需要帮助查找 CSS 选择器?试试 Rayrun 浏览器扩展,它可以选择元素并生成选择器。

更多详情请参阅浏览器命令文档。

故障排除

MCP 客户端找不到服务
  • 如果使用 npx,请确认已安装 Node.js 18 或更高版本。
  • 如果使用 Docker,请确认 Docker Desktop 正在运行。
  • 编辑配置文件后,重启 MCP 客户端。
  • 检查配置的命令能否在终端中正常运行。
工具已显示,但抓取失败
  • 确认已正确设置 SCRAPI_API_KEY。
  • 尝试使用不带 browserCommands 的相同 URL。
  • 确保 browserCommands 是 JSON 数组字符串,而不是原始 JSON 数组。
  • 如果 Markdown 提取遗漏了所需结构,请使用 scrape_url_html。
  • 长时间运行的页面、CAPTCHA 流程和包含大量 JavaScript 的页面可能需要几分钟。
浏览器命令被忽略

只有当 browserCommands 能解析为 JSON 数组时,服务才会发送浏览器命令。以下写法有效:

{
  "browserCommands": "[{\"click\":\"#accept-cookies\"}]"
}

以下写法不符合此 MCP 工具架构的要求,因为它是对象数组,而不是字符串:

{
  "browserCommands": [{ "click": "#accept-cookies" }]
}
HTTP 端点无响应
  • 确认启动服务时设置了 TRANSPORT=http。
  • 确认客户端连接的是 /mcp,而不是 /。
  • 确认端口与 PORT 一致。

开发

安装依赖:

npm install

运行测试:

npm test

构建:

npm run build

以 stdio 模式从源代码运行:

npm run build
node dist/index.js

以 HTTP 模式从源代码运行:

TRANSPORT=http PORT=5000 node dist/index.js

构建 Docker 镜像:

docker build -t deventerprisesoftware/scrapi-mcp -f Dockerfile .

或者使用 package 脚本:

npm run docker:build

许可证

此 MCP 服务采用 MIT License 许可。您可以根据 MIT License 的条款自由使用、修改和分发该软件。详情请参阅 LICENSE。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。