Token导航 LogoToken导航TokenDH.com
Web-curl MCP Server logo
浏览器工具未说明官方级别未说明来源级核验

Web-curl MCP Server

MCP Server

Web-curl 是一个强大的网页爬取工具,支持通过 Puppeteer 进行浏览器自动化、内容提取和 Google 自定义搜索,适用于数据抓取和研究自动化。

工具数

7

提示词数

0

GitHub Stars

10

资源数

0
网页爬取浏览器自动化JavaScript内容提取数据抓取

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

rayss868

提供方

rayss868

最后核验

2026/5/17 20:19

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

谷歌自定义搜索API

谷歌自定义搜索API是免费的,有使用限制(例如,每天免费100次查询,额外的查询需要付费)。有关配额、定价和限制的完整详细信息,请参阅 官方文件.

Web卷曲

Web-curl Logo

由Rayss开发

🚀 开源项目\ 🛠️ 使用Node.js和TypeScript构建(需要Node.js v18+)

______________________________________________________________________

](https://nodejs.org/) ![License](LICENSE) Status

______________________________________________________________________

______________________________________________________________________

🎬 演示视频

![Watch the demo](demo/demo_1.mp4)

单击此处直接在浏览器中观看演示视频。

如果你的平台支持它,你也可以 下载并播放demo/demo1.mp4 直接。

Your browser does not support the video tag.

______________________________________________________________________

📚 目录

______________________________________________________________________

📝 变更日志/更新历史记录

更改日志.md 查看更新和新功能的完整历史记录。

📝 概述

Web卷曲 是从网页和API中获取和提取文本内容的强大工具。将其用作独立的CLI或MCP(模型上下文协议)服务器。Web curl利用Puppeteer进行强大的Web抓取,并支持资源阻止、自定义标头、身份验证和Google自定义搜索等高级功能。

______________________________________________________________________

✨ 特性

🚀 深度研究与自动化(v1.4.2)

  • 高级浏览器自动化:通过Puppeteer完全控制Chromium(点击、键入、滚动、悬停、按键)。
  • 始终在线会话持久性:浏览器配置文件现在总是持久的。登录会话、Cookie和缓存会自动保存在本地 user_data/ 目录。
  • 令牌高效快照:

- 可访问性树:干净、结构化的快照,而不是杂乱的HTML。 - HTML切片模式:原始HTML startIndex/endIndex 在需要时进行安全分块。 - 视口过滤:自动过滤掉屏幕上不可见的元素,在长页面上节省高达90%的上下文标记。

  • Chrome DevTools集成(已实现,但隐藏 list_tools):

- 网络监控(browser_network_requests) - 控制台日志(browser_console_messages)

  • 并行搜索:

- multi_search:一次运行多个谷歌搜索(唯一公开的搜索工具)。

  • 智能资源管理:

- 怠速自动关闭:浏览器在15分钟不活动后自动关闭,以节省RAM/CPU。 - 选项卡旋转:当达到10个选项卡的限制时,自动替换最旧的选项卡。

  • 媒体和文件:

- 完整页面截图:通过5天的自动清理生命周期和自定义目标支持捕获高质量的屏幕截图。 - 文档解析:直接从URL中提取PDF和DOCX文件中的文本。

存储和下载详细信息

  • 🗂️ 错误日志轮换: logs/error-log.txt 当超过~1MB时旋转(重命名为 error-log.txt.bak)以防止无限增长。
  • 🧹 日志和临时清理:旧的临时文件 logs/ 目录在启动时被清理。
  • 🛑 浏览器生命周期:Puppeteer浏览器实例在finally块中关闭,以避免Chromium临时文件泄漏。
  • 🔎 内容提取:

- 返回原始文本、HTML和可读性“主文章”(如果可用)。易读性试图提取网页的主要内容,删除页眉、页脚、侧边栏和其他非必要元素,提供更清晰、更集中的文本。 - 可读性输出取决于 startIndex/maxLength/chunkSize 根据要求进行切片。

  • 🚫 资源阻塞: blockResources 现在总是被迫 false,这意味着资源永远不会被阻止,以实现更快的页面加载。
  • ⏱️ 超时控制:导航和API请求超时可通过工具参数进行配置。
  • 💾 输出:结果可以打印到stdout或通过CLI选项写入文件。
  • ⬇️ 下载行为(download_file):

- destinationFolder 接受相对路径(根据项目根解析)或绝对路径。 - 服务器创建 destinationFolder 如果它不存在。 - 下载使用节点流进行流式传输+ pipeline 以最大限度地减少内存使用并确保可靠的写入。 - 文件名来源于URL路径(例如。, https://.../path/file.jpg -> file.jpg).如果没有文件名,则回退名称为 downloaded_file. - 覆盖语义:默认情况下,实现将覆盖同名的现有文件。

  • 🖥️ 使用模式:CLI和MCP服务器(stdin/stdout传输)。
  • 🌐 REST客户端: fetch_api 适当时返回JSON/text,二进制响应返回base64。
  • 🔍 谷歌自定义搜索:必填 APIKEY_GOOGLE_SEARCHCX_GOOGLE_SEARCH.
  • 🤖 智能命令:

- 自动语言检测(最小法郎)和可选翻译(动态 translate 进口)。 - 查询丰富是基于启发式的;结果取决于检测到的意图。

______________________________________________________________________

🏗️ 建筑

本节概述了Web curl的高级架构。

graph TD
    A[User/MCP Host] --> B(CLI / MCP Server)
    B --> C{Tool Handlers}
    C -- browser_flow --> D["Puppeteer (Web Scraping)"]
    C -- fetch_api --> E["REST Client"]
    C -- multi_search --> F["Google Custom Search API"]
    C -- parse_document --> G["Document Parser (PDF/DOCX)"]
    C -- download_file --> H["File System (Downloads)"]
    D --> I["Web Content"]
    E --> J["External APIs"]
    F --> K["Google Search Results"]
    H --> L["Local Storage"]

实现CLI入口点和MCP服务器。

  • Web剪贴:使用Puppeteer进行无头浏览和内容提取。
  • REST客户端: src/rest-client.ts

为API请求提供灵活的HTTP客户端。

______________________________________________________________________

⚙️ MCP服务器配置示例

要将web curl集成为MCP服务器,请将以下配置添加到您的 mcp_settings.json:

{
  "mcpServers": {
    "web-curl": {
      "command": "node",
      "args": [
        "build/index.js"
      ],
      "disabled": false,
      "alwaysAllow": [
        "browser_flow",
        "browser_configure",
        "browser_close",
        "multi_search",
        "fetch_api",
        "download_file",
        "parse_document"
      ],
      "env": {
        "APIKEY_GOOGLE_SEARCH": "YOUR_GOOGLE_API_KEY",
        "CX_GOOGLE_SEARCH": "YOUR_CX_ID"
      }
    }
  }
}

______________________________________________________________________

🔑 如何获取Google API密钥和CX

  1. 获取Google API密钥:

- 首选 Google 云控制台. - 创建/选择一个项目,然后转到 API和服务>凭据. - 点击 创建凭据>API密钥 并复制它。

  1. 获取自定义搜索引擎(CX)ID:

- 首选 自定义搜索引擎. - 创建/选择搜索引擎,然后复制 搜索引擎ID (CX)。

  1. 启用自定义搜索API:

- 在Google Cloud控制台中,转到 API和服务>库. - 搜索 自定义搜索API 并启用它。

替换 YOUR_GOOGLE_API_KEYYOUR_CX_ID 在上面的配置中。

______________________________________________________________________

🛠️ 安装

# Clone the repository
git clone https://github.com/rayss868/MCP-Web-Curl
cd web-curl

# Install dependencies
npm install

# Build the project
npm run build
  • 先决条件:确保您的系统上安装了Node.js(v18+)和Git。

木偶安装注意事项

  • 窗户:npm install.
  • Linux/Ubuntu服务器: 您必须为Chromium安装额外的依赖项,以便在无头环境中处理渲染和屏幕截图。运行:
  sudo apt-get update && sudo apt-get install -y \
    fonts-liberation \
    libasound2 \
    libatk-bridge2.0-0 \
    libatk1.0-0 \
    libc6 \
    libcairo2 \
    libcups2 \
    libdbus-1-3 \
    libexpat1 \
    libfontconfig1 \
    libgbm1 \
    libgcc1 \
    libglib2.0-0 \
    libgtk-3-0 \
    libnspr4 \
    libnss3 \
    libpango-1-0-0 \
    libpangocairo-1.0-0 \
    libstdc++6 \
    libx11-6 \
    libx11-xcb1 \
    libxcb1 \
    libxcomposite1 \
    libxcursor1 \
    libxdamage1 \
    libxext6 \
    libxfixes3 \
    libxi6 \
    libxrandr2 \
    libxrender1 \
    libxss1 \
    libxtst6 \
    lsb-release \
    wget \
    xdg-utils

有关更多详细信息,请参阅 Puppeter故障排除指南.

______________________________________________________________________

🚀 用法

CLI使用情况

CLI支持从网页中获取和提取文本内容。

# Basic usage
node build/index.js https://example.com

# With options
node build/index.js --timeout 30000 https://example.com

# Save output to a file
node build/index.js -o result.json https://example.com

命令行选项

  • --timeout :设置导航超时(默认值:60000)
  • -o :将结果输出到指定文件

MCP服务器使用情况

Web curl可以作为MCP服务器运行,以便与Roo Context或其他MCP兼容环境集成。

外露工具(v1.4.2)

只有以下工具通过以下方式暴露 list_tools 减少代理客户端中的工具链。

  • 浏览器流:一个呼叫浏览器工作流(可选导航→ 可选操作→ 返回一个结果)。
  • 浏览器配置:设置代理/用户代理/视口(会话持久性始终通过 user_data/).
  • 浏览器_关闭:关闭浏览器和选项卡(15分钟不活动后也会自动关闭)。
  • 多搜索:并行运行多个谷歌搜索(唯一公开的搜索入口点)。
  • fetch_api:带有响应截断的REST API请求(limit).
  • 下载文件:从URL下载文件。
  • parse_文档:从PDF/DOCX URL中提取文本。

作为MCP服务器运行

npm run start

服务器将通过stdin/stdout进行通信,并公开中定义的工具 src/index.ts.

______________________________________________________________________

🚦 HTML切片示例(推荐用于大页面)

使用 browser_flow 随着 result: { type: "snapshot", mode: "html" } 当您需要原始HTML但希望保持较小的响应时。

客户端对第一个切片的请求:

{
  "name": "browser_flow",
  "arguments": {
    "result": {
      "type": "snapshot",
      "mode": "html",
      "startIndex": 0,
      "endIndex": 20000
    }
  }
}

响应(示例):

{
  "mode": "html",
  "totalLength": 123456,
  "startIndex": 0,
  "endIndex": 20000,
  "remainingCharacters": 103456,
  "content": "...first slice..."
}

______________________________________________________________________

🧩 配置

  • 会话保持:始终启用。登录名和Cookie在重新启动时会自动重复使用。
  • 超时:设置导航和API请求超时。
  • 环境变量:用于Google Search API集成(由使用 multi_search).

______________________________________________________________________

💡 示例{#示例}

Make a REST API Request

{
  "name": "fetch_api",
  "arguments": {
    "url": "https://api.github.com/repos/nodejs/node",
    "method": "GET",
    "headers": {
      "Accept": "application/vnd.github.v3+json"
    },
    "limit": 10000
  }
}

Download File

{
  "name": "download_file",
  "arguments": {
    "url": "https://example.com/image.jpg",
    "destinationFolder": "downloads"
  }
}

注: destinationFolder 可以是相对路径(根据项目根解析)或绝对路径。如果目标文件夹不存在,服务器将创建该文件夹。

Configure Browser

{
  "name": "browser_configure",
  "arguments": {
    "proxy": "http://proxy.example.com:8080",
    "viewport": { "width": 1920, "height": 1080 }
  }
}

注意:会话持久性始终处于启用状态。Cookie和登录会话会自动存储在 user_data/ 目录。

______________________________________________________________________

🛠️ 故障排除{#故障排除}

  • 超时错误:增加 timeout 参数if请求超时。
  • 谷歌搜索失败:确保 APIKEY_GOOGLE_SEARCHCX_GOOGLE_SEARCH 设置在您的环境中。
  • 错误记录:检查 logs/error-log.txt 文件以获取详细的错误消息。

______________________________________________________________________

🧠 提示和最佳实践{#Tips-Best Practices}

Click for advanced tips

  • 对于大页面,请使用 maxLengthstartIndex 以获取切片中的内容。
  • 始终验证工具参数以避免错误。
  • 使用环境变量保护API密钥和敏感数据。
  • 查看中的MCP工具模式 src/index.ts 所有可用选项。

______________________________________________________________________

🤝 贡献与问题{#贡献-问题}

欢迎投稿!如果你想贡献,请分叉此存储库并提交一个pull请求。\ 如果您发现任何问题或有建议,请在存储库页面上打开问题。

______________________________________________________________________

📄 许可与归因{#License--归因}

该项目由 Rayss.\ 如有疑问、改进或贡献,请联系作者或在存储库中打开问题。

______________________________________________________________________

注: 谷歌搜索API是免费的,有使用限制。有关详细信息,请参阅: Google自定义搜索API概述

目录标签

目录标签

网页爬取浏览器自动化JavaScript内容提取数据抓取本地部署Google搜索

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

7

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明session部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP