从AI助手直接访问本地Dash文档 🚀
DocsetMCP是一个模型上下文协议(MCP)服务器,它无缝地将你的本地Dash文档集与像Claude这样的AI助手集成在一起,无需离开对话即可即时访问离线文档。
{
"mcpServers": {
"docsetmcp": {
"command": "uvx",
"args": ["docsetmcp"]
}
}
}
添加到你的MCP配置并重启MCP客户端。然后尝试询问类似“找到AppIntent文档”的问题。
DocsetMCP支持超过165个文档集,包括:
<details> <summary><b>流行语言</b></summary>使用list_available_docsets查看系统中已安装的所有文档集。
默认情况下,DocsetMCP会在Dash的标准目录中查找文档集:
~/Library/Application Support/Dash/DocSets~/Library/Application Support/Dash/Cheat Sheets你可以通过以下方式自定义这些位置:
# 设置自定义文档集目录
export DOCSET_PATH="/path/to/your/docsets"
# 设置自定义快速参考目录
export CHEATSHEET_PATH="/path/to/your/cheatsheets"
# 使用自定义路径运行
docsetmcp
# 测试自定义文档集路径
docsetmcp --docset-path "/path/to/your/docsets" --list-docsets
# 测试自定义快速参考路径
docsetmcp --cheatsheet-path "/path/to/your/cheatsheets" --test-connection
# 同时使用两个自定义路径
docsetmcp --docset-path "/custom/docsets" --cheatsheet-path "/custom/cheatsheets"
# 使用额外搜索路径(搜索多个位置)
docsetmcp --additional-docset-paths "/extra/docsets" "/more/docsets"
docsetmcp --additional-cheatsheet-paths "/extra/cheatsheets" "/more/cheatsheets"
优先级顺序:
额外搜索路径:
--additional-docset-paths 和 --additional-cheatsheet-paths 选项允许DocsetMCP在主要路径之外的多个位置进行搜索。这在以下情况下非常有用:
DocsetMCP会自动发现并配置在这些额外路径中找到的文档集。
选择下面的MCP客户端以获取特定设置说明:
<details> <summary><b>🤖 Claude Desktop</b></summary>添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"docsetmcp": {
"command": "uvx",
"args": ["docsetmcp"]
}
}
}
对于自定义文档集位置:
{
"mcpServers": {
"docsetmcp": {
"command": "uvx",
"args": ["docsetmcp"],
"env": {
"DOCSET_PATH": "/path/to/your/docsets",
"CHEATSHEET_PATH": "/path/to/your/cheatsheets"
}
}
}
}
</details>
<details>
<summary><b>⌨️ Claude Code CLI</b></summary>
# 对于当前项目
claude mcp add docsetmcp "uvx docsetmcp"
# 对于所有项目
claude mcp add --scope user docsetmcp "uvx docsetmcp"
</details>
<details>
<summary><b>📝 Cursor, VS Code, Windsurf和其他兼容MCP的客户端</b></summary>
添加到你的MCP配置(Cursor:.mcp/mcp.json在你的项目根目录下):
{
"mcpServers": {
"docsetmcp": {
"command": "uvx",
"args": ["docsetmcp"]
}
}
}
注意:重启你的客户端并检查你的MCP设置以确认连接状态。
</details>如果你的MCP客户端支持uvx,则不需要安装!该包将在需要时自动下载并运行。参见快速开始或配置部分。
如果你希望本地安装或者你的MCP客户端不支持uvx:
pip install docsetmcp
然后在配置中使用docsetmcp代替uvx docsetmcp。
克隆并安装:
git clone https://github.com/codybrom/docsetmcp.git
cd docsetmcp
pip install -e .
运行测试(可选):
# 安装测试依赖
pip install pytest pytest-cov pytest-xdist
# 运行基本测试
pytest tests/test_docsets.py::TestDocsets::test_yaml_structure -v
# 运行快速测试(结构 + 存在性检查)
pytest tests/ -k "yaml_structure or test_docset_exists" -v
# 运行完整的测试套件(所有文档集)
pytest tests/ -v
# 运行带有覆盖率的测试
pytest tests/ --cov=docsetmcp --cov-report=html -v
# 验证所有本地快速参考是否工作(集成测试)
python scripts/validate_cheatsheets.py
一旦配置完成,你可以向你的AI助手自然地请求搜索文档:
"搜索URLSession文档"
"展示如何在SwiftUI中使用AppIntent"
"查找CarPlay框架文档" # 返回框架及相关条目,附带钻取注释
"搜索CPListTemplate类" # 返回具体的CarPlay类
"查找NSPredicate示例"
"查找Express.js中间件文档"
"搜索React文档集中的React钩子"
"查找CSS flexbox属性"
"在Git快速参考中搜索rebase命令"
"从快速参考中显示Docker compose语法"
"查找bash数组操作命令"
"搜索pandas DataFrame方法"
"查找NumPy数组广播"
"查找matplotlib pyplot函数"
# 使用语言过滤搜索特定文档集
"使用search_docs在apple_api_reference文档集中搜索'Swift'语言下的'URLSession'"
# 使用钻取注释探索框架成员
"搜索'SwiftData',然后跟随钻取注释查看所有成员"
# 列出所有可用工具
"nodejs文档集中有哪些框架?"
# 浏览快速参考类别
"显示vim快速参考中的所有类别"
DocsetMCP设计用于基于名称的搜索,而不是关键词搜索。遵循以下工作流程:
# 查找可用的语言
"列出所有可用的编程语言"
# 查找你的语言的文档集
"显示所有Python文档集"
# 查看文档集中可用的类型
"列出apple_api_reference文档集中Swift的所有类型"
# 按字母筛选浏览条目类型
"显示apple_api_reference文档集中Swift所有以'UI'开头的类"
# 一旦知道确切名称,就可以搜索它们
"在apple_api_reference中搜索UIViewController,使用Swift"
"在nodejs文档集中查找readFile文档"
"显示CarPlay框架文档"
当你找到容器类型(框架、类)时,遵循钻取指导:
# 容器条目将显示:"包含42个附加成员 - 使用search_docs('ContainerName', max_results=50)"
"在apple_api_reference中搜索SwiftData,最大结果数为50"
DocsetMCP提供了十一款强大的工具来访问你的文档:
search_docs从任何文档集中搜索和提取文档。
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
query | string | 确切名称要搜索(不是关键词) | 必需 |
docset | string | 目标文档集(例如,'nodejs','python_3') | 必需 |
language | string | 编程语言过滤器 | 文档集默认 |
max_results | int | 结果数量(1-10) | 3 |
search_cheatsheet搜索Dash快速参考以获取快速命令参考。
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
cheatsheet | string | 快速参考名称(例如,'git','vim') | 必需 |
query | string | 在快速参考内搜索 | - |
category | string | 按类别过滤 | - |
max_results | int | 结果数量(1-50) | 1 0 |
list_available_docsets列出所有已安装的Dash文档集及其支持的语言。
list_available_cheatsheets列出所有可以搜索的Dash快速参考。
list_frameworks列出特定文档集中的框架/类型。
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
docset | string | 目标文档集 | 必需 |
filter | string | 过滤框架名称 | - |
list_languages发现所有具有可用文档的编程语言。
list_docsets_by_language查找支持特定编程语言的所有文档集。
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
language | string | 编程语言 | 必需 |
list_types列出文档集/语言中的所有可用类型(类、协议、函数等)。
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
docset | string | 目标文档集 | 必需 |
language | string | 编程语言过滤器 | - |
list_entries按类型过滤条目,可选名称前缀。
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
docset | string | 目标文档集 | 必需 |
type_name | string | 要过滤的类型(例如,'Class','Protocol') | 必需 |
language | string | 编程语言过滤器 | - |
name_filter | string | 按名称前缀过滤条目 | - |
max_results | int | 结果数量(1-100) | 20 |
list_cheatsheet_categories列出特定快速参考中的所有类别。
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
cheatsheet | string | 快速参考名称 | 必需 |
fetch_cheatsheet获取整个快速参考内容(建议用于全面访问)。
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
cheatsheet | string | 快速参考名称 | 必需 |
这意味着该文档集未安装在Dash中。解决方法:
pip show docsetmcp以验证安装uvx docsetmcp,你应该看到MCP输出list_available_docsets验证文档集是否已加载