文档搜索服务器

一个灵活的模型上下文协议(MCP)服务器,使任何文档或代码库可通过AI助手进行搜索。

  • by probelabs
  • JavaScript
  • 本地部署
  • 91 星标
  • 更新于
在 GitHub 查看 buger/docs-mcp

使用说明

MCP服务器文档

一个由……驱动的灵活模型上下文协议(MCP)服务器 探针 这使得任何文档或代码库都能通过AI助手进行搜索。

只需指向一个 Git 仓库或文件夹,即可与代码或文档进行聊天:

npx -y @probelabs/docs-mcp@latest --gitUrl https://github.com/probelabs/probe

用例:

  • 与任何GitHub仓库进行聊天: 将服务器指向一个公共或私有的Git仓库,以便能够对其内容进行自然语言查询。
  • 搜索您的文档: 集成您项目的文档(来自本地目录或Git),以便轻松搜索。
  • 构建自定义MCP服务器: 使用此项目作为模板,创建您自己的官方MCP服务器,以满足特定的文档集甚至代码库的需求。

内容来源(文档或代码)可以是 预构建 在……期间放入包裹中 npm run build 步骤,或配置 动态地 在运行时使用本地目录或Git仓库。默认情况下,当使用 gitUrl 在未启用自动更新的情况下,服务器会下载一个 .tar.gz 存档以加快启动速度。仅在以下情况下才使用完整的Git克隆: autoUpdateInterval 大于0。

特点/特性

  • 由Probe提供支持: 利用/发挥……的优势 探针 用于获取高效且相关结果的搜索引擎。
  • 灵活的内容来源: 包含一个特定的本地目录或克隆一个Git仓库。
  • 预构建内容: 可选地,将文档/代码内容直接打包进软件包中。
  • 动态配置: 通过配置文件、命令行参数或环境变量来配置内容源、Git 设置以及 MCP 工具的详细信息。
  • 自动Git更新: 通过在可配置的时间间隔内自动从Git仓库拉取更改,保持内容的新鲜度。
  • 可定制的MCP工具: 为AI助手所使用的搜索工具定义名称和描述。
  • 人工智能集成: 无缝集成支持模型上下文协议(MCP)的人工智能助手。

安装

快速入门Claude桌面版

添加到您的Claude桌面配置文件中(~/Library/Application Support/Claude/claude_desktop_config.json (在 macOS 上):

{
  "mcpServers": {
    "docs-search": {
      "command": "npx",
      "args": [
        "-y",
        "@probelabs/docs-mcp@latest",
        "--gitUrl",
        "https://github.com/your-org/your-repo",
        "--toolName",
        "search_docs",
        "--toolDescription",
        "Search documentation"
      ]
    }
  }
}

MCP客户端集成

您可以配置您的MCP客户端以使用以下方式启动此服务器: npx以下是配置客户端的一些示例(具体语法可能因客户端而异):

示例1:动态搜索Git仓库(Tyk文档)

这个配置告诉客户端运行最新的 @probelabs/docs-mcp 使用包(或“使用封装”) npx,动态地将其指向Tyk文档仓库。该 -y 该论点自动证实了 npx 安装提示。该 --toolName 并且 --toolDescription 参数用于自定义搜索工具在AI助手中的显示方式。

{
  "mcpServers": {
    "tyk-docs-search": {
      "command": "npx",
      "args": [
        "-y",
        "@probelabs/docs-mcp@latest",
        "--gitUrl",
        "https://github.com/TykTechnologies/tyk-docs",
        "--toolName",
        "search_tyk_docs",
        "--toolDescription",
        "Search Tyk API Management Documentation"
      ],
      "enabled": true
    }
  }
}

或者,有些客户端可能允许直接指定完整命令。您可以使用以下方法达到与示例1相同的效果:

npx -y @probelabs/docs-mcp@latest --gitUrl https://github.com/TykTechnologies/tyk-docs --toolName search_tyk_docs --toolDescription "Search Tyk API Management Documentation"

示例2:使用预构建的、带有品牌标识的MCP服务器(例如,Tyk包)

如果一个团队发布了一个包含特定文档(如 @tyk-technologies/docs-mcp), 配置变得更加简单,因为内容源和工具详情都已内置于该包中。这 -y 建议仍然适用于(或:建议继续使用) npx。

{
  "mcpServers": {
    "tyk-official-docs": {
      "command": "npx",
      "args": [
        "-y",
        "@tyk-technologies/docs-mcp@latest"
      ],
      "enabled": true
    }
  }
}

这种方法非常适合为官方文档或代码库提供标准化的搜索体验。请参阅下文的“创建您自己的预构建MCP服务器”部分。

以下是Tyk团队如何构建他们自己的文档MCP服务器的示例:https://github.com/TykTechnologies/docs-mcp。

配置

创建一个 docs-mcp.config.json 在根目录中创建文件以定义 默认 构建过程中及运行时所使用的源内容和MCP工具详细信息(除非被CLI参数或环境变量覆盖)。

示例1:使用本地目录

{
  "includeDir": "/Users/username/projects/my-project/docs",
  "toolName": "search_my_project_docs",
  "toolDescription": "Search the documentation for My Project.",
  "ignorePatterns": [
    "node_modules",
    ".git",
    "build",
    "*.log"
  ]
}

示例2:使用Git仓库

{
  "gitUrl": "https://github.com/your-org/your-codebase.git",
  "gitRef": "develop",
  "autoUpdateInterval": 15,
  "toolName": "search_codebase",
  "toolDescription": "Search the main company codebase.",
  "ignorePatterns": [
    "*.test.js",
    "dist/",
    "__snapshots__"
  ]
}

配置选项

  • includeDir: (构建/运行时) 本地目录的绝对路径,其内容将被复制到 data 在构建过程中指定目录,或者在运行时直接使用(如果) dataDir 未指定。使用此或(OR) gitUrl。
  • gitUrl: (构建/运行时) Git 仓库的 URL。使用此或 includeDir.
    • 如果 autoUpdateInterval 是0(默认值),服务器尝试下载一个 .tar.gz 直接存档(目前假设采用GitHub的URL结构: https://github.com/{owner}/{repo}/archive/{ref}.tar.gz)。 这种方法更快,但不支持更新。
    • 如果 autoUpdateInterval > 0时,服务器执行一个 git clone 并且支持定期更新。
  • gitRef: (构建/运行时) 要使用的分支、标签或提交哈希值来自 gitUrl (默认: main)。 用于tarball下载以及Git克隆/拉取。
  • autoUpdateInterval: (运行时) 自动检查Git更新的间隔时间(分钟)(默认:0,表示禁用)。将此值设置为大于0的值将启用Git克隆和定期检查 git pull 操作。需要 git 命令需在系统路径中可用。
  • dataDir: (运行时) 运行时要搜索内容的目录路径。覆盖从(其他来源)获取的内容 includeDir 或者 gitUrl 在配置文件中定义或内置在包中。用于在不重新构建的情况下,指示服务器指向实时数据。
  • toolName: (构建/运行时) 服务器暴露的MCP工具名称(默认: search_docs)。 选择一个与内容相关的描述性名称。
  • toolDescription: (构建/运行时) 向AI助手展示的MCP工具描述(默认:“使用探针搜索引擎搜索文档。”)。
  • ignorePatterns: (构建/运行时) 一个包含通配符模式的数组。
  • enableBuildCleanup: (构建) 如果 true (默认),移除常见的二进制/媒体文件(图片、视频、压缩包等)以及大于100KB的文件 data 构建步骤后的目录。设置为 false 要禁用此清理操作。
    • 如果使用 includeDir 在构建过程中:当复制时,符合这些模式的文件将被排除 data。 .gitignore 规则也得到了遵守。
    • 如果使用 gitUrl 或者 dataDir 在运行时:匹配这些模式的文件在 data 搜索索引器会忽略目录。

优先级:

  1. 运行时配置(最高): CLI 参数 (--dataDir, --gitUrl等)和环境变量(DATA_DIR, GIT_URL等(参数)将覆盖所有其他设置。命令行参数(CLI arguments)优先于环境变量。
  2. 构建时配置: 设置在 docs-mcp.config.json (includeDir, gitUrl, toolName等)定义了在此期间使用的默认值 npm run build 并且在未被覆盖的情况下,也作为运行时的默认值。
  3. 默认值(最低): 如果未提供配置,则使用内部默认值(例如。, toolName: 'search_docs', autoUpdateInterval: 5)。

注:如果两者都 includeDir 并且 gitUrl 在……中提供 相同的 配置来源(例如,都在配置文件中,或者都作为命令行参数提供), gitUrl 优先考虑。

创建您自己的预构建MCP服务器

你可以使用此项目作为模板,来创建和发布你自己的npm包,并将文档或代码预置其中。这样为用户提供了零配置的体验(如上面的示例2所示)。

  1. 克隆/复制此仓库: 从这个项目的代码开始。
  2. 配置 docs-mcp.config.json: 定义 includeDir 或者 gitUrl 指向您的内容来源。设置默认值 toolName 并且 toolDescription。
  3. 更新 package.json: 改变 name (例如。, @my-org/my-docs-mcp) version, description等。
  4. 构建: 跑 npm run build这会克隆/复制您的内容到 data 目录并使软件包准备就绪。
  5. 发布: 跑 npm publish (你需要配置 npm 认证)。

现在,用户可以轻松地运行您特定的文档服务器: npx @my-org/my-docs-mcp@latest。

(之前的“运行”、“运行时动态配置”和“环境变量”部分已被删除,因为 npx 在客户端配置中使用带参数的方法现已成为主要的文档化方法。)

与AI助手配合使用

这个MCP服务器通过模型上下文协议向连接的AI助手暴露一个搜索工具。该工具的名称和描述是可配置的(见配置部分)。它搜索当前活动内容中的 data 目录(由构建设置、配置文件、命令行参数或环境变量确定)。

工具参数:

  • query一个自然语言查询或描述搜索内容的关键词(例如,“如何配置网关”,“数据库连接示例”,“用户认证”)。服务器使用Probe的搜索功能来查找相关内容。(必填)
  • page在处理多个匹配项时,用于指定结果的页码。如果省略,则默认为1。(可选)

示例工具调用(使用 search_tyk_docs 来自使用示例1):

{
  "tool_name": "search_tyk_docs",
  "arguments": {
    "query": "gateway rate limiting",
    "page": 1 // Requesting the first page
  }
}

示例工具调用(使用来自...的工具) @tyk/docs-mcp (软件包):

假设使用预构建的包 @tyk/docs-mcp 将其工具名称定义为 search_tyk_official_docs:

{
  "tool_name": "search_tyk_official_docs",
  "arguments": {
    "query": "dashboard api access",
    "page": 2 // Requesting the second page
  }
}

(之前的“作为npm包发布”部分已被上面的“创建您自己的预构建MCP服务器”部分所替代。)

第三方集成

通过Smithery进行安装

通过(某种方式)自动为Claude Desktop安装Docs MCP服务器 “Smithery”可以翻译为“铁匠铺”或“锻造工坊”。这个词来源于“smith”,意指从事铁匠工作的人或铁匠的工作场所:

npx -y @smithery/cli install @probelabs/docs-mcp --client claude

社区列表

使用GitHub Actions实现NPM包的自动化发布

这个项目包含一个可重用的GitHub Actions工作流,它使得将MCP服务器发布到NPM变得异常简单。你可以在任何项目中使用这个工作流,当推送git标签时,它会自动构建并发布你的MCP服务器。

使用可重用发布工作流

要在您的项目中使用这个自动化发布系统,请创建一个单一文件 .github/workflows/release.yml:

name: Release MCP

on:
  push:
    tags:
      - 'v*'

jobs:
  release:
    uses: probelabs/docs-mcp/.github/workflows/release-mcp.yml@main
    with:
      package-name: '@yourorg/your-mcp-server'
      package-description: 'Your MCP Server Description'
      include-folders: 'src,data,bin'  # Folders to include in the package
      include-files: '*.json,*.md'     # File patterns to include
    secrets:
      NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

然后只需创建一个 git 标签来触发发布:

git tag v1.0.0
git push origin v1.0.0

工作流输入参数

参数 必需 默认值 描述
package-name 是 - NPM 包名(例如。, @org/my-mcp)
package-description 不 MCP Server 包装描述
entry-point 不 src/index.js 主入口文件路径
include-folders 不是 src,data,bin 包含的文件夹列表,以逗号分隔
include-files 不 *.json,*.md,LICENSE 以逗号分隔的文件模式列表
dependencies 编号 {} 作为JSON字符串的附加依赖项
build-command 编号 - 发布前运行的构建命令
node-version 序号 18 要使用的 Node.js 版本

示例配置

最小配置

jobs:
  release:
    uses: probelabs/docs-mcp/.github/workflows/release-mcp.yml@main
    with:
      package-name: '@myorg/simple-mcp'
    secrets:
      NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

带有自定义依赖项

jobs:
  release:
    uses: probelabs/docs-mcp/.github/workflows/release-mcp.yml@main
    with:
      package-name: '@myorg/custom-mcp'
      dependencies: '{"lodash": "^4.17.21", "dotenv": "^16.0.0"}'
    secrets:
      NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

带有构建步骤

jobs:
  release:
    uses: probelabs/docs-mcp/.github/workflows/release-mcp.yml@main
    with:
      package-name: '@myorg/built-mcp'
      build-command: 'npm run build && npm run prepare-data'
      include-folders: 'dist,assets'
    secrets:
      NPM_TOKEN: ${{ secrets.NPM_TOKEN }}

先决条件

  1. 添加 NPM_TOKEN 在您的GitHub仓库中设置密钥(设置 → 密钥 → 操作)
  2. 确保您在您的组织/范围内有npm发布权限

该工作流程自动:

  • 从 git 标签中提取版本(例如。, v1.0.0 → 1.0.0)
  • 生成一个完整的 package.json 带有MCP依赖项
  • 执行可选的构建命令
  • 发布到NPM,公开访问

许可证

麻省理工学院(MIT)