article
README
🚀 MCP 网站下载器
MCP 网站下载器是一个简单的 MCP 服务器,可用于下载文档网站,并为 RAG 索引做准备,方便后续使用。
🚀 快速开始
安装
- 分叉并下载代码库,进入仓库目录,执行以下命令:
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"
]
},

启动与调用
- 启动服务器:
python -m mcp_windows_website_downloader.server --library docs_library
- 通过 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 解析。
设计原则
- 单一职责
- 每个模块只有一个明确的责任。
- 服务器处理 MCP 接口。
- 核心处理下载。
- 工具处理通用操作。
- 清晰的结构
- 维持原始网站结构。
- 按类型组织资源。
- 为 RAG 系统创建清晰索引。
- 稳健的操作
- 合理的错误处理。
- 下载深度限制。
- 资源下载验证。
- 清晰的 URL/路径处理。
RAG 索引
rag_index.json 文件包含:
{
"url": "https://docs.example.com",
"domain": "docs.example.com",
"pages": 42,
"path": "/path/to/site"
}
贡献
- 分叉仓库。
- 创建功能分支。
- 进行你的修改。
- 提交拉取请求。
错误处理
服务器处理常见问题:
- 无效 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 文件获取详细信息。
Scan to join WeChat group