网站下载工具

MCP网站下载工具,用于下载文档网站并准备RAG索引。

  • by angrysky56
  • Python
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 angrysky56/mcp-windows-website-downloader

使用说明

MCP网站下载器

简单的MCP服务器,用于下载文档网站并为RAG索引做准备。

特性

  • 下载完整的文档网站,无论如何都是大块的。
  • 维护链接结构和导航,不是真的。英雄联盟
  • 下载和组织资源(CSS、JS、图像),但并不真正对人工智能友好,这一切可能都需要某种解析或矢量化到数据库或其他东西中。
  • 为RAG系统创建干净的索引,目前似乎在每个文件夹中都创建了一个索引,甚至没有查看它。
  • 简单的单用途MCP接口,是的。

安装

分叉并下载cd到存储库。

uv venv
./venv/Scripts/activate
pip install -e .

将此内容放入claude_desktop_config.json中,并使用您自己的路径:

   "mcp-windows-website-downloader": {
     "command": "uv",
     "args": [
       "--directory",
       "F:/GithubRepos/mcp-windows-website-downloader",
       "run",
       "mcp-windows-website-downloader",
       "--library",
       "F:/GithubRepos/mcp-windows-website-downloader/website_library"
     ]
   },

其他用法你不需要担心,可能会产生幻觉,哈哈:

  1. 启动服务器:
python -m mcp_windows_website_downloader.server --library docs_library
  1. 通过Claude Desktop或其他MCP客户端使用:
result = await server.call_tool("download", {
    "url": "https://docs.example.com"
})

输出结构

docs_library/
  domain_name/
    index.html
    about.html
    docs/
      getting-started.html
      ...
    assets/
      css/
      js/
      images/
      fonts/
    rag_index.json

发展

服务器遵循标准MCP架构:

src/
  mcp_windows_website_downloader/
    __init__.py
    server.py    # MCP server implementation
    core.py      # Core downloader functionality
    utils.py     # Helper utilities

组件

  • server.py:处理工具注册和请求的主MCP服务器实现
  • core.py:具有适当资产处理的核心网站下载功能
  • utils.py:用于文件处理和URL处理的辅助工具

设计原则

  1. 单一责任

    • 每个模块都有一个明确的目的
    • 服务器处理MCP接口
    • 核心处理下载
    • Utils处理常见操作
  2. 清洁结构

    • 保持原始网站结构
    • 按类型组织资产
    • 为RAG系统创建清晰的索引
  3. 稳健运营

    • 正确的错误处理
    • 合理的深度限制
    • 资产下载验证
    • 清理URL/路径处理

RAG指数

这 rag_index.json 文件包含:

{
  "url": "https://docs.example.com",
  "domain": "docs.example.com", 
  "pages": 42,
  "path": "/path/to/site"
}

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 提交拉取请求

许可证

MIT许可证-请参阅许可证文件

错误处理

服务器处理常见问题:

  • URL无效
  • 网络错误
  • 资产下载失败
  • 格式错误的HTML
  • 深度递归
  • 文件系统错误

错误响应遵循以下格式:

{
  "status": "error",
  "error": "Detailed error message"
}

成功回复:

{
  "status": "success",
  "path": "/path/to/downloaded/site",
  "pages": 42
}