返回市场
MCP-Windows网站下载器

MCP-Windows网站下载器

作者:angrysky565 星标更新:2025-05-06

项目介绍

MseeP.ai 安全评估徽章

MCP 网站下载器

一个简单的MCP服务器,用于下载文档网站并准备进行RAG索引。

功能

  • 下载完整的文档站点,虽然说不上非常完整。
  • 维持链接结构和导航,但并不完全准确。哈哈。
  • 下载并组织资源(CSS、JS、图片),但不太适合AI处理,可能需要某种解析或向数据库中矢量化。
  • 创建干净的RAG系统索引,目前似乎在每个文件夹中创建索引,还没有仔细查看过。
  • 简单的单一用途MCP界面,是的。

安装

分叉并下载,切换到仓库目录。

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"
     ]
   },

alt text

其他用法你不需要担心,可能是虚构的哈哈:

  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服务器实现
    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. 提交拉取请求

许可证

MIT许可证 - 查看LICENSE文件

错误处理

服务器处理常见的问题:

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

错误响应遵循以下格式:

{
  "status": "error",
  "error": "详细的错误信息"
}

成功响应:

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