docc mcp
一个模型上下文协议(MCP)服务器,它将Apple DocC文档档案暴露给AI代理,从而能够实时访问Swift文档,而不需要训练数据或大量上下文窗口。
特性
- 🔍 搜索文档:在所有DocC档案中查找符号、类型和函数
- 📖 符号详细信息:获取有关特定Swift符号的详细信息
- 📄 文章访问:获取有关教程和文章的详细信息
- 🗂️ 浏览档案:以交互方式浏览DocC存档结构
- ⚡ 实时访问:查询没有过时数据的当前文档
- 🎯 筛选的搜索:按符号类型(类、结构、枚举、协议等)搜索
安装
npm install
npm run build用法
作为MCP服务器
添加到MCP客户端配置中:
{
"mcpServers": {
"docc": {
"command": "node",
"args": [
"/path/to/docc-mcp/dist/index.js",
"--archive-path", "/path/to/your/docc/archives",
"--archive-path", "~/Documents/Xcode/DerivedData"
]
}
}
}配置选项
使用配置存档路径 --archive-path 论点:
单个存档目录:
{
"mcpServers": {
"docc": {
"command": "node",
"args": [
"/path/to/docc-mcp/dist/index.js",
"--archive-path", "/Users/yourname/docc-archives"
]
}
}
}多个存档目录:
{
"mcpServers": {
"docc": {
"command": "node",
"args": [
"/path/to/docc-mcp/dist/index.js",
"--archive-path", "/Users/yourname/Project1/docs",
"--archive-path", "/Users/yourname/Project2/docs",
"--archive-path", "~/Documents/Xcode/DerivedData"
]
}
}
}使用Xcode生成的文档:
{
"mcpServers": {
"docc": {
"command": "node",
"args": [
"/path/to/docc-mcp/dist/index.js",
"--archive-path", "~/Library/Developer/Xcode/DerivedData/YourApp-*/Build/Products/Debug/YourApp.doccarchive"
]
}
}
}备注:至少一个 --archive-path 必须指定。如果没有提供存档路径,服务器将退出并出错。
常见的DocC存档位置
Xcode生成的文档:
~/Library/Developer/Xcode/DerivedData/YourApp-*/Build/Products/Debug*/Documentation/~/Library/Developer/Xcode/DerivedData/YourApp-*/Build/Products/Release*/Documentation/
Swift包管理器:
.build/plugins/Swift-DocC/outputs/YourPackage.doccarchive
手动DocC构建:
docs/(如果您在文档文件夹中组织存档)- 运行的项目根目录
swift package generate-documentation
多个项目:
{
"args": [
"/path/to/docc-mcp/dist/index.js",
"--archive-path", "~/MySwiftPackage1/docs",
"--archive-path", "~/MySwiftPackage2/.build/plugins/Swift-DocC/outputs",
"--archive-path", "~/Library/Developer/Xcode/DerivedData"
]
}可用工具
1. list_archives
列出所有可用的DocC存档及其元数据。
{
"name": "list_archives"
}2. search_docc
在DocC文档中搜索。
{
"name": "search_docc",
"arguments": {
"query": "SwiftSyntax",
"archive": "SwiftSyntax",
"type": "struct"
}
}3. get_symbol
获取特定符号的详细信息。
{
"name": "get_symbol",
"arguments": {
"symbolId": "documentation/swiftsyntax/tokensyntax",
"archive": "SwiftSyntax"
}
}4. get_article
获取有关特定文章或教程的详细信息。
{
"name": "get_article",
"arguments": {
"articleId": "meetcomposablearchitecture",
"archive": "ComposableArchitecture"
}
}5. browse_archive
浏览DocC存档的结构。
{
"name": "browse_archive",
"arguments": {
"archive": "SwiftSyntax",
"path": "documentation/swiftsyntax"
}
}档案结构
服务器期望DocC存档位于由指定的目录中 --archive-path:
测试
运行测试脚本以验证功能:
node test-server.js这将:
- 列出所有可用的档案
- 测试搜索功能
- 浏览存档结构
- 验证符号检索
查询示例
查找所有SwiftUI导航组件:
{
"name": "search_docc",
"arguments": {
"query": "navigation",
"type": "struct"
}
}获取TokenSyntax的详细信息:
{
"name": "get_symbol",
"arguments": {
"symbolId": "documentation/swiftsyntax/tokensyntax",
"archive": "SwiftSyntax"
}
}浏览Swift语法类型:
{
"name": "browse_archive",
"arguments": {
"archive": "SwiftSyntax",
"path": "documentation/swiftsyntax"
}
}演出
- 缓存:档案和符号被缓存,以便快速重复访问
- 搜索限制:性能方面,每个查询的结果限制为50个
- 延迟加载:按需加载档案
- 文件限制:每个存档仅搜索100个文件以获得性能
DocC集成
此服务器使用标准DocC档案。要生成兼容的存档,请执行以下操作:
# Using Swift-DocC
swift package generate-documentation --target MyLibrary
# Using Xcode
# Product → Build Documentation支持的DocC功能
- ✅ 符号元数据(标题、种类、角色、平台)
- ✅ 文档层次结构
- ✅ 符号引用和关系
- ✅ 带有语法高亮显示的代码声明
- ✅ 摘要/摘要文本
- ✅ 平台可用性信息
- ✅ 模块组织
许可证
MIT许可证
