项目简介

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、网络错误、下载失败等情况。

安装步骤

  1. 克隆或 Fork 仓库到本地:

    git clone https://github.com/angrysky56/mcp-windows-website-downloader.git
    cd mcp-windows-website-downloader
  2. 创建并激活虚拟环境:

    uv venv
    ./venv/Scripts/activate  # Windows
    source ./venv/bin/activate # Linux/macOS
  3. 安装项目依赖:

    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'。

基本使用方法

  1. 启动 MCP 服务器: 根据上述配置,启动 MCP 服务器。例如,在仓库根目录下运行:

    uv --directory F:/GithubRepos/mcp-windows-website-downloader run mcp-windows-website-downloader --library F:/GithubRepos/mcp-windows-website-downloader/website_library
  2. 使用 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