网页数据抓取服务器

MCP Data Fetch Server 是一个安全的沙盒服务器,通过模型控制协议(MCP)抓取网页内容并提取数据,不执行JavaScript。

  • by undici77
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 undici77/mcpdatafetchserver

使用说明

📂 MCP数据提取服务器

MCP数据提取服务器 是一个安全的沙盒服务器,通过 **模型控制协议(MCP)**不执行JavaScript。


目录


🎯 特性

  • 安全网页获取 –删除脚本、iframe和cookie横幅;没有JavaScript执行。
  • 丰富的数据提取 –检索链接、元数据、打开 图形/推特卡和可下载资源。
  • 安全文件下载 -沙盒缓存中的大小限制、文件名净化和路径遍历保护。
  • 内置缓存 –可选的缓存目录可减少重复的网络调用。
  • 快速注射检测 –验证URL并获取恶意指令的内容。

📦 安装和快速启动

# Clone the repository (or copy the MCPDataFetchServer.1 folder)
git clone https://github.com/undici77/MCPDataFetchServer.git
cd MCPDataFetchServer

# Make the startup script executable
chmod +x run.sh

# Run the server, pointing to a sandboxed working directory
./run.sh -d /path/to/working/directory

📌 三步概述
1.️⃣ 该脚本创建虚拟环境并安装依赖项。
2.️⃣ 它准备一个缓存文件夹(.fetch_cache)在项目根目录内。
3️⃣ main.py 启动MCP服务器,监听 stdin/stdout 对于JSON-RPC请求。


⚙️ 命令行选项

选项 描述
-d, --working-dir 通往 沙盒工作目录 其中所有文件操作都受到限制(默认值: ~/.mcp_datafetch).
-c, --cache-dir 名称 缓存子目录 相对于工作目录(默认值: cache).
-h, --help 显示帮助消息并退出。

🤝 与LM集成 工作室 (或任何兼容MCP的客户端)

将条目添加到您的 mcp.json 配置使LM Studio可以自动启动服务器。

{
  "mcpServers": {
    "datafetch": {
      "command": "/absolute/path/to/MCPDataFetchServer.1/run.sh",
      "args": [
        "-d",
        "/absolute/path/to/working/directory"
      ],
      "env": { "WORKING_DIR": "." }
    }
  }
}

📌 提示: 确保 run.sh 可执行(chmod +x …)并且虚拟环境可以在首次启动时安装所需的Python包。


📡 MCP API概述

所有通信如下 JSON-RPC 2.0 超过 stdin/stdout.

initialize

请求:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": {}
}

响应包含协议版本、服务器功能和基本元数据(例如名称 =mcp-datafetch-server,版本 =2.1.0).

tools/list

请求:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/list",
  "params": {}
}

答复: { "tools": [ …tool definitions… ] }每个定义包括 name, description 和a 输入模式 (JSON 模式)。

tools/call

通用请求形状(替换 <tool_name> 以及必要的论据):

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "tools/call",
  "params": {
    "name": "<tool_name>",
    "arguments": { … }
  }
}

服务器根据工具的模式验证请求,执行操作,并返回 ToolResult 包含一个或多个 内容块.


🛠️ 可用工具

fetch_webpage

  • 安全地获取网页,并以请求的格式返回干净的内容。
名称 类型 必填 描述
url string ✅ (无默认值) 要获取的URL(仅限http/https).
format string ❌ (markdown) 输出格式-其中之一 markdown, text,或 html.
include_links boolean ❌ (true) 是否追加提取的链接列表。
include_images boolean ❌ (false) 是否在输出中列出图像URL。
remove_banners boolean ❌ (true) 尝试删除cookie横幅和弹出窗口。

示例

{
  "jsonrpc": "2.0",
  "id": 10,
  "method": "tools/call",
  "params": {
    "name": "fetch_webpage",
    "arguments": {
      "url": "https://example.com/article",
      "format": "markdown",
      "include_links": true,
      "include_images": false,
      "remove_banners": true
    }
  }
}

注: 该工具对HTML进行净化,删除脚本/iframe,并在返回内容之前检查提示注入模式。


extract_links

  • 从页面中提取并分类所有超链接。
名称 类型 必填 描述
url string ✅ (无默认值) 要分析的页面的URL。
filter string ❌ (all) 仅返回 all, internal, external,或 resources.

示例

{
  "jsonrpc": "2.0",
  "id": 11,
  "method": "tools/call",
  "params": {
    "name": "extract_links",
    "arguments": {
      "url": "https://example.com/blog",
      "filter": "internal"
    }
  }
}

注: 链接分类为 内部的 (同一域名)或 外部的;资源链接(图像、PDF…)可以通过以下方式过滤 resources.


download_file

  • 安全地将远程文件下载到沙盒缓存目录中。
名称 类型 必填 描述
url string ✅ (无默认值) 指向文件的直接URL。
filename string ❌ (自动生成) 所需文件名;将被净化并强制进入缓存目录。

示例

{
  "jsonrpc": "2.0",
  "id": 12,
  "method": "tools/call",
  "params": {
    "name": "download_file",
    "arguments": {
      "url": "https://example.com/files/report.pdf",
      "filename": "report_latest.pdf"
    }
  }
}

注: 服务器强制执行 100 MB 下载限制,根据被阻止的域/扩展验证URL,并返回工作目录内的相对路径以供跨代理访问。


get_page_metadata

  • 提取结构化元数据(标题、描述、打开 图形、推特卡片)。
名称 类型 必填 描述
url string ✅ (无默认值) 要检查的页面的URL。

示例

{
  "jsonrpc": "2.0",
  "id": 13,
  "method": "tools/call",
  "params": {
    "name": "get_page_metadata",
    "arguments": { "url": "https://example.com/product/42" }
  }
}

注: 该工具返回一个格式化的文本块,其中包含标题、描述、关键字、打开 图形属性和推特卡片字段。


check_url

  • 执行轻量级HEAD请求以报告状态代码、标头和大小,而无需下载正文。
名称 类型 必填 描述
url string ✅ (无默认值) 要探测的URL。

示例

{
  "jsonrpc": "2.0",
  "id": 14,
  "method": "tools/call",
  "params": {
    "name": "check_url",
    "arguments": { "url": "https://example.com/resource.zip" }
  }
}

注: 响应包括重定向后的最终URL、简洁的状态摘要(✅ OK或⚠️ 错误),以及所选的HTTP标头,例如 Content‑Type 和 Content‑Length.


🔐 安全功能

  • 路径遍历保护 –所有文件操作都限制在沙盒中 工作目录.
  • 快速注射检测 在URL中获取HTML并生成内容。
  • 被阻止的域和扩展 (本地主机、私有IP范围、可执行/脚本文件)。
  • 内容大小限制 –最大值 50 MB用于页面提取,最大值 100 MB用于文件下载。
  • HTML净化 –删除 <script>, <iframe>,事件处理程序和其他风险元素。
  • Cookie/横幅处理 –在获取过程中可选择删除同意横幅和弹出窗口。

©2025 Undici77-保留所有权利。