跳到正文
Hacker News· mshapalov·· 6 天前AI 评分48

Apple Docs 2.0 MCP:为编程智能体提供 Apple 开发者文档与 WWDC 内容

Show HN: Apple Docs 2.0 MCP – Apple's developer docs and WWDC for coding agents

AI 导读

Apple Docs 2.0 MCP 发布,这是 kimsungwhee 的 Apple Docs MCP 的分支版本,通过 MCP 让 Claude、Cursor、VS Code 等客户端读取 Apple 官方文档。

正文 · AI 翻译

Apple Docs 2.0 MCP: doc search optimized for agents, a complete index of 336,629 pages, and Sample Code with WWDC included

Apple Docs 2.0 MCP - Apple 开发者文档模型上下文协议服务器

License: MIT npm Fork of Apple Docs MCP

面向 AI 助手的 Apple 开发者文档,通过模型上下文协议提供:API 参考、文章、示例代码、教程、人机界面指南、App Store Connect 帮助、Web 服务 API(App Store Connect API、App Store Server API 等),以及 1,700 场 WWDC 会议及其文字记录和代码,可在 Claude、Cursor、VS Code 或任何 MCP 客户端中使用。

Apple Docs 2.0 MCP 是 Apple Docs MCP 的一个分支,原作者为 kimsungwhee,经过改进,增加了新内容、修复和新工具。

English | 日本語 | 한국어 | 简体中文

🆕 2.0 新特性

Apple Docs 2.0 MCP 保留了 Apple Docs MCP 1.0.26 的所有工具,并修复了失效或返回不完整的内容,让你的助手基于 Apple 自己的文档作答,而不是猜测。

🔍 能返回结果的搜索

search_apple_docs 已修复:现在使用 Apple 网站所用的同一搜索服务,因此你的助手能获得你在 developer.apple.com 上看到的结果:API 参考、文章、示例代码、设计指南、App Store Connect 帮助和 WWDC 视频。在原始版本中,由于 Apple 更改了搜索页面,搜索会返回空结果。

询问某个 API、设计指南或 App Store 流程时,助手会先搜索,然后阅读找到的页面。

🗺️ 按名称查找任意页面

一个新工具 search_docs_map,可离线按名称或名称的一部分查找 336,629 个页面中的任意一个:

  • API 符号:类型、方法、属性、枚举成员、宏
  • 文章、教程和示例代码
  • Info.plist 和 entitlement 键
  • Web 服务端点,例如 App Store Connect API 的端点
  • 人机界面指南和 App Store Connect 帮助页面

当你已经从代码或错误信息中知道某个名称时,可以用它直接打开对应页面。

📄 完整的文档页面

页面完整呈现,与 Apple 网站上一致:每个方法和属性都有完整签名(var view: UIView!,而不仅仅是 view)、类型继承自什么和遵循什么、相关 API,以及支持它的操作系统版本。2.0 还会读取人机界面指南、教程、App Store Connect 帮助,以及 App Store Connect API 端点及其参数和响应。

询问任何 API、指南或 App Store Connect 主题时,助手会先阅读完整页面,然后再作答或编写代码。

🎥 WWDC 2014–2026,附带代码

内置 1,700 场会议,包括 WWDC26,且可离线使用:其中 1,416 场有文字记录,715 场有代码示例,每个示例都标注了它在视频中出现的时间。会议按照与 Apple 网站相同的主题分类。

询问某个新 API 如何工作时,助手可以引用介绍它的 WWDC 会议及其代码。

📋 完整的框架列表

原始版本的技术列表在 200 条之后停止,因此整个类别(图形与游戏、媒体、系统、Web)从未出现,其符号搜索还混入了带有失效链接的标题。2.0 列出所有内容,标记处于 beta 的框架,并可按主题查找框架:“机器学习”会返回 Core ML、Create ML、Foundation Models、Vision 等。

询问哪些框架适合某项任务,例如机器学习或音频,助手会对照完整列表进行比较。

🛠️ 为持续可用而构建

依赖项保持最新,请求看起来像普通浏览器并会排队等待(请求过快时 Apple 会返回空搜索),请求失败时自动重试,并有 255 个自动化测试。原始版本 README 中的全部 63 个用法示例均可无错误运行。

无需设置:不需要 API 密钥或账户。

✨ 功能

  • 🔍 搜索:一次搜索即可查找 Apple 的文档、设计指南、示例代码、App Store Connect 帮助和 WWDC 会议,或仅搜索其中一项
  • 🗺️ 文档地图:无需网络请求,即可按标题查找任意页面,甚至是方法或属性名称
  • 📚 文档页面:以 Markdown 形式呈现 Swift 和 Objective-C API、文章、教程和 Web 服务参考
  • 🎨 人机界面指南:每个 HIG 页面均可搜索和阅读
  • 🏪 App Store Connect 帮助:产品页面字段、审核、TestFlight、定价
  • 🔧 框架符号:通过通配符浏览框架的类、结构体、协议和成员
  • 🔗 API 关系:相关、相似和引用的 API,以及已弃用 API 的替代项
  • 📊 平台兼容性:API 在每个平台上引入和弃用的版本
  • 📋 技术目录:按类别列出每个 Apple 框架和技术,并标记测试版
  • 📰 文档更新:发行说明、框架更新和 WWDC“新功能”页面
  • 🎯 技术概览:Apple 关于应用设计、游戏、AI 和机器学习、数据等的指南
  • 💻 示例代码:Apple 的示例项目及其摘要和下载链接
  • 🎥 WWDC 资料库:2014 至 2026 年的 1,700 场会议,包含文字记录、带时间戳的代码示例、资源和相关会议,可离线使用

🚀 快速开始

Claude Desktop(推荐)

将此添加到你的 Claude Desktop 配置中:

macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "apple-docs": {
      "command": "npx",
      "args": ["-y", "apple-docs-2.0-mcp"]
    }
  }
}

注意:如果你遇到使用了旧版本的问题,请添加 @latest 以强制使用最新版本:

"args": ["-y", "apple-docs-2.0-mcp@latest"]

重启 Claude Desktop,然后开始询问 Apple API 相关问题!

Claude Code

claude mcp add apple-docs -- npx -y apple-docs-2.0-mcp

📦 安装

📱 Claude Code

claude mcp add apple-docs -- npx -y apple-docs-2.0-mcp

📖 Claude Code MCP 文档

🖱️ Cursor

添加到 ~/.cursor/mcp.json:

{
  "mcpServers": {
    "apple-docs": {
      "command": "npx",
      "args": ["-y", "apple-docs-2.0-mcp"]
    }
  }
}

📖 Cursor MCP 文档

🔷 VS Code

添加到工作区根目录下的 .mcp.json,即 VS Code 的可移植格式:

{
  "mcpServers": {
    "apple-docs": {
      "command": "npx",
      "args": ["-y", "apple-docs-2.0-mcp"]
    }
  }
}

📖 VS Code MCP 文档

⚡ Zed

添加到你的 Zed settings.json:

{
  "context_servers": {
    "apple-docs": {
      "command": "npx",
      "args": ["-y", "apple-docs-2.0-mcp"],
      "env": {}
    }
  }
}

📖 Zed MCP 文档

💬 使用示例

🔍 搜索

"Search for SwiftUI animations"
"Find withAnimation API documentation"
"Search the Human Interface Guidelines for tab bars"
"Search App Store Connect Help for TestFlight external testers"
"Find sample code for Core Data"

🗺️ 文档地图

"Find the page for accessibilityInputLabels"
"Which SwiftUI pages have gauge in their title?"
"Find the App Store Connect API endpoint to create an auto-renewable subscription"

📚 文档访问

"Get detailed information about the SwiftUI framework"
"Show me withAnimation API with related APIs"
"Show me NSManagedObjectContext documentation"
"Read the Human Interface Guidelines page on tab bars"
"Show the steps of the SwiftUI tutorial"

🔧 框架探索

"Show me SwiftUI views"
"List all UIKit delegate protocols"
"Get WeatherKit API hierarchy"
"Explore Core ML model loading APIs"

🔗 API 发现

"Find APIs related to UIViewController"
"Discover alternatives to UIAlertView"
"Get all references from SwiftData documentation"
"Get platform compatibility for SwiftData"

📋 技术、更新和概览

"What machine learning frameworks are available?"
"Which technologies are in beta?"
"What's new in SwiftUI?"
"Show me release notes for Xcode"
"Get data management technology overviews"

💻 示例代码

"Show SwiftUI sample code projects"
"Find sample code for machine learning"
"Get the Food Truck sample"

🎥 WWDC

"Search WWDC videos about SwiftUI"
"Find WWDC sessions on machine learning"
"Show me WWDC 2026 videos"
"Search WWDC transcripts for async/await"
"Show me the transcript for WWDC23 Meet SwiftData"
"Get code examples from WWDC sessions that use SwiftData"
"Find sessions related to WWDC23 Meet SwiftData"
"List all WWDC topics"

🛠️ 可用工具

工具 返回
search_apple_docs Apple 的搜索结果以链接形式呈现,每个链接包含标题、框架、类型和一行摘要,并分组为文档、设计、示例代码、App Store Connect 帮助和 WWDC 会议
search_docs_map 🆕 标题中包含该文本的页面(不区分大小写),最短标题优先,可选限定在给定技术内,每个页面包含其类型、技术和链接
get_apple_doc_content 一个文档页面以 Markdown 形式呈现,由其 JSON 渲染而来:摘要、声明、概述、代码、Topics(每个成员的声明和摘要)、Relationships、See Also 和可用性;一个 Web 服务端点及其 URL、参数、请求体和响应;一个教程及其每个步骤的代码和项目文件;一个示例的下载链接;一篇 App Store Connect 帮助文章
search_framework_symbols 一个框架中名称匹配通配符的符号,每个符号包含其类型和链接
get_related_apis 一个 API 继承自什么、遵循什么,以及它的 See Also 和每个 Topics 组的前几个 API,每个都带有摘要
find_similar_apis 一个 API 的替代项,对于已弃用的 API,优先列出其弃用说明中提到的替代项,然后是它的 See Also 和 Topics
resolve_references_batch 一个文档页面所链接的页面,每个页面包含其标题、类型、摘要,如果是符号则还包含其声明
get_platform_compatibility 某个 API 在各平台上被引入和弃用的操作系统版本,以及 Apple 的弃用说明
list_technologies 所有 Apple 框架和技术及其链接,按类别分组,测试版已标注
get_documentation_updates 指向 Apple 发布说明、框架更新页面和 WWDC“What's new”页面的链接,每个都附有摘要
get_technology_overviews 指向 Apple 技术概览指南的链接,按合集分组,每个合集附有摘要
get_sample_code Apple 的示例代码项目,每个都附有链接和一行摘要,按框架分组
list_wwdc_videos 某一年、某个主题或标题词的 WWDC 会议,每个都附有链接、主题,以及是否有文字记录和代码
search_wwdc_content 文字记录或代码中包含这些词的 WWDC 会议,每个最多附三段匹配段落
get_wwdc_video 一个 WWDC 会议及其链接和下载内容、完整文字记录、带时间戳的代码示例和相关会议
get_wwdc_code_examples 代码中提及某个类型或框架的 WWDC 代码示例,每个都附有其所属会议和出现时间
browse_wwdc_topics WWDC 主题及其会议数量,或某个主题下的会议
find_related_wwdc_videos 与某个 WWDC 会议相关的会议,Apple 自己的精选排在最前,然后是共享其主题的会议
list_wwdc_years WWDC 各年份及其会议数量

文档工具会访问 developer.apple.com;WWDC 工具读取内置数据,search_docs_map 读取文档映射,两者都不需要网络请求。

🏗️ 架构

Apple-Docs-2.0-MCP/
├── src/
│   ├── index.ts                    # MCP server and its search guide
│   ├── tools/
│   │   ├── handlers.ts             # Tool registration
│   │   ├── search-api.ts           # Apple's search API
│   │   ├── search-docs-map.ts      # Docs map search
│   │   ├── doc-fetcher.ts          # Pages from Swift-DocC JSON
│   │   ├── doc-formatter.ts        # Markdown rendering
│   │   ├── help-pages.ts           # App Store Connect Help (jsdom, turndown)
│   │   ├── list-technologies.ts    # Technology catalog
│   │   ├── search-framework-symbols.ts
│   │   ├── get-related-apis.ts, find-similar-apis.ts, resolve-references-batch.ts, get-platform-compatibility.ts
│   │   ├── get-documentation-updates.ts, get-technology-overviews.ts, get-sample-code.ts
│   │   └── wwdc/                   # WWDC tools and the session, topic and year extractors
│   ├── types/                      # Generated from Swift-DocC's specs and captured responses
│   └── utils/                      # HTTP client, caches, constants, URL conversion
├── scripts/
│   ├── add-wwdc-year.ts            # Adds or refreshes a WWDC year in data/wwdc
│   ├── build-docs-map.ts           # Builds api-map/apple-docs-map.tsv
│   └── capture-responses.ts        # Captures responses to type them
├── data/wwdc/                      # The bundled WWDC sessions
├── api-map/                        # The docs map, Apple's search API (OpenAPI) and captured responses
└── tests/                          # Vitest

🌐 请求与缓存

每个请求都经过同一个 HTTP 客户端:fetch 使用 Safari 的请求头,每分钟最多 100 个请求,搜索一次一个、间隔 15 秒,因为 Apple 对更快的请求会返回无结果。每次尝试有 2 分钟超时,最多重试 3 次,并在网络错误、超时和 5xx 响应时退避。

内容 缓存时长
文档页面 30 分钟
框架索引 1 小时
技术、示例代码、技术概览 2 小时
文档更新 30 分钟
搜索 不缓存

📦 WWDC 数据

WWDC 会议内置在 data/wwdc/ 中,因此 WWDC 工具可离线使用且不受速率限制:

  • 📹 2014 至 2026 年的 1,700 个会议,其中 1,416 个有文字记录,715 个有代码示例
  • 🏷️ 19 个主题,取自 Apple 的主题页面
  • 💾 41 MB 的 JSON

npx tsx scripts/add-wwdc-year.ts <year> 从 Apple 的页面添加或刷新某一年;Apple 不再列出的会议会保留其存储的数据。

🗺️ 文档映射

api-map/apple-docs-map.tsv 列出了来自 Apple 导航索引、Human Interface Guidelines 和 App Store Connect Help 导航的 336,629 个页面(URL、标题、类型、技术、分组和树)。search_docs_map 在每次调用时读取它。npx tsx scripts/build-docs-map.ts api-map/apple-docs-map.tsv 在大约 10 分钟内重建它。

🧪 开发

git clone https://github.com/mishafyi/Apple-Docs-2.0-MCP.git
cd Apple-Docs-2.0-MCP
npx pnpm@10 install
npx pnpm@10 run build          # tsc into dist/, then the WWDC data into dist/data/

# Run your build in Claude Code in place of the npm package
claude mcp add apple-docs -- node "$PWD/dist/index.js"

# Checks: types (server and scripts), lint and tests
npx tsc --noEmit && npx tsc -p scripts && npx eslint src scripts && npx vitest run

# Call the built server without an MCP client
npx -y @modelcontextprotocol/inspector --cli node dist/index.js --method tools/call \
  --tool-name search_apple_docs --tool-args-json '{"query":"tab bars","type":"design"}'

# Regenerate the types of Apple's JSON
npm run types:docc             # from Swift-DocC's RenderNode and RenderIndex specs
npm run types:captured         # from captured responses (quicktype)

构建、重启或重新连接后,在你的 MCP 客户端中重启服务器。

🙏 致谢

Apple Docs 2.0 MCP 基于 Apple Docs MCP 构建,作者是 kimsungwhee,其工具、WWDC 数据和结构均源自该项目。

🤝 贡献

欢迎贡献:

  1. Fork 仓库
  2. 创建功能分支:git checkout -b feature/amazing-feature
  3. 提交你的更改:git commit -m 'Add amazing feature'
  4. 推送到分支:git push origin feature/amazing-feature
  5. 发起 Pull Request

📄 许可证

MIT 许可证,与原项目相同:见 LICENSE。

⚠️ 免责声明

本项目与 Apple Inc. 无关联,也未获其认可。它读取 Apple 公开的开发者文档,用于教育和开发目的。

来源:Hacker News · github.com