Token导航 LogoToken导航TokenDH.com
MCP Doc Search logo
搜索检索stdio官方级别未说明来源级核验

MCP Doc Search

MCP Server

This project provides a toolset to crawl websites wikis, tool/library documentions and generate Markdown documentation, and make that documentation searchable via a Model Context Protocol (MCP) server, designed for integration with tools like Cursor.

工具数

0

提示词数

0

GitHub Stars

38

资源数

0
搜索PythonClaudeCursorClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

alizdavoodi

提供方

alizdavoodi

最后核验

2026/5/18 03:28

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run python crawl.py https://docs.example.com

详细介绍

文档爬虫和MCP服务器

该项目提供了一个工具集,用于抓取网站、生成Markdown文档,并使该文档可通过模型上下文协议(MCP)服务器进行搜索,该服务器专为与Cursor等工具集成而设计。

特性

  • 网络爬虫(crawler_cli):

- 使用以下命令从给定的URL开始抓取网站 crawl4ai. - 可配置的抓取深度、URL模式(包括/排除)、内容类型等。 - 在Markdown转换之前,可以选择清理HTML(删除导航链接、页眉、页脚)。 - 从抓取的内容生成一个合并的Markdown文件。 - 将输出保存到 ./storage/ 默认情况下。

  • MCP服务器(mcp_server):

- 从加载Markdown文件 ./storage/ 目录。 - 根据标题将Markdown解析为语义块。 - 使用以下命令为每个块生成向量嵌入 sentence-transformers (multi-qa-mpnet-base-dot-v1). - 缓存: 使用缓存文件(storage/document_chunks_cache.pkl)以存储处理后的块和嵌入。 - 首次运行: 爬取新文档后的初始服务器启动可能需要一些时间,因为它需要解析、分块和生成所有内容的嵌入。 - 后续运行: 如果缓存文件存在,以及源的修改时间 .md 文件在 ./storage/ 如果没有改变,服务器直接从缓存加载,从而大大加快了启动时间。 - 缓存无效: 缓存会自动失效并重新生成(如果有的话) .md 文件在 ./storage/ 自上次创建缓存以来,已被修改、添加或删除。 - 通过以下方式显示MCP工具 fastmcp 对于像Cursor这样的客户端: - list_documents:列出可用的已爬网文档。 - get_document_headings:检索文档的标题结构。 - search_documentation:使用向量相似度对文档块执行语义搜索。

  • 光标集成:设计用于通过以下方式运行MCP服务器 stdio 在Cursor中使用的传输。

工作流程

  1. 爬行: 使用 crawler_cli 抓取网站并生成 .md 文件在 ./storage/.
  2. 运行服务器: 配置并运行 mcp_server (通常由像Cursor这样的MCP客户端管理)。
  3. 加载和嵌入: 服务器自动加载、分块和嵌入来自 .md 文件在 ./storage/.
  4. 查询: 使用MCP客户端(例如Cursor Agent)与服务器的工具进行交互(list_documents, search_documentation等)查询抓取的内容。

设置

此项目使用 uv 用于依赖性管理和执行。

  1. 安装 uv:按照上的说明进行操作 uv网站.
  1. 克隆存储库:
   git clone https://github.com/alizdavoodi/MCPDocSearch.git
   cd MCPDocSearch
  1. 安装依赖项:
   uv sync

此命令创建虚拟环境(通常 .venv)并安装中列出的所有依赖项 pyproject.toml.

用法

1.爬行文档

使用 crawl.py 脚本或直接通过 uv run.

基本示例:

uv run python crawl.py https://docs.example.com

这将爬行 https://docs.example.com 使用默认设置并将输出保存到 ./storage/docs.example.com.md.

选项示例:

uv run python crawl.py https://docs.another.site --output ./storage/custom_name.md --max-depth 2 --keyword "API" --keyword "Reference" --exclude-pattern "*blog*"

查看所有选项:

uv run python crawl.py --help

关键选项包括:

  • --output/-o:指定输出文件路径。
  • --max-depth/-d:设置爬网深度(必须介于1和5之间)。
  • --include-pattern/--exclude-pattern:筛选要爬网的URL。
  • --keyword/-k:爬行过程中相关性评分的关键字。
  • --remove-links/--keep-links:控制HTML清理。
  • --cache-mode:控制 crawl4ai 缓存(DEFAULT, BYPASS, FORCE_REFRESH).
  • --wait-for:在捕获内容之前等待特定时间(秒)或CSS选择器(例如。, 5'css:.content').适用于加载延迟的页面。
  • --js-code:在捕获内容之前,在页面上执行自定义JavaScript。
  • --page-load-timeout:设置等待页面加载的最长时间(秒)。
  • --wait-for-js-render/--no-wait-for-js-render:通过滚动和单击潜在的“加载更多”按钮,启用特定脚本以更好地处理JavaScript繁重的单页应用程序(SPA)。在以下情况下自动设置默认等待时间 --wait-for 未指定。

用模式和深度精炼爬行

有时,您可能只想抓取文档网站的特定子部分。这通常需要一些尝试和错误 --include-pattern--max-depth.

  • --include-pattern:限制爬虫只跟踪URL与给定模式匹配的链接。使用通配符(*)为了灵活性。
  • --max-depth:控制爬虫将从起始URL进行多少次“点击”。深度为1表示它只抓取从起始URL直接链接的页面。深度为2表示它抓取这些页面 _和_ 从它们链接的页面(如果它们也匹配,则包括模式)等等。

示例:仅对Pulsar Admin API部分进行爬网

假设你只想要下面的内容 https://pulsar.apache.org/docs/4.0.x/admin-api-*.

  1. 起始URL: 您可以从概述页面开始: https://pulsar.apache.org/docs/4.0.x/admin-api-overview/.
  2. 包括图案: 您只需要包含以下内容的链接 admin-api: --include-pattern "*admin-api*".
  3. 最大深度: 你需要弄清楚管理API链接从起始页有多少层。从开始 2 必要时增加。
  4. 详细模式: 使用 -v 查看哪些URL正在被访问或跳过,这有助于调试模式和深度。
uv run python crawl.py https://pulsar.apache.org/docs/4.0.x/admin-api-overview/ -v --include-pattern "*admin-api*" --max-depth 2

检查输出文件(./storage/pulsar.apache.org.md 在这种情况下默认)。如果页面缺失,请尝试增加 --max-depth3。如果包含太多不相关的页面,请制作 --include-pattern 更具体或添加 --exclude-pattern 规则。

2.运行MCP服务器

MCP服务器设计为由Cursor等MCP客户端通过 stdio 运输。运行服务器的命令是:

python -m mcp_server.main

但是,它需要从项目的根目录运行(MCPDocSearch)这样Python就可以找到 mcp_server 模块。

⚠️ 注意:嵌入时间

MCP服务器在首次运行时或源Markdown文件在 ./storage/ 改变。这个过程涉及加载机器学习模型并处理所有文本块。

  • 时间变化: 嵌入生成所需的时间可能因以下因素而异:

- 硬件: 配备兼容GPU(CUDA或Apple Silicon/MPS)的系统将比仅配备CPU的系统快得多。 - 数据大小: Markdown文件的总数及其内容长度直接影响处理时间。

  • 耐心点: 对于大型文档集或较慢的硬件,初始启动(或更改后的启动)可能需要几分钟的时间。后续使用缓存的初创公司将更快。 ⏳

3.为桌面配置Cursor/Claude

要将此服务器与Cursor一起使用,请创建 .cursor/mcp.json 此项目根目录中的文件(MCPDocSearch/.cursor/mcp.json)内容如下:

{
  "mcpServers": {
    "doc-query-server": {
      "command": "uv",
      "args": [
        "--directory",
        // IMPORTANT: Replace with the ABSOLUTE path to this project directory on your machine
        "/path/to/your/MCPDocSearch",
        "run",
        "python",
        "-m",
        "mcp_server.main"
      ],
      "env": {}
    }
  }
}

说明:

  • "doc-query-server":Cursor中服务器的名称。
  • "command": "uv":指定 uv 作为命令执行者。
  • "args":

- "--directory", "/path/to/your/MCPDocSearch": 关键地,告诉 uv 在运行命令之前,将其工作目录更改为项目根目录。 替换 /path/to/your/MCPDocSearch 使用系统上的实际绝对路径。 - "run", "python", "-m", "mcp_server.main":命令 uv 将在正确的目录和虚拟环境中执行。

保存此文件并重新启动Cursor后,“文档查询服务器”应在Cursor的MCP设置中可用,并可供代理使用(例如。, @doc-query-server search documentation for "how to install").

对于Claude For Desktop,您可以使用此 官方文件 设置MCP服务器

依赖项

使用的关键库:

  • crawl4ai:核心网络爬行功能。
  • fastmcp:MCP服务器实现。
  • sentence-transformers:生成文本嵌入。
  • torch:必填项 sentence-transformers.
  • typer:构建爬虫CLI。
  • uv:项目和环境管理。
  • beautifulsoup4 (通过 crawl4ai):HTML解析。
  • rich:增强终端输出。

建筑

该项目遵循以下基本流程:

  1. crawler_cli:您运行此工具,提供起始URL和选项。
  2. 爬行(crawl4ai):该工具使用 crawl4ai 要获取网页,请根据配置的规则(深度、模式)点击链接。
  3. 清洁(crawler_cli/markdown.py):可选地,使用BeautifulSoup清理HTML内容(删除导航、链接)。
  4. Markdown生成(crawl4ai):已清理的HTML转换为Markdown。
  5. 存储(./storage/):生成的Markdown内容保存到 ./storage/ 目录。
  6. mcp_server 初创公司:当MCP服务器启动时(通常通过Cursor的配置),它会运行 mcp_server/data_loader.py.
  7. 加载和缓存:数据加载器检查缓存文件(.pkl).如果有效,它将从缓存中加载块和嵌入。否则,它会读到 .md 文件来自 ./storage/.
  8. 分块与嵌入:Markdown文件根据标题解析成块。使用以下命令为每个块生成嵌入 sentence-transformers 并存储在内存中(并保存到缓存中)。
  9. MCP工具(mcp_server/mcp_tools.py):服务器公开工具(list_documents, search_documentation等)通过 fastmcp.
  10. 查询(光标):像Cursor这样的MCP客户端可以调用这些工具。 search_documentation 使用预先计算的嵌入,根据与查询的语义相似性找到相关块。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

贡献

欢迎投稿!请随时打开问题或提交拉取请求。

安全说明

  • 泡菜缓存: 本项目使用Python pickle 缓存已处理数据的模块(storage/document_chunks_cache.pkl).从不受信任的源中解压缩数据可能是不安全的。确保 ./storage/ 目录只能由受信任的用户/进程写入。

目录标签

目录标签

搜索PythonClauderesearch-and-datacrawlermcpmcp-server文档爬取本地部署语义搜索Markdown生成技术文档管理MCP协议

支持客户端

CursorClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

部署方式(deploymentType,部署类型)

local-only

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiononelocal-only

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP