/ Directory / Playground / cupertino
● Community mihaelamj ⚡ Instant

cupertino

by mihaelamj · mihaelamj/cupertino

Local Apple documentation at your agent's fingertips — 302k+ pages, HIG, sample code, all in SQLite FTS5 with sub-100ms search.

cupertino (mihaelamj) crawls Apple developer documentation and serves it to MCP clients from a local SQLite FTS5 index. Stops Claude from making up UIKit/SwiftUI APIs. ~2.4GB for the full corpus; covers 307 frameworks, HIG, sample projects, Swift Evolution.

Why use it

Key features

Live Demo

What it looks like in practice

cupertino.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "cupertino": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/mihaelamj/cupertino"
      ],
      "_inferred": true
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "cupertino": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/mihaelamj/cupertino"
      ],
      "_inferred": true
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "cupertino": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/mihaelamj/cupertino"
      ],
      "_inferred": true
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "cupertino": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/mihaelamj/cupertino"
      ],
      "_inferred": true
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "cupertino",
      "command": "TODO",
      "args": [
        "See README: https://github.com/mihaelamj/cupertino"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "cupertino": {
      "command": {
        "path": "TODO",
        "args": [
          "See README: https://github.com/mihaelamj/cupertino"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add cupertino -- TODO 'See README: https://github.com/mihaelamj/cupertino'

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use cupertino

Stop API hallucinations with cupertino for Apple docs

👤 iOS / macOS / visionOS developers ⏱ ~10 min beginner

When to use: Claude keeps inventing API signatures; you want it grounded in real docs.

Prerequisites
  • cupertino installed — Download Swift 6.2+ binary; run cupertino setup to pull the index
Flow
  1. Setup index
    Run cupertino setup then cupertino serve. Confirm MCP server is listening.✓ Copied
    → Server online
  2. Force agent to cite
    Before writing any SwiftUI code, search cupertino docs for the exact API. Quote the signature.✓ Copied
    → Verified API with URI
  3. Use it
    Now write the code using only the APIs you quoted.✓ Copied
    → Compiles first try

Outcome: Dramatically fewer API hallucinations.

Review a design against Apple's Human Interface Guidelines

👤 iOS designers, PMs ⏱ ~20 min intermediate

When to use: Before shipping, you want to check a flow against HIG.

Flow
  1. Describe the screen
    I'm building a settings screen with a destructive 'Delete account' button. Use search_hig for iOS to find relevant guidance.✓ Copied
    → HIG passages about destructive actions
  2. Apply
    Given those guidelines, critique my mockup [paste]. What violates HIG?✓ Copied
    → Specific violations + fixes

Outcome: HIG-compliant UI without reading the whole doc yourself.

Combine with: claude-talk-to-figma

Learn from Apple's sample projects via cupertino

👤 Developers learning new frameworks ⏱ ~15 min beginner

When to use: You need to know 'how does Apple actually use this API'.

Flow
  1. Find relevant samples
    search_samples for 'SwiftData relationships'. List matching projects.✓ Copied
    → Project names + descriptions
  2. Read the source
    In project X, read ContentView.swift and explain the relationship setup.✓ Copied
    → Annotated walkthrough

Outcome: Real, Apple-endorsed patterns instead of forum guesses.

Combinations

Pair with other MCPs for X10 leverage

Design in Figma, validate against HIG via cupertino

For the selected Figma screen, search HIG for relevant rules and flag inconsistencies.✓ Copied
cupertino + filesystem

Compare your SwiftUI code against Apple's sample for the same pattern

Read my ./Sources/ContentView.swift and diff against Apple's SwiftData sample structure.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
search_docs query, framework? Reference API lookup 0
search_hig query, platform? Design guidance 0
list_frameworks Discover what's indexed 0
read_document uri Expand a search hit 0
search_samples query Sample code discovery 0
list_samples Browse 0
read_sample_file sample, path Read a specific file 0

Cost & Limits

What this costs to run

API quota
None — local FTS5
Tokens per call
Doc pages: 500-5000 each
Monetary
Free
Tip
Use search_docs + read_document on only the top hit rather than dumping multiple pages

Security

Permissions, secrets, blast radius

Credential storage: None
Data egress: None at runtime; cupertino setup fetches from developer.apple.com once

Troubleshooting

Common errors and fixes

Search returns nothing after install

cupertino setup didn't complete — re-run and watch for network errors

Verify: Database file size should be ~2.4GB
Stale docs after an OS release

Re-run cupertino setup to refresh the crawl

Index DB too large for machine

Use framework-scoped setup to index only what you need (e.g. only SwiftUI)

Alternatives

cupertino vs others

AlternativeWhen to use it insteadTradeoff
DuckDuckGo / web search MCPYou don't mind hallucination risk and need latestNot authoritative; can return third-party blogs
Apple Developer website directlyHuman-driven readingNo agent automation

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills