hig-mcp — Apple HIG design tokens for AI coding agents
An MCP server that gives Claude Code, Cursor, and any MCP client the Apple Human Interface Guidelines as structured data — real system color values, the type ramp, Liquid Glass constraints, and SwiftUI mappings — instead of prose to misread or stale hex to hallucinate.
The problem every Apple dev (and their agent) has right now
At WWDC25 Apple didn't just ship Liquid Glass — it quietly refreshed the system color palette (HIG changelog, June 9, 2025). systemBlue is not #007AFF anymore. It's #0088FF.
Which means:
- Every LLM's training data is wrong. Ask an agent for iOS colors and it confidently hardcodes the pre-2025 palette.
- The HIG is prose, not data. Apple publishes guidelines as web pages; an agent burns thousands of tokens fetching one, then still guesses the numbers.
- Liquid Glass has rules nobody wrote down in one place — blur budgets, compositing layer caps, contrast measured after blur, the mandatory Reduce Transparency fallback. Agents violate all of them by default.
You end up reviewing generated SwiftUI that looks plausible and is subtly off-spec everywhere.
How hig-mcp solves it
Curated, verified token files live inside the server — offline, deterministic, near-zero tokens — and prose is fetched live from sosumi.ai so guidance is never stale. Ask for color and you get the current post-WWDC25 spec table, not a 2023 memory.
| Tool | What it returns | Network |
|---|---|---|
hig_get_tokens |
Design tokens by category: color, typography, materials, layout, swiftui, sf_symbols | no |
hig_check_liquid_glass |
Liquid Glass guardrails + a concrete checklist for your context and platform | no |
hig_swiftui |
HIG component → the right SwiftUI API + which tokens to apply | no |
hig_fetch |
Current HIG page as clean Markdown (via sosumi.ai) | yes |
How it works
Four tools over stdio (Python, the official mcp SDK 2.x). The structured half is plain JSON you own and extend (src/hig_mcp/data/); the prose half is delegated to sosumi.ai's DocC-to-Markdown rendering rather than rebuilt. Every value is provenance-tagged:
apple-system/apple-hig— Apple-published facts (system colors, type ramp, 44pt hit targets).wcag-aa— the 4.5:1 contrast rule.figma-effect/community-bestpractice— useful numbers Apple never published, flagged so you know to confirm.verify: true— beta-era API names that shift; confirm viahig_fetchor Xcode before shipping.
Each data file also carries a checked date in its _meta: the day its values were last compared with Apple's live pages.
Honest data beats confident data.
Quick start
pipx install hig-mcp
claude mcp add hig -- hig-mcp
Any MCP client, config form:
{ "mcpServers": { "hig": { "command": "hig-mcp" } } }
hig_fetch targets https://sosumi.ai by default; override with HIG_SOSUMI_BASE.
Built-in call counter
Every tool call appends one JSONL line — timestamp, tool, calling client (from the MCP handshake's clientInfo) — to $XDG_STATE_HOME/hig-mcp/calls.jsonl (override with HIG_MCP_CALL_LOG). So you always know which of your agents actually uses it:
jq -r .client ~/.local/state/hig-mcp/calls.jsonl | sort | uniq -c
FAQ
Why not just fetch developer.apple.com? Prose costs tokens and still doesn't contain machine-usable values. Tokens here are instant, offline, and current.
Does it replace sosumi.ai / apple-docs-mcp? No — it deliberately delegates prose to them and owns only the structured layer they don't serve.
What platforms? iOS / iPadOS first, with the macOS type ramp and per-platform control sizes (iOS, macOS, tvOS, visionOS, watchOS). Values were last checked on 2026-10-17 against the live HIG and Apple's SwiftUI docs for OS 26 (shipping) and the OS 27 betas.
Limits
Plain words on what this server is and is not:
- Curated project data, not an Apple SDK. The values are copied by hand from Apple's public HIG pages and docs, then checked. Apple does not publish them as data, and this project is not Apple's. If a value matters, confirm it in Xcode or the Apple Design Resources.
- Beta-era names are checked as of 2026-10-17. Liquid Glass and other OS 26 APIs were checked against Apple's docs on that date; anything marked 27.0+ comes from the OS 27 betas and can still be renamed before release. Those entries carry
verify: true. - Some numbers are not Apple's. The Liquid Glass blur and layer budgets, the spacing grid and the corner radii are community or Figma conventions. Each one says so in its
srctag. - Prose needs the network.
hig_fetchdownloads pages live from sosumi.ai (or yourHIG_SOSUMI_BASE). Offline, or if sosumi.ai is down, the three token tools still work andhig_fetchreturns an error. - It does not review your app. It hands an agent the rules and the values; it does not look at your code or screenshots.
A good pairing: a full Apple docs server for API reference (for example apple-docs-mcp or sosumi.ai's own MCP), plus a HIG review tool that checks SwiftUI code and screenshots against the guidelines (for example hig-review).
Development
uv run --with pytest pytest -q
Changes per release are in CHANGELOG.md.
Legal
Apple, the Apple Human Interface Guidelines, SF Symbols, SwiftUI, and Liquid Glass are trademarks of Apple Inc. This project is not affiliated with or endorsed by Apple. No HIG prose is redistributed — hig_fetch retrieves pages live at runtime, and the bundled data files contain factual design values with original commentary. The MIT license covers this repository's code and data files only.
Keywords: Apple HIG MCP server · Human Interface Guidelines · design tokens · Liquid Glass · SwiftUI · iOS 26 · macOS Tahoe · Model Context Protocol · Claude Code · Cursor · AI coding agents
Metadata
Release files for hig-mcp 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| hig_mcp-0.3.0.tar.gz | 715.6 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| hig_mcp-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 736.7 kB
Release files / hig_mcp-0.3.0.tar.gz
| Download URL | hig_mcp-0.3.0.tar.gz |
|---|---|
| Size | 715.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b0cc7fc4e3f43fa4459fcf80268eb14786f18d2d89b99c09e02c53d546846a3a
|
|
BLAKE2b-256 checksum How to use checksums |
bb698b9de171496d5ae2b4c1885c7ffcecaf7c7287a1700773807c3324e5087a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / hig_mcp-0.3.0-py3-none-any.whl
| Download URL | hig_mcp-0.3.0-py3-none-any.whl |
|---|---|
| Size | 21.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
264847720378c008148adeaa8b496efb73f0bfbb8e5cc9494140db8de3c35217
|
|
BLAKE2b-256 checksum How to use checksums |
3132c7c8935f45e046f683b67b2f45115397cde28590589b16782d30afa7dc4f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.3 {"installer":{"name":"uv","version":"0.11.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for hig-mcp 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.