
Cupertino
Local Apple documentation index served to AI agents over MCP — docs, HIG, Swift Evolution, packages, and sample code.
Add to your client
Copy the config for your MCP client and paste it into its config file.
brew tap mihaelamj/tap && brew install cupertino && cupertino setupPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"cupertino": {
"command": "/usr/local/bin/cupertino",
"args": [
"serve"
]
}
}
}Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- macOS 15+ (Sequoia)
- ~4.2 GB free disk for the full v1.3.0 bundle (compressed download ~742 MB)
- Cupertino binary installed (Homebrew, install script, or build from source)
- Run `cupertino setup` to download the pre-built databases before serving
- Building from source additionally requires Swift 6.3+ and Xcode 26+
About Cupertino
Cupertino indexes Apple's documentation universe — Apple Developer Documentation (~351,505 pages across 420+ frameworks), Swift Evolution (~429 proposals), Swift.org (~501 pages), the Swift Book, Human Interface Guidelines, Apple Archive legacy guides (~368 pages), Swift package metadata (185 packages), and Apple sample code (619 projects, 18,000+ Swift files) — into local SQLite FTS5 databases. It serves this corpus to AI agents like Claude, ChatGPT, Codex, Cursor, and Copilot over the Model Context Protocol via cupertino serve. Search uses field-weighted BM25 (BM25F) over a 9-column index with AST-extracted Swift symbols, Porter stemming, reciprocal rank fusion across sources, framework/platform-availability filtering, and sub-100 ms queries. The same engine also backs a human-friendly terminal CLI.
Tools & capabilities (14)
searchUnified full-text search across every indexed source. Parameters: query (required), source, framework, language, include_archive, limit, and min_ios/min_macos/min_tvos/min_watchos/min_visionos/min_swift platform filters (AND-combined).
list_frameworksList the available Apple frameworks in the indexed corpus.
list_documentsList documents within the corpus or a given scope.
list_childrenList the child pages/documents of a given documentation node.
read_documentRead a full document by URI. Pass format=json for agents or format=markdown for humans.
list_samplesList indexed Apple sample-code projects.
read_sampleRead a sample-code project; pass format=json for a typed project payload.
read_sample_fileRead an individual file from a sample-code project; pass format=json for a typed file payload.
search_symbolsAST-powered search over extracted Swift symbols; pass format=json for typed symbol rows.
search_property_wrappersAST-powered search for Swift property wrappers.
search_concurrencyAST-powered search for Swift concurrency constructs (async/await, actors, Task, etc.).
search_conformancesAST-powered search for protocol conformances.
search_genericsAST-powered search for generic declarations.
get_inheritanceRetrieve title-bearing inheritance trees for a type; pass format=json for typed output.
What this server can do
Cupertino provides tools for these capabilities — tap one to see every MCP server that does the same:
When to use it
- Give an AI coding agent accurate, up-to-date Apple API documentation to prevent hallucinated SwiftUI/UIKit/Foundation APIs
- Work with full Apple documentation offline, without internet access
- Look up Swift Evolution proposals, HIG guidance, and framework symbols deterministically from the same query
- Search Apple sample code and read project files to ground implementation suggestions
- Query Swift symbols, property wrappers, concurrency constructs, conformances, generics, and inheritance via AST-aware tools
Security notes
Runs entirely locally; the served databases ship read-only (rollback journal mode) so no query, read, or serve connection can write or delete rows. No API keys or credentials required. Requires macOS 15+ and ~4.2 GB free disk for the full bundle. MCP JSON-RPC wire traffic is written to stderr (stdout carries the protocol). Intended for educational and development use; respect Apple's Terms of Service when using their documentation.
Cupertino FAQ
Does Cupertino need an API key or internet access?
No. It serves a local SQLite corpus over stdio with no API key. After a one-time `cupertino setup` download, search and reads work fully offline.
How do I add it to Claude Code?
Run `claude mcp add cupertino --scope user -- $(which cupertino)`, which registers Cupertino globally for all your projects. For Claude Desktop, Cursor, VS Code, Zed, Windsurf, Codex, and others, copy-paste config is in docs/mcp-clients.md.
What platforms does it run on?
macOS 15+ (Sequoia). The full v1.3.0 bundle needs ~4.2 GB free disk (~742 MB compressed download). A Linux port is on the roadmap.
How big is the corpus?
The v1.3.0 bundle carries 351,505 documents / 240,543 symbols across 420+ frameworks in apple-documentation.db, plus separate databases for the HIG, Apple Archive, Swift Evolution, Swift.org, the Swift Book, Swift packages (185), and Apple sample code (619 projects).
Alternatives to Cupertino
Compare all alternatives →Microsoft's official browser-automation MCP using Playwright's accessibility tree (no vision model).
Up-to-date, version-specific library documentation injected into your coding agent.
LSP-powered coding agent toolkit: semantic symbol search, references and structural edits.
Compare Cupertino with: