MCP Web Curl

MCP Web Curl

🚀 Web-curl:网页内容抓取与提取工具

Web-curl 是一款功能强大的工具,可用于从网页和 API 中获取并提取文本内容。你既可以将其作为独立的命令行工具使用,也能将其作为 MCP(模型上下文协议)服务器来运行。它借助 Puppeteer 实现强大的网页抓取功能,还支持资源阻塞、自定义请求头、身份验证以及谷歌自定义搜索等高级特性。

🚀 快速开始

安装

# 克隆仓库
git clone 
cd web-curl

# 安装依赖
npm install

# 构建项目
npm run build

Puppeteer 安装说明

  • Windows:直接运行 npm install 即可。
  • Linux:你必须为 Chromium 安装额外的依赖项。运行以下命令:
    sudo apt-get install -y \
    ca-certificates fonts-liberation libappindicator3-1 libasound2 libatk-bridge2.0-0 \
    libatk1.0-0 libcups2 libdbus-1-3 libdrm2 libgbm1 libnspr4 libnss3 \
    libx11-xcb1 libxcomposite1 libxdamage1 libxrandr2 xdg-utils
    
    更多详细信息,请参阅 Puppeteer 故障排除指南

使用

CLI 使用

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

# 基本用法
node build/index.js https://example.com

# 带选项使用
node build/index.js --timeout 30000 --no-block-resources https://example.com

# 将输出保存到文件
node build/index.js -o result.json https://example.com

命令行选项

  • --timeout :设置导航超时时间(默认值:60000)
  • --no-block-resources:禁用对图片、样式表和字体的阻塞
  • -o :将结果输出到指定文件

MCP 服务器使用

Web-curl 可以作为 MCP 服务器运行,以便与 Roo Code 或其他支持 MCP 的平台集成。

npm run start

服务器通过标准输入输出进行通信,并公开了在 中定义的工具。

MCP 工具示例(fetch_webpage)

{
"name": "fetch_webpage",
"arguments": {
"url": "https://example.com",
"blockResources": true,
"timeout": 60000,
"maxLength": 10000
}
}

谷歌搜索集成

为谷歌自定义搜索设置以下环境变量:

  • APIKEY_GOOGLE_SEARCH:你的谷歌 API 密钥
  • CX_GOOGLE_SEARCH:你的自定义搜索引擎 ID

✨ 主要特性

  • 🔎 从任何网站检索文本内容。
  • 🚫 阻塞不必要的资源(图片、样式表、字体)以加快加载速度。
  • ⏱️ 设置导航超时时间和内容提取限制。
  • 💾 将结果输出到标准输出或保存到文件。
  • 🖥️ 既可以作为 CLI 工具使用,也可以作为 MCP 服务器使用。
  • 🌐 使用自定义方法、请求头和请求体进行 REST API 请求。
  • 🔍 集成谷歌自定义搜索(需要 API 密钥和 CX)。
  • 🤖 智能命令解析(自动检测 URL 和搜索查询)。
  • 🛡️ 详细的错误日志记录和强大的错误处理功能。

🏗️ 架构

  • CLI 与 MCP 服务器
    实现了 CLI 入口点和 MCP 服务器,公开了诸如 fetch_webpagefetch_apigoogle_searchsmart_command 等工具。
  • 网页抓取:使用 Puppeteer 进行无头浏览、资源阻塞和内容提取。
  • REST 客户端
    提供了一个灵活的 HTTP 客户端,用于 API 请求,CLI 和 MCP 工具均可使用。
  • 配置:通过 CLI 选项、环境变量和工具参数进行管理。

📦 安装指南

克隆仓库

git clone 
cd web-curl

安装依赖

npm install

构建项目

npm run build

💻 使用示例

基础用法

从网页获取文本内容

node build/index.js https://example.com

MCP 工具示例(fetch_webpage)

{
"name": "fetch_webpage",
"arguments": {
"url": "https://example.com",
"blockResources": true,
"timeout": 60000,
"maxLength": 10000
}
}

高级用法

带选项获取网页内容

node build/index.js --timeout 30000 --no-block-resources https://example.com

进行 REST API 请求

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

谷歌搜索

{
"name": "google_search",
"arguments": {
"query": "web scraping best practices",
"num": 5
}
}

📚 详细文档

配置

  • 资源阻塞:阻塞图片、样式表和字体,以加快抓取速度。
  • 超时设置:设置导航和 API 请求的超时时间。
  • 自定义请求头:在高级场景中传递自定义 HTTP 请求头。
  • 身份验证:支持通过用户名/密码进行 HTTP 基本身份验证。
  • 环境变量:用于谷歌搜索 API 集成。

谷歌自定义搜索 API

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

如何获取谷歌 API 密钥和 CX

  1. 获取谷歌 API 密钥
    • 访问 谷歌云控制台
    • 创建/选择一个项目,然后转到 API 和服务 > 凭据
    • 点击 创建凭据 > API 密钥 并复制它。
  2. 获取自定义搜索引擎(CX)ID
  3. 启用自定义搜索 API
    • 在谷歌云控制台中,转到 API 和服务 > 库
    • 搜索 自定义搜索 API 并启用它。 将上述配置中的 YOUR_GOOGLE_API_KEYYOUR_CX_ID 替换为你自己的值。

🛠️ 故障排除

  • 超时错误:如果请求超时,请增加 timeout 参数的值。
  • 内容被阻塞:如果内容缺失,请尝试禁用资源阻塞或调整 resourceTypesToBlock
  • 谷歌搜索失败:确保在你的环境中设置了 APIKEY_GOOGLE_SEARCHCX_GOOGLE_SEARCH
  • 二进制/未知内容:非文本响应将进行 base64 编码。
  • 错误日志:查看 logs/error-log.txt 文件以获取详细的错误信息。

🧠 使用建议

点击查看高级提示
  • 除非你需要图片或样式,否则使用资源阻塞功能以实现更快、更轻量级的抓取。
  • 对于大型页面,使用 maxLengthstartIndex 对内容提取进行分页。
  • 始终验证你的工具参数,以避免出现错误。
  • 使用环境变量保护你的 API 密钥和敏感数据。
  • 查看 中的 MCP 工具模式,了解所有可用选项。

🤝 贡献与问题反馈

欢迎贡献代码!如果你想贡献代码,请 Fork 此仓库并提交 Pull Request。
如果你发现任何问题或有建议,请在仓库页面上提交 Issue。

📄 许可证

本项目由 Rayss 开发。
如有问题、改进建议或贡献代码,请联系作者或在仓库中提交 Issue。

🎬 演示视频

点击直接在浏览器中观看演示

演示视频 (MP4)

⚠️ 重要提示

谷歌搜索 API 是免费的,但有使用限制。详情请参阅:谷歌自定义搜索 API 概述

由 Rayss 开发

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


Node.js 状态


📚 目录

  • 概述
  • 特性
  • 架构
  • 安装
  • 使用
    • CLI 使用
    • MCP 服务器使用
  • 配置
  • 示例
  • 故障排除
  • 提示与最佳实践
  • 贡献与问题反馈
  • 许可证与归属
  • 0 关注
  • 0 收藏,16 浏览
  • system 提出于 2025-09-22 05:27

相似服务问题

相关AI产品