一个与 WebScraping.AI 集成的 Model Context Protocol (MCP) 服务器实现,用于网页数据提取功能。
env WEBSCRAPING_AI_API_KEY=your_api_key npx -y webscraping-ai-mcp
# 克隆仓库
git clone https://github.com/webscraping-ai/webscraping-ai-mcp-server.git
cd webscraping-ai-mcp-server
# 安装依赖
npm install
# 运行
npm start
注意:需要 Cursor 版本 0.45.6+
WebScraping.AI MCP 服务器可以在 Cursor 中以两种方式配置:
项目特定配置(推荐用于团队项目):
在你的项目目录中创建一个 .cursor/mcp.json 文件:
{
"servers": {
"webscraping-ai": {
"type": "command",
"command": "npx -y webscraping-ai-mcp",
"env": {
"WEBSCRAPING_AI_API_KEY": "your-api-key",
"WEBSCRAPING_AI_CONCURRENCY_LIMIT": "5"
}
}
}
}
全局配置(用于个人在所有项目中的使用):
在你的主目录中创建一个 ~/.cursor/mcp.json 文件,配置格式同上。
如果你在 Windows 上遇到问题,请尝试使用
cmd /c "set WEBSCRAPING_AI_API_KEY=your-api-key && npx -y webscraping-ai-mcp"作为命令。
此配置将使 WebScraping.AI 工具自动对 Cursor 的 AI 代理可用,当涉及到网络抓取任务时。
添加到你的 claude_desktop_config.json:
{
"mcpServers": {
"mcp-server-webscraping-ai": {
"command": "npx",
"args": ["-y", "webscraping-ai-mcp"],
"env": {
"WEBSCRAPING_AI_API_KEY": "YOUR_API_KEY_HERE",
"WEBSCRAPING_AI_CONCURRENCY_LIMIT": "5"
}
}
}
}
WEBSCRAPING_AI_API_KEY: 你的 WebScraping.AI API 密钥
WEBSCRAPING_AI_CONCURRENCY_LIMIT: 最大并发请求数量(默认值:5)WEBSCRAPING_AI_DEFAULT_PROXY_TYPE: 使用的代理类型(默认值:residential)WEBSCRAPING_AI_DEFAULT_JS_RENDERING: 启用/禁用 JavaScript 渲染(默认值:true)WEBSCRAPING_AI_DEFAULT_TIMEOUT: 最大网页检索时间(单位:毫秒,默认值:15000,最大值:30000)WEBSCRAPING_AI_DEFAULT_JS_TIMEOUT: 最大 JavaScript 渲染时间(单位:毫秒,默认值:2000)对于标准使用:
# 必需
export WEBSCRAPING_AI_API_KEY=your-api-key
# 可选 - 自定义行为(默认值)
export WEBSCRAPING_AI_CONCURRENCY_LIMIT=5
export WEBSCRAPING_AI_DEFAULT_PROXY_TYPE=residential # 数据中心或住宅
export WEBSCRAPING_AI_DEFAULT_JS_RENDERING=true
export WEBSCRAPING_AI_DEFAULT_TIMEOUT=15000
export WEBSCRAPING_AI_DEFAULT_JS_TIMEOUT=2000
webscraping_ai_question)关于网页内容提问。
{
"name": "webscraping_ai_question",
"arguments": {
"url": "https://example.com",
"question": "这个页面的主要主题是什么?",
"timeout": 30000,
"js": true,
"js_timeout": 2000,
"wait_for": ".content-loaded",
"proxy": "datacenter",
"country": "us"
}
}
示例响应:
{
"content": [
{
"type": "text",
"text": "这个页面的主要主题是 HTML 和网络标准的示例和文档。"
}
],
"isError": false
}
webscraping_ai_fields)根据指令从网页中提取结构化数据。
{
"name": "webscraping_ai_fields",
"arguments": {
"url": "https://example.com/product",
"fields": {
"title": "提取产品标题",
"price": "提取产品价格",
"description": "提取产品描述"
},
"js": true,
"timeout": 30000
}
}
示例响应:
{
"content": [
{
"type": "text",
"text": {
"title": "示例产品",
"price": "$99.99",
"description": "这是一个示例产品描述。"
}
}
],
"isError": false
}
webscraping_ai_html)获取带有 JavaScript 渲染的网页完整 HTML。
{
"name": "webscraping_ai_html",
"arguments": {
"url": "https://example.com",
"js": true,
"timeout": 30000,
"wait_for": "#content-loaded"
}
}
示例响应:
{
"content": [
{
"type": "text",
"text": "<html>...[完整 HTML 内容]...</html>"
}
],
"isError": false
}
webscraping_ai_text)从网页中提取可见文本内容。
{
"name": "webscraping_ai_text",
"arguments": {
"url": "https://example.com",
"js": true,
"timeout": 30000
}
}
示例响应:
{
"content": [
{
"type": "text",
"text": "示例域名\n此域名用于文档中的说明性示例……"
}
],
"isError": false
}
webscraping_ai_selected)使用 CSS 选择器从特定元素中提取内容。
{
"name": "webscraping_ai_selected",
"arguments": {
"url": "https://example.com",
"selector": "div.main-content",
"js": true,
"timeout": 30000
}
}
示例响应:
{
"content": [
{
"type": "text",
"text": "<div class=\"main-content\">这是页面的主要内容。</div>"
}
],
"isError": false
}
webscraping_ai_selected_multiple)使用 CSS 选择器从多个元素中提取内容。
{
"name": "webscraping_ai_selected_multiple",
"arguments": {
"url": "https://example.com",
"selectors": ["div.header", "div.product-list", "div.footer"],
"js": true,
"timeout": 30000
}
}
示例响应:
{
"content": [
{
"type": "text",
"text": [
"<div class=\"header\">页眉内容</div>",
"<div class=\"product-list\">产品列表内容</div>",
"<div class=\"footer\">页脚内容</div>"
]
}
],
"isError": false
}
webscraping_ai_account)获取有关你的 WebScraping.AI 账户的信息。
{
"name": "webscraping_ai_account",
"arguments": {}
}
示例响应:
{
"content": [
{
"type": "text",
"text": {
"requests": 5000,
"remaining": 4500,
"limit": 10000,
"resets_at": "2023-12-31T23:59:59Z"
}
}
],
"isError": false
}
以下选项可用于所有抓取工具:
timeout: 最大网页检索时间(单位:毫秒,默认值:15000,最大值:30000)js: 使用无头浏览器执行页面上的 JavaScript(默认值:true)js_timeout: 最大 JavaScript 渲染时间(单位:毫秒,默认值:2000)wait_for: 在返回页面内容之前等待的 CSS 选择器proxy: 代理类型,数据中心或住宅(默认值:住宅)country: 使用的代理国家(默认值:美国)。支持的国家:us, gb, de, it, fr, ca, es, ru, jp, kr, incustom_proxy: 你自己的代理 URL,格式为 "http://user:password@host:port"device: 设备模拟类型。支持的值:桌面、移动、平板error_on_404: 目标页面出现 404 HTTP 状态时返回错误(默认值:false)error_on_redirect: 目标页面出现重定向时返回错误(默认值:false)js_script: 在目标页面上执行的自定义 JavaScript 代码该服务器提供了强大的错误处理机制:
示例错误响应:
{
"content": [
{
"type": "text",
"text": "API 错误:429 请求过多"
}
],
"isError": true
}
此服务器实现了 Model Context Protocol,使其兼容任何启用 MCP 的 LLM 平台。你可以配置你的 LLM 使用这些工具进行网络抓取任务。
const { Claude } = require('@anthropic-ai/sdk');
const { Client } = require('@modelcontextprotocol/sdk/client/index.js');
const { StdioClientTransport } = require('@modelcontextprotocol/sdk/client/stdio.js');
const claude = new Claude({
apiKey: process.env.ANTHROPIC_API_KEY
});
const transport = new StdioClientTransport({
command: 'npx',
args: ['-y', 'webscraping-ai-mcp'],
env: {
WEBSCRAPING_AI_API_KEY: 'your-api-key'
}
});
const client = new Client({
name: 'claude-client',
version: '1.0.0'
});
await client.connect(transport);
// 现在你可以使用 Claude 和 WebScraping.AI 工具
const tools = await client.listTools();
const response = await claude.complete({
prompt: 'example.com 的主要主题是什么?',
tools: tools
});
# 克隆仓库
git clone https://github.com/webscraping-ai/webscraping-ai-mcp-server.git
cd webscraping-ai-mcp-server
# 安装依赖
npm install
# 运行测试
npm test
# 添加你的 .env 文件
cp .env.example .env
# 启动检查器
npx @modelcontextprotocol/inspector node src/index.js
npm testMIT 许可证 - 查看 LICENSE 文件以获取详细信息