Mcp Windows Website Downloader

Mcp Windows Website Downloader

🚀 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 文件获取详细信息。

  • 0 关注
  • 0 收藏,24 浏览
  • system 提出于 2025-09-19 18:51

相似服务问题

相关AI产品