项目简介
MCP Website Downloader 是一个基于 Model Context Protocol (MCP) 的服务器实现,专注于网站文档下载和 RAG(Retrieval-Augmented Generation)索引的准备。它作为一个 MCP 服务器,可以被 Claude Desktop 等 MCP 客户端调用,实现网站文档的自动化下载和处理,为 LLM 应用提供结构化的知识库。
主要功能点
- 网站文档下载:能够下载完整的网站文档,并尝试保留网站的链接结构和导航。
- 资源组织:下载的文档和资源(CSS, JS, 图片等)会被组织存储在本地目录中,方便管理和访问。
- RAG 索引:为 RAG 系统创建索引文件 ('rag_index.json'),方便 RAG 系统快速检索和利用下载的文档。
- MCP 接口:提供简单的 MCP 接口,可以通过 MCP 客户端调用工具 (Tools) 来触发网站下载等操作。
- 错误处理:具备一定的错误处理能力,例如处理无效 URL、网络错误、下载失败等情况。
安装步骤
-
克隆或 Fork 仓库到本地:
git clone https://github.com/angrysky56/mcp-windows-website-downloader.git cd mcp-windows-website-downloader -
创建并激活虚拟环境:
uv venv ./venv/Scripts/activate # Windows source ./venv/bin/activate # Linux/macOS -
安装项目依赖:
pip install -e .
服务器配置
要将此 MCP 服务器添加到 MCP 客户端(例如 Claude Desktop),需要在客户端的配置文件 'claude_desktop_config.json' 中添加如下配置项。请根据实际情况修改 'command' 和 'args' 中的路径。
"mcp-website-downloader": { "serverName": "mcp-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" # 请替换为你希望存储网站文档的 library 路径 ], "transport": "stdio" # 默认使用 stdio 传输协议 }
参数说明:
- '"serverName"': 服务器名称,在 MCP 客户端中用于标识和调用该服务器。可以自定义,例如 'mcp-website-downloader'。
- '"command"': 启动服务器的命令,这里使用 'uv' (假设已安装 uv 虚拟环境)。
- '"args"': 启动命令的参数列表:
- '"--directory"': 指定仓库的本地目录。请务必替换为你的实际仓库路径。
- '"run"': 使用 'uv' 运行 Python 脚本。
- '"mcp-windows-website-downloader"': 指定要运行的模块名,对应 'mcp_windows_website_downloader' 包。
- '"--library"': 指定网站文档库 (library) 的路径。下载的网站文档将存储在这个目录下。请务必替换为你希望存储网站文档的路径。
- '"transport"': 指定 MCP 客户端与服务器通信的传输协议,默认为 'stdio'。
基本使用方法
-
启动 MCP 服务器: 根据上述配置,启动 MCP 服务器。例如,在仓库根目录下运行:
uv --directory F:/GithubRepos/mcp-windows-website-downloader run mcp-windows-website-downloader --library F:/GithubRepos/mcp-windows-website-downloader/website_library -
使用 MCP 客户端调用工具: 使用 MCP 客户端(如 Claude Desktop 或 'examples/download_docs.py' 中的示例客户端代码)调用 'download' 工具,并提供要下载的网站 URL。
例如,使用 Python 客户端代码:
from mcp.client import Client import asyncio async def main(): async with Client() as client: result = await client.call_tool( "download", {"url": "https://docs.example.com"} # 替换为你要下载的网站 URL ) print(f"Download result: {result}") if __name__ == "__main__": asyncio.run(main())这将调用 MCP 服务器的 'download' 工具,下载 'https://docs.example.com' 的文档并存储在配置的 'website_library' 目录下。
查看下载结果,通常可以在 'docs_library/domain_name/' 目录下找到下载的 HTML 文件和 'rag_index.json' 索引文件。
信息
分类
网页与API