项目简介

Docy 是一个基于 Model Context Protocol (MCP) 构建的服务器,专门用于为大型语言模型 (LLM) 客户端(如 Claude、VS Code 等)提供技术文档的访问能力。它通过集成 'crawl4ai' 工具,能够抓取配置的文档网站内容,并以结构化的方式提供给 LLM,从而让 AI 助手能够访问最新、准确的技术文档,提升代码辅助、问题解答等任务的效率和准确性。

主要功能点

  • 技术文档访问: 允许 LLM 直接访问配置的技术文档网站(如 React、Python 等)。
  • 文档热加载: 当使用 URL 文件配置文档源时,支持在服务器运行时动态更新文档 URL 列表,无需重启。
  • 智能缓存: 对抓取的文档内容进行缓存,减少重复请求,提高响应速度。缓存持久化,支持服务器重启后继续使用。
  • 自托管控制: 用户可以完全控制服务器部署,确保文档访问的安全性和私密性。
  • MCP 能力声明: 通过标准 MCP 协议向 LLM 客户端声明其提供的能力(资源、工具、Prompt)。

提供的具体 MCP 能力包括:

  • 工具 (Tools):
    • 'list_documentation_sources_tool': 列出所有已配置的文档来源 URL。
    • 'fetch_documentation_page': 根据指定的 URL 获取文档页面的完整内容(Markdown 格式)。
    • 'fetch_document_links': 根据指定的 URL 获取文档页面上的所有内部和外部链接。
  • Prompt 模板 (Prompts):
    • 'documentation_sources': 生成用于提示 LLM 列出所有可用文档来源的 Prompt。
    • 'documentation_page': 生成用于提示 LLM 获取指定 URL 文档页面内容的 Prompt。
    • 'documentation_links': 生成用于提示 LLM 获取指定 URL 文档页面链接的 Prompt。
  • 资源 (Resources):
    • 'documentation://sources': 提供文档来源列表作为可访问的资源。

安装步骤

Docy MCP 服务器可以通过多种方式安装和运行:

  1. 使用 'uv' (推荐): 如果安装了 'uv' 工具,可以直接使用 'uvx' 运行,无需单独安装项目。

  2. 使用 'pip': 通过 pip 安装 Python 包:

    pip install mcp-server-docy

    安装后,可以通过 Python 模块方式运行:

    python -m mcp_server_docy
  3. 使用 Docker: 拉取并运行 Docker 镜像:

    docker pull oborchers/mcp-server-docy:latest
    docker run -i --rm oborchers/mcp-server-docy

运行服务器时,需要通过环境变量 'DOCY_DOCUMENTATION_URLS' 或配置文件 '.docy.urls' 指定要抓取的文档 URL 列表。

服务器配置(用于MCP客户端)

MCP 客户端(如 Claude App、VS Code 扩展等)需要知道如何启动和连接到 Docy MCP 服务器。这通常通过客户端的配置文件(例如 '.mcp.json' 或客户端设置)来完成。配置信息需要包含以下关键部分:

  • 服务器名称 (Server Name): 这是客户端用来唯一标识此服务器的名称,Docy 服务器的名称是 '"docy"'。
  • 启动命令 (Command): 这是客户端在需要时启动 Docy 服务器的命令。根据您的安装方式,可以是 'uvx'、'python' 或 'docker' 命令。
  • 启动参数 (Args): 启动命令所需的额外参数。例如,对于 Docker 运行,可能需要 '-i', '--rm' 等参数。
  • 环境变量 (Env): 启动服务器进程时需要设置的环境变量,最重要的是 'DOCY_DOCUMENTATION_URLS',用于指定服务器应访问的文档 URL 列表(多个 URL 用逗号分隔)。也可以通过 'DOCY_DOCUMENTATION_URLS_FILE' 指定 URL 文件路径。其他常用配置包括 'DOCY_TRANSPORT' (通信协议,如 'stdio' 或 'sse')、'DOCY_HOST'、'DOCY_PORT' 等。

以下是配置示例中包含的关键信息,您需要根据您的安装方式和客户端配置格式来填写:

  • 服务器名称: 'docy'
  • 可能的启动命令和参数组合:
    • 'command': 'uvx', 'args': '["mcp-server-docy"]'
    • 'command': 'python', 'args': '["-m", "mcp_server_docy"]'
    • 'command': 'docker', 'args': '["run", "-i", "--rm", "oborchers/mcp-server-docy:latest"]'
  • 必须或常用的环境变量:
    • 'DOCY_DOCUMENTATION_URLS': 设置需要访问的文档 URL 列表,例如 '"https://docs.crawl4ai.com/,https://react.dev/"'。
    • 'DOCY_DOCUMENTATION_URLS_FILE': 设置包含文档 URL 列表的文件路径,例如 '".docy.urls"'。
    • 'DOCY_TRANSPORT': 设置通信协议,例如 '"stdio"' 或 '"sse"'。
    • 'DOCY_HOST' 和 'DOCY_PORT': 当 'DOCY_TRANSPORT' 设置为 'sse' 时,需要指定服务器监听的 IP 地址和端口。

请查阅您的 MCP 客户端文档,了解如何添加或修改 MCP 服务器配置,并将 Docy 的名称、启动命令、参数和必要的环境变量添加到客户端的配置中。

基本使用方法

一旦 Docy MCP 服务器被 MCP 客户端成功启动并连接,您就可以在与 LLM 交互时,通过自然语言请求或明确的工具调用指令,让 LLM 使用 Docy 提供的能力来访问文档。

例如:

  • 询问有关配置文档中某个特定功能的问题,LLM 可能会自动调用 'fetch_documentation_page' 获取相关页面内容进行分析。
  • 要求 LLM 查找某个库的文档,LLM 可能会先使用 'list_documentation_sources_tool' 查看可用的文档源,然后使用 'fetch_documentation_page' 获取入口页面,再使用 'fetch_document_links' 探索相关子页面。
  • 您可以在给 LLM 的 Prompt 中明确指示它使用 Docy,例如“请使用 Docy 查找关于 React Hooks 的文档”。

为了提高 LLM 使用 Docy 的效率和准确性,特别是对于 Claude Code 等客户端,建议在您的项目配置或给 LLM 的指令中,优先指定使用 Docy 提供的文档访问工具,而非其内置的网络抓取工具。

信息

分类

开发者工具