Back to MCP directory
publicPublicdnsLocal runtime

mcp-windows-website-downloader

一个用于下载文档网站并准备RAG索引的MCP服务工具

article

README

🚀 MCP 网站下载器

MCP 网站下载器是一个简单的 MCP 服务器,可用于下载文档网站,并为 RAG 索引做准备,方便后续使用。

🚀 快速开始

安装

  1. 分叉并下载代码库,进入仓库目录,执行以下命令:
uv venv
./venv/Scripts/activate
pip install -e .
  1. 在你的 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"
})

✨ 主要特性

  • 可下载完整的文档站点,或至少较大的部分。
  • 虽目前还不能维护链接结构和导航,但后续有优化空间。
  • 能下载并组织资源(CSS、JS、图片),不过对 AI 并不友好,所有内容可能需要某种形式的解析或向数据库中矢量化。
  • 可创建干净的索引以供 RAG 系统使用,当前似乎在每个文件夹中都创建了一个索引,后续可进一步优化展示。
  • 拥有简单单一用途的 MCP 接口。

📦 安装指南

具体安装步骤见上文快速开始部分的安装说明。

💻 使用示例

基础用法

# 启动服务器
python -m mcp_windows_website_downloader.server --library docs_library
# 通过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服务器实现
    core.py      # 核心网站下载功能
    utils.py     # 辅助工具

组件

  • server.py:主要的 MCP 服务器实现,处理工具注册和请求。
  • core.py:核心网站下载功能,负责资源处理。
  • utils.py:辅助工具,用于文件处理和 URL 解析。

设计原则

  1. 单一职责
    • 每个模块只有一个明确的责任。
    • 服务器处理 MCP 接口。
    • 核心处理下载。
    • 工具处理通用操作。
  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. 提交拉取请求。

错误处理

服务器处理常见问题:

  • 无效 URL。
  • 网络错误。
  • 资源下载失败。
  • HTML 格式错误。
  • 下载深度限制。

错误响应示例:

{
  "error": {
    "code": 500,
    "message": "Internal Server Error"
  }
}

示例输出

成功响应示例:

{
  "status": {
    "code": 200,
    "message": "Download completed successfully"
  },
  "data": {
    "downloadedFiles": ["index.html", "about.html", "docs/getting-started.html"],
    "totalFiles": 3,
    "failedDownloads": []
  }
}

📄 许可证

本项目采用 MIT License 许可协议,请参阅 LICENSE 文件获取详细信息。

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client