由 Probe 提供支持的灵活的模型上下文协议(MCP)服务器,使任何文档或代码库都可以通过AI助手进行搜索。
只需指向一个git仓库或文件夹即可与代码或文档进行对话:
npx -y @probelabs/docs-mcp@latest --gitUrl https://github.com/probelabs/probe
使用场景:
内容源(文档或代码)可以在npm run build步骤中预先构建到包中,或者在运行时通过本地目录或Git存储库动态配置。默认情况下,当使用gitUrl且未启用自动更新时,服务器会下载一个.tar.gz存档以加快启动速度。只有当autoUpdateInterval大于0时才会使用完整的Git克隆。
添加到您的Claude Desktop配置文件(macOS上的~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"docs-search": {
"command": "npx",
"args": [
"-y",
"@probelabs/docs-mcp@latest",
"--gitUrl",
"https://github.com/your-org/your-repo",
"--toolName",
"search_docs",
"--toolDescription",
"搜索文档"
]
}
}
}
您可以配置您的MCP客户端使用npx启动此服务器。以下是如何配置客户端的一些示例(语法可能因具体客户端而异):
示例1:动态搜索Git存储库(Tyk文档)
此配置告诉客户端使用npx运行最新版本的@probelabs/docs-mcp包,并动态指向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",
"搜索Tyk API管理文档"
],
"enabled": true
}
}
}
或者,某些客户端可能允许直接指定完整命令。您可以通过以下方式实现与示例1相同的效果:
npx -y @probelabs/docs-mcp@latest --gitUrl https://github.com/TykTechnologies/-docs --toolName search_tyk_docs --toolDescription "搜索Tyk API管理文档"
示例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参数或环境变量覆盖)。
{
"includeDir": "/Users/username/projects/my-project/docs",
"toolName": "search_my_project_docs",
"toolDescription": "搜索我的项目的文档。",
"ignorePatterns": [
"node_modules",
".git",
"build",
"*.log"
]
}
{
"gitUrl": "https://github.com/your-org/your-codebase.git",
"gitRef": "develop",
"autoUpdateInterval": 15,
"toolName": "search_codebase",
"toolDescription": "搜索公司的主要代码库。",
"ignorePatterns": [
"*.test.js",
"dist/",
"__snapshots__"
]
}
includeDir: (构建/运行时) 绝对路径指向一个本地目录,其内容将在构建时复制到data目录,或在运行时直接使用(如果未指定dataDir)。使用此选项或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工具描述(默认:“使用probe搜索引擎搜索文档。”)。ignorePatterns: (构建/运行时) 全局模式数组。enableBuildCleanup: (构建) 如果为true(默认),在构建步骤后从data目录中删除常见的二进制/媒体文件(图像、视频、存档等)和大于100KB的文件。设置为false以禁用此清理。
includeDir:匹配这些模式的文件在复制到data时会被排除。也会尊重.gitignore规则。gitUrl或dataDir:data目录内匹配这些模式的文件将被搜索索引器忽略。优先级:
--dataDir、--gitUrl等)和环境变量(DATA_DIR、GIT_URL等)覆盖所有其他设置。CLI参数优先于环境变量。docs-mcp.config.json中的设置(includeDir、gitUrl、toolName等)定义了npm run build期间使用的默认值,也作为运行时默认值,除非被覆盖。toolName: 'search_docs',autoUpdateInterval: 5)。注意:如果在同一配置源(例如,都在配置文件中,或都作为CLI参数)中同时提供了includeDir和gitUrl,则gitUrl优先。
您可以使用此项目作为模板来创建并发布自己的npm包,其中包含预构建的文档或代码。这为用户提供了一种零配置体验(类似于上面的示例2)。
docs-mcp.config.json: 定义指向您内容来源的includeDir或gitUrl。设置默认的toolName和toolDescription。package.json: 更改name(例如,@my-org/my-docs-mcp)、version、description等。npm run build。这将克隆/复制您的内容到data目录,并准备好包。npm publish(您需要配置npm身份验证)。现在,用户可以轻松运行您的特定文档服务器:npx @my-org/my-docs-mcp@latest。
(之前的“运行”,“运行时的动态配置”和“环境变量”部分已被移除,因为现在的主要文档方法是使用带有参数的客户端配置中的npx。)
此MCP服务器通过模型上下文协议向连接的AI助手公开一个搜索工具。工具的名称和描述是可配置的(参见配置部分)。它搜索当前活动的data目录内的内容(由构建设置、配置文件、CLI参数或环境变量确定)。
工具参数:
query: 描述要搜索内容的自然语言查询或关键词(例如,“如何配置网关”,“数据库连接示例”,“用户认证”)。服务器使用Probe的搜索功能找到相关内容。(必需)page: 当处理许多匹配项时结果页码。如果省略,默认为1。(可选)工具调用示例(使用来自用法示例1的search_tyk_docs):
{
"tool_name": "search_tyk_docs",
"arguments": {
"query": "网关速率限制",
"page": 1 // 请求第一页
}
}
工具调用示例(使用@tyk/docs-mcp包中的工具):
假设预构建包@tyk/docs-mcp将其工具名称定义为search_tyk_official_docs:
{
"tool_name": "search_tyk_official_docs",
"arguments": {
"query": "仪表盘API访问",
"page": 2 // 请求第二页
}
}
(之前的“作为npm包发布”部分已被上面的“创建自己的预构建MCP服务器”部分取代。)
要通过Smithery自动安装Docs MCP Server用于Claude Desktop:
npx -y @smithery/cli install @probelabs/docs-mcp --client claude
此项目包括一个可重用的GitHub Actions工作流,使得将MCP服务器发布到NPM变得极其简单。您可以在任何项目中使用此工作流,在推送git标签时自动构建和发布您的MCP服务器。
要在您自己的项目中使用此自动化发布系统,请创建一个单个文件.github/workflows/release.yml:
name: 发布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: '您的MCP服务器描述'
include-folders: 'src,data,bin' # 要包含在包中的文件夹
include-files: '*.json,*.md' # 文件模式
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服务器 | 包描述 |
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 }}
NPM_TOKEN秘密(设置→秘密→操作)工作流自动:
v1.0.0 → 1.0.0)package.jsonMIT