返回市场
文档集MCP

文档集MCP

作者:codybrom6 星标更新:2025-06-23

项目介绍

DocsetMCP

PyPI License: MIT Python

从AI助手直接访问本地Dash文档 🚀

DocsetMCP是一个模型上下文协议(MCP)服务器,它无缝地将你的本地Dash文档集与像Claude这样的AI助手集成在一起,无需离开对话即可即时访问离线文档。

📋 目录

为什么选择DocsetMCP?

  • 📚 即时文档:无需切换,无需网络搜索。直接在AI对话中获取文档
  • 🔒 本地和私有:在你的机器上使用docset文件
  • 闪电般快速:优化缓存和直接数据库查询
  • 🎯 精准结果:通过智能过滤获取你需要的内容

快速开始

{
  "mcpServers": {
    "docsetmcp": {
      "command": "uvx",
      "args": ["docsetmcp"]
    }
  }
}

添加到你的MCP配置并重启MCP客户端。然后尝试询问类似“找到AppIntent文档”的问题。

✨ 功能

文档搜索

  • 多文档集支持:搜索超过165个支持的文档集,包括Apple、NodeJS、Python等
  • 语言过滤:在文档集中针对特定编程语言进行目标搜索
  • 基于名称的搜索:仅返回搜索词匹配项目名称的结果以获得精确结果
  • 智能排名:根据匹配类型(精确 > 前缀 > 子串)和动态类型排序对结果进行排名
  • 容器指导:框架和类条目显示钻取注释以探索成员

快速参考

  • 快速参考:即时访问Git、Vim、Docker等40多个其他快速参考
  • 模糊匹配:即使部分名称也能找到快速参考
  • 按类别浏览:在每个快速参考中按类别浏览命令
  • 内部搜索:查询任何快速参考中的特定命令

性能与集成

  • 高效缓存:内存缓存重复查询
  • 直接数据库访问:没有中间服务器或API
  • 通用性:适用于Claude Desktop、Cursor、VS Code以及任何兼容MCP的客户端
  • 框架发现:列出任何文档集中的所有可用框架/类型
  • 容器指导:自动提供框架和类的成员钻取注释

📦 支持的文档集

DocsetMCP支持超过165个文档集,包括:

<details> <summary><b>流行语言</b></summary>
  • Python (2 & 3)
  • JavaScript / TypeScript
  • Java
  • C / C++
  • Go
  • Rust
  • Ruby
  • Swift / Objective-C
  • PHP
  • Bash
  • 以及其他更多...
</details> <details> <summary><b>Web框架</b></summary>
  • React / Angular / Vue
  • Node.js / Express
  • Django / Flask
  • Ruby on Rails
  • Bootstrap
  • jQuery
  • 以及其他更多...
</details> <details> <summary><b>开发工具</b></summary>
  • Git (快速参考)
  • Docker (快速参考)
  • Vim (快速参考)
  • MySQL / PostgreSQL
  • MongoDB / Redis
  • nginx / Apache
  • 以及其他更多...
</details>

使用list_available_docsets查看系统中已安装的所有文档集。

前提条件

  • macOS(Dash是Mac专用)
  • Dash,下载所需的文档集
  • Python 3.10或更高版本
  • UV包管理器(如何安装
  • 支持MCP的AI助手(如Claude Desktop、Claude Code CLI、Cursor IDE等)

配置

自定义文档集位置

默认情况下,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"

优先级顺序:

  1. 命令行参数(最高优先级)
  2. 环境变量
  3. 默认Dash位置(最低优先级)

额外搜索路径:

--additional-docset-paths--additional-cheatsheet-paths 选项允许DocsetMCP在主要路径之外的多个位置进行搜索。这在以下情况下非常有用:

  • 你在多个目录中有文档集
  • 你想包含第三方或自定义文档集
  • 你正在跨不同工具共享文档集

DocsetMCP会自动发现并配置在这些额外路径中找到的文档集。

MCP客户端设置

选择下面的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

开发安装

  1. 克隆并安装

    git clone https://github.com/codybrom/docsetmcp.git
    cd docsetmcp
    pip install -e .
    
  2. 运行测试(可选):

    # 安装测试依赖
    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助手自然地请求搜索文档:

🍎 iOS/macOS开发

"搜索URLSession文档"
"展示如何在SwiftUI中使用AppIntent"
"查找CarPlay框架文档"  # 返回框架及相关条目,附带钻取注释
"搜索CPListTemplate类"       # 返回具体的CarPlay类
"查找NSPredicate示例"

🌐 Web开发

"查找Express.js中间件文档"
"搜索React文档集中的React钩子"
"查找CSS flexbox属性"

🛠️ DevOps & 终端

"在Git快速参考中搜索rebase命令"
"从快速参考中显示Docker compose语法"
"查找bash数组操作命令"

📊 数据科学

"搜索pandas DataFrame方法"
"查找NumPy数组广播"
"查找matplotlib pyplot函数"

高级用法

# 使用语言过滤搜索特定文档集
"使用search_docs在apple_api_reference文档集中搜索'Swift'语言下的'URLSession'"

# 使用钻取注释探索框架成员
"搜索'SwiftData',然后跟随钻取注释查看所有成员"

# 列出所有可用工具
"nodejs文档集中有哪些框架?"

# 浏览快速参考类别
"显示vim快速参考中的所有类别"

发现工作流程

DocsetMCP设计用于基于名称的搜索,而不是关键词搜索。遵循以下工作流程:

1. 从发现工具开始

# 查找可用的语言
"列出所有可用的编程语言"

# 查找你的语言的文档集
"显示所有Python文档集"

# 查看文档集中可用的类型
"列出apple_api_reference文档集中Swift的所有类型"

# 按字母筛选浏览条目类型
"显示apple_api_reference文档集中Swift所有以'UI'开头的类"

2. 然后按确切名称搜索

# 一旦知道确切名称,就可以搜索它们
"在apple_api_reference中搜索UIViewController,使用Swift"
"在nodejs文档集中查找readFile文档"
"显示CarPlay框架文档"

3. 使用钻取注释

当你找到容器类型(框架、类)时,遵循钻取指导:

# 容器条目将显示:"包含42个附加成员 - 使用search_docs('ContainerName', max_results=50)"
"在apple_api_reference中搜索SwiftData,最大结果数为50"

工作原理

  1. 多格式支持:处理Apple的现代缓存格式(SHA-1 UUID为基础,带有brotli压缩)和传统的tarix压缩格式
  2. 直接数据库访问:查询Dash的SQLite数据库以实现快速查找
  3. 基于名称的匹配:仅返回搜索词匹配项目名称的结果(无误报)
  4. 智能排名:优先考虑精确匹配,然后是前缀匹配,最后是子串匹配
  5. 动态类型排序:使用文档集配置文件进行智能结果优先级排序
  6. 容器检测:自动检测具有成员的框架/类,并提供探索指导
  7. 智能提取:解压Apple的DocC JSON或从tarix存档中提取HTML
  8. Markdown格式化:将文档转换为可读的Markdown

可用工具

DocsetMCP提供了十一款强大的工具来访问你的文档:

🔍 search_docs

从任何文档集中搜索和提取文档。

参数类型描述默认值
querystring确切名称要搜索(不是关键词)必需
docsetstring目标文档集(例如,'nodejs','python_3')必需
languagestring编程语言过滤器文档集默认
max_resultsint结果数量(1-10)3

📋 search_cheatsheet

搜索Dash快速参考以获取快速命令参考。

参数类型描述默认值
cheatsheetstring快速参考名称(例如,'git','vim')必需
querystring在快速参考内搜索-
categorystring按类别过滤-
max_resultsint结果数量(1-50)1 0

📚 list_available_docsets

列出所有已安装的Dash文档集及其支持的语言。

📝 list_available_cheatsheets

列出所有可以搜索的Dash快速参考。

🏗️ list_frameworks

列出特定文档集中的框架/类型。

参数类型描述默认值
docsetstring目标文档集必需
filterstring过滤框架名称-

🌍 list_languages

发现所有具有可用文档的编程语言。

📖 list_docsets_by_language

查找支持特定编程语言的所有文档集。

参数类型描述默认值
languagestring编程语言必需

🏷️ list_types

列出文档集/语言中的所有可用类型(类、协议、函数等)。

参数类型描述默认值
docsetstring目标文档集必需
languagestring编程语言过滤器-

📋 list_entries

按类型过滤条目,可选名称前缀。

参数类型描述默认值
docsetstring目标文档集必需
type_namestring要过滤的类型(例如,'Class','Protocol')必需
languagestring编程语言过滤器-
name_filterstring按名称前缀过滤条目-
max_resultsint结果数量(1-100)20

📂 list_cheatsheet_categories

列出特定快速参考中的所有类别。

参数类型描述默认值
cheatsheetstring快速参考名称必需

📄 fetch_cheatsheet

获取整个快速参考内容(建议用于全面访问)。

参数类型描述默认值
cheatsheetstring快速参考名称必需

故障排除

<details> <summary><b>❌ “文档集未找到”错误</b></summary>

这意味着该文档集未安装在Dash中。解决方法:

  1. 打开Dash.app
  2. 转到偏好设置 → 下载
  3. 下载所需的文档集
  4. 重启你的MCP客户端
</details> <details> <summary><b>🔌 MCP连接失败</b></summary>
  1. 检查安装:运行pip show docsetmcp以验证安装
  2. 手动测试:在终端中运行uvx docsetmcp,你应该看到MCP输出
  3. 检查日志
    • Claude Desktop:在Console.app中检查Claude日志
    • Cursor:检查输出 → MCP面板
  4. 验证配置路径:确保配置文件位于正确的位置
</details> <details> <summary><b>📭 未找到结果</b></summary>
  • 内容可能不在你的本地Dash缓存中
  • 尝试使用不同的术语或部分匹配进行搜索
  • 使用list_available_docsets验证文档集是否已加载
  • 某些文档集可能使用不同的命名约定(例如,'fs' vs 'filesystem')
</details> <details> <summary><b>🐛 其他问题</b></summary>
  1. Python版本:确保你有Python 3.10或更高版本
  2. UV未找到:从<https://docs.a