🚀 docs-mcp
这是一个MCP服务器,可让用户高效地搜索和参考自定义文档。它能帮助用户快速定位所需信息,提升文档使用效率。

🚀 快速开始
最基础的使用方法
如果你已有现成的文档项目,可按以下步骤操作:
mkdir -p my-docs/docs
在Claude Desktop的配置文件(claude_desktop_config.json
)中添加如下内容:
{
"mcpServers": {
"docs": {
"command": "uvx",
"args": ["docs-mcp"],
"env": {
"DOCS_BASE_DIR": "/path/to/my-docs"
}
}
}
}
重要提示:docs-mcp始终会引用项目文件夹内的docs/
目录。
✨ 主要特性
- 📄 文档列表展示 - 展示所有文档及其说明。
- 🔍 grep搜索 - 利用正则表达式进行快速全文搜索。
- 🧠 语义搜索 - 使用OpenAI Embeddings进行语义相似搜索(需配置)。
- 📝 文档获取 - 获取指定文档的全部内容。
- 📖 分页支持 - 可高效分页浏览大型文档。
📦 安装指南
前提条件
使用docs-mcp需要安装uv,它是一个用于Python包和项目管理的快速工具。
uv的安装
请根据你的操作系统进行选择
macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
Homebrew (macOS)
brew install uv
使用pip安装
pip install uv
更多详细信息请参考[uv的安装指南](https://docs.astral.sh/uv/getting-started/installation/)。
配置方法
方法1:使用现有文档
如果你手头有Markdown或文本文件,可按以下步骤让其可被搜索:
- 创建项目文件夹。
- 将文档放置在
docs/
目录下。
- 更新Claude Desktop的配置。
✅ 优点:无需命令行操作,可立即使用。
❌ 缺点:无法使用导入工具。
方法2:使用导入工具
如果你想从GitHub或网站导入文档,可按以下步骤操作:
uv init my-docs
cd my-docs
uv add docs-mcp
uv run docs-mcp-import-github https://github.com/owner/repo
uv run docs-mcp-import-github https://github.com/owner/repo/tree/main/docs -o project-docs
✅ 优点:可轻松导入外部文档。
❌ 缺点:需要进行uv的设置。
💻 使用示例
基础用法
以下是在Claude内使用MCP工具的示例:
# 显示文档列表
list_docs
# 获取文档内容(支持分页)
get_doc("path/to/document.md")
# 正则表达式搜索
grep_docs
# 语义相似搜索(需要OpenAI API密钥)
semantic_search
高级用法
开启语义搜索
你可以使用OpenAI Embeddings添加语义搜索功能:
export OPENAI_API_KEY="sk-..."
uv run docs-mcp-generate-metadata
在Claude Desktop的配置中添加API密钥:
{
"mcpServers": {
"docs": {
"command": "uvx",
"args": ["docs-mcp"],
"env": {
"DOCS_BASE_DIR": "/path/to/my-docs",
"OPENAI_API_KEY": "sk-..."
}
}
}
}
分页功能的使用
对于大型文档(超过15,000个字符),系统会自动显示第一页,建议使用分页功能:
# 基本用法(与以往相同)
get_doc("path/to/document.md") # 小文件会显示全文,大文件会自动显示第一页
# 使用分页
get_doc("path/to/document.md", page=1) # 第一页(默认最多10,000个字符)
get_doc("path/to/document.md", page=2) # 第二页
get_doc("path/to/document.md", page=3) # 第三页
分页输出示例:
📄 文档: pytest/reference/plugin_list.rst
📖 第2页/共5页 (字符10,001 - 20,000/共45,123个字符)
📏 行数285 - 570/共1,324行 | 每页最大字符数: 10,000
⚠️ 大型文档已自动分页。若要查看其他页面,请使用以下命令:
💡 get_doc('pytest/reference/plugin_list.rst', page=3) # 下一页
💡 get_doc('pytest/reference/plugin_list.rst', page=5) # 最后一页
────────────────────────────────────────────────────────────
[文档内容]
📚 详细文档
可用工具
MCP工具(在Claude内使用)
list_docs
- 显示文档列表
get_doc
- 获取文档内容(支持分页)
grep_docs
- 正则表达式搜索
semantic_search
- 语义相似搜索(需要OpenAI API密钥)
命令行工具(用于文档管理)
docs-mcp-import-url
- 从网站导入文档
docs-mcp-import-github
- 从GitHub仓库导入文档
docs-mcp-generate-metadata
- 生成语义搜索的元数据
详细配置选项
{
"mcpServers": {
"docs": {
"command": "uvx",
"args": ["docs-mcp"],
"env": {
"DOCS_BASE_DIR": "/path/to/my-docs",
"OPENAI_API_KEY": "sk-...",
"DOCS_FOLDERS": "api,guides,examples",
"DOCS_FILE_EXTENSIONS": ".md,.mdx,.txt,.py",
"DOCS_MAX_CHARS_PER_PAGE": "5000",
"DOCS_LARGE_FILE_THRESHOLD": "10000"
}
}
}
}
环境变量
属性 |
详情 |
变量名 |
说明 |
OPENAI_API_KEY |
OpenAI API密钥(用于语义搜索) |
DOCS_BASE_DIR |
文档项目的根目录 |
DOCS_FOLDERS |
要加载的文件夹(逗号分隔) |
DOCS_FILE_EXTENSIONS |
目标文件扩展名 |
DOCS_MAX_CHARS_PER_PAGE |
每页最大字符数 |
DOCS_LARGE_FILE_THRESHOLD |
大型文件自动分页阈值(字符数) |
支持的文件格式
点击展开
- 文档:
.md
, .mdx
, .txt
, .rst
, .asciidoc
, .org
- 配置:
.json
, .yaml
, .yml
, .toml
, .ini
, .cfg
, .conf
, .xml
, .csv
- 代码:
.py
, .js
, .jsx
, .ts
, .tsx
, .java
, .cpp
, .c
, .h
, .go
, .rs
, .rb
, .php
- 脚本:
.sh
, .bash
, .zsh
, .ps1
, .bat
- Web:
.html
, .css
, .scss
, .vue
, .svelte
- 其他:
.sql
, .graphql
, .proto
, .ipynb
, .dockerfile
, .gitignore
目录结构示例
my-docs/
└── docs/
├── api/
│ └── reference.md
├── guides/
│ └── quickstart.md
└── examples/
└── sample.py
🔧 技术细节
从源代码开发
git clone https://github.com/herring101/docs-mcp.git
cd docs-mcp
uv sync
uv run pytest tests/
uv build
命令行工具详情
点击展开
docs-mcp-import-url
从网站导入文档
docs-mcp-import-url https://example.com/docs --output-dir imported
选项:
--output-dir
, -o
: 输出目录名(保存在docs/
下)
--depth
, -d
: 爬取深度
--include-pattern
, -i
: 包含的URL模式
--exclude-pattern
, -e
: 排除的URL模式
--concurrent
, -c
: 并发下载数
docs-mcp-import-github
从GitHub仓库导入文档。如果未指定分支,则会自动检测默认分支(如main/master等)。
docs-mcp-import-github https://github.com/owner/repo
docs-mcp-import-github https://github.com/owner/repo/tree/main/docs --output-dir imported
docs-mcp-import-github https://github.com/Cysharp/UniTask
选项:
--output-dir
, -o
: 输出目录名(保存在docs/
下。默认值:仓库名)
docs-mcp-generate-metadata
生成语义搜索的元数据
export OPENAI_API_KEY="your-key"
docs-mcp-generate-metadata
安全措施
- 通过环境变量管理API密钥。
- 使用
DOCS_FOLDERS
和DOCS_FILE_EXTENSIONS
限制访问。
- 仅允许外部网络访问OpenAI API。
故障排除
常见问题
在Claude Desktop中未显示
- 检查配置文件的语法。
- 确认
DOCS_BASE_DIR
指向正确的路径。
- 重启Claude Desktop。
语义搜索无法正常工作
- 检查
OPENAI_API_KEY
是否已设置。
- 确认是否已执行
docs-mcp-generate-metadata
。
导入失败
- 检查URL/GitHub仓库是否可访问。
- 检查网络连接。
📄 许可证
本项目采用MIT License。
贡献说明
请参考CONTRIBUTING.md了解如何为项目做出贡献。