Apple HIG MCP Server
Provides LLMs with direct access to Apple's Human Interface Guidelines by fetching live Markdown documents from developer.apple.com. Enables searching 160+ HIG topics, retrieving full guideline documentation, listing categories and topics, generating redesign/polish checklists, and surfacing official design resources such as SF Symbols and Figma kits.
Delivers iOS-specific HIG guidance, including topics on components, patterns, inputs, and design heuristics such as 44pt touch targets, continuous curvature (squircle), button hierarchies, and spring physics, plus an iOS redesign checklist.
Delivers macOS-specific HIG guidance covering foundations, components, patterns, and inputs, along with a macOS redesign and polish checklist.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Apple HIG MCP Serversearch the HIG for Liquid Glass materials and button hierarchy"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Apple HIG MCP Server
Model Context Protocol (MCP) server providing LLMs direct access to Apple's Human Interface Guidelines (HIG) via live developer.apple.com Markdown endpoints.
Features
Live Endpoints: Fetches
.mddocuments directly from Apple Developer CDN on demand.Local Cache: In-memory and disk cache (
~/.cache/apple-hig-mcp) with 24-hour TTL.Coverage: 160+ topics spanning Foundations, Components, Patterns, Inputs, Technologies, and Platforms (iOS, macOS, visionOS, watchOS, tvOS).
Design Guidance: Built-in heuristics for Liquid Glass layering, 44pt touch targets, continuous curvature (squircle), button hierarchies, and spring physics.
6 Tools: Search, full topic retrieval, category listings, redesign checklists, and official asset links (Figma, SF Symbols).
Related MCP server: apple-design-mcp
Tools
Tool | Description |
| Search 160+ topics, titles, descriptions, and synonyms ( |
| Retrieve live Markdown documentation for any topic ( |
| List main HIG categories and topic counts. |
| List topics within a category with summaries. |
| Generate actionable HIG redesign & polish checklist (iOS, macOS, visionOS). |
| Official links for Apple Figma kits, SF Symbols, and design templates. |
Installation & Setup
Method 1: Zero-Install via npx (Recommended)
Add directly to your MCP client configuration (claude_desktop_config.json, Antigravity mcp_config.json, or Cursor):
{
"mcpServers": {
"apple-hig": {
"command": "npx",
"args": ["-y", "github:Amo643/apple-hig-mcp"]
}
}
}Or install via Claude Code CLI in one command:
claude mcp add apple-hig -- npx -y github:Amo643/apple-hig-mcpMethod 2: Global Install
npm install -g github:Amo643/apple-hig-mcpThen reference the binary directly:
{
"mcpServers": {
"apple-hig": {
"command": "apple-hig-mcp"
}
}
}Method 3: From Source
git clone https://github.com/Amo643/apple-hig-mcp.git
cd apple-hig-mcp
npm install
npm run buildTesting
node test.js
node test-mcp-stdio.jsLicense
MIT
Available Tools
6 toolsget_design_resourcesA
Get direct download and official links to Apple Design Resources (Figma kits, SF Symbols, app icon templates, device bezels).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that the tool returns direct download and official links to specific resource types, which is useful, but it does not clarify authentication needs, rate limits, link validity, or whether any side effects exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the action and resource, then lists relevant examples without unnecessary filler. Every phrase contributes to clarifying what the tool returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter retrieval tool with no annotations and no output schema, the description is sufficiently complete: it says the tool returns direct download and official links and names the types of Apple Design Resources covered. No additional parameter or output-format explanation is needed for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline score is 4. The description does not need to explain parameter semantics, and the empty schema is consistent with a simple retrieval tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb, 'Get', and a specific resource, 'Apple Design Resources', then enumerates concrete resource types such as Figma kits, SF Symbols, app icon templates, and device bezels. This clearly distinguishes the tool from sibling guideline/category/topic tools by focusing on downloadable design assets and official links.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool retrieves but gives no explicit guidance on when to use it instead of siblings like get_guideline, list_categories, or search_hig. There are no exclusions, prerequisites, or alternative-selection criteria, so usage must be inferred from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_guidelineB
Fetch the complete, live Markdown content of any Apple HIG topic directly from developer.apple.com.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | The topic slug, name, or keyword (e.g. "materials", "buttons", "color", "dark-mode", "layout", "typography", "designing-for-macos", "accessibility"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that this fetches live content directly from developer.apple.com and returns Markdown, implying a read-only network operation, but does not mention failure behavior, rate limits, authentication, or invalid-topic handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no wasted words. The core action, scope, output format, and source are stated immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter fetch tool with no output schema, the description states the source and return format sufficiently. It leaves minor gaps around error handling and topic resolution, but is otherwise complete for invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains the topic parameter with examples. The description restates 'any Apple HIG topic' but adds no additional resolution rules, formats, or constraints beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb and resource: 'Fetch the complete, live Markdown content of any Apple HIG topic directly from developer.apple.com.' It clearly states what is returned and from where, but does not differentiate this tool from siblings such as search_hig or list_topics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when full topic content is needed, but gives no explicit when-to-use guidance, prerequisites, or alternatives. It does not tell the agent when to use get_guideline versus search_hig or list_topics to discover a topic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_redesign_checklistA
Generate an actionable Apple HIG checklist for redesigning and polishing apps to feel native and refined.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Target platform for the checklist (default: "all"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. "Generate ... checklist" implies a read-only, side-effect-free operation, but the description never states that no state is mutated, nor does it describe whether the output is static or dynamically tailored, or how opinionated/prescriptive the checklist is.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, with no filler clauses. The trailing qualifier "to feel native and refined" is mildly decorative, but it does convey the tool's intent, so nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single optional-parameter generation tool with no output schema and no annotations, the description covers what is produced and for what purpose. It stops short of describing the checklist's structure or length, which would be the remaining useful detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the single platform parameter has an enum and a documented default, so the schema already does the heavy lifting. The description adds no information about how platform choices change the checklist's contents (e.g., whether "all" merges or truncates).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ("Generate") and a concrete resource ("Apple HIG checklist"), plus a clear scope (redesigning/polishing apps to feel native). It does not explicitly distinguish itself from siblings like get_guideline or search_hig, though "checklist" is a sufficiently distinct artifact that an agent can infer the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "for redesigning and polishing apps to feel native and refined" implies the usage context, but there is no explicit when-to-use/when-not-to-use guidance and no routing to alternatives such as search_hig or get_guideline. The agent must infer whether to call this versus fetching individual guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesA
List all top-level categories in Apple Human Interface Guidelines with topic counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description should carry the full behavioral burden. 'List' implies a read-only operation and the mention of topic counts suggests aggregate metadata, but the description does not state read-only behavior explicitly, ordering, freshness, or whether the result is static HIG content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single well-formed sentence that front-loads the action and scope without filler. Every phrase, including 'top-level' and 'with topic counts', contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with no output schema, the description is nearly sufficient: it states the resource scope and the returned content. The main gap is that it does not explain how these categories relate to the sibling list_topics output or what the count values represent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. There is no parameter semantics to clarify, and the description appropriately does not invent any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: it lists top-level categories in the Apple Human Interface Guidelines, and adds that topic counts are included. That is clear enough to distinguish a browsing/list operation, though it does not explicitly contrast itself with the sibling list_topics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the word 'List' and by 'top-level categories', but the description does not say when to use this instead of list_topics or search_hig. No exclusions or prerequisites are provided, leaving the agent to infer the navigation role.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_topicsB
List all topics within a specific category with their titles, slugs, and summaries.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Optional category name to filter by (e.g. "Foundations", "Components", "Patterns", "Platforms"). If omitted, lists all indexed topics. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden; it does disclose the shape of returned records (titles, slugs, summaries), which is real value. However it says nothing about pagination, result caps, ordering, or whether a nonexistent category returns empty or errors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the action and resource, with the return contents appended. There is no filler and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only listing tool with a fully documented single parameter and disclosed return fields, the description is nearly sufficient. The remaining gap is operational detail (pagination, ordering, behavior on unknown categories), which is minor for this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single optional parameter already documents allowed example values and the omit-behavior. The description adds only the phrase "within a specific category", which restates rather than extends the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ("List all topics") and the scope ("within a specific category"), plus the fields returned (titles, slugs, summaries). It does not explicitly contrast itself with siblings like list_categories or search_hig, so the agent must infer the boundary from the word "topics".
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only conditional behavior (omitting the category lists everything) lives in the schema, not the description. There is no guidance on when to reach for this versus list_categories or search_hig, so alternative selection is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_higB
Search across Apple Human Interface Guidelines topics, titles, descriptions, and categories in real-time.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query or keyword (e.g. "liquid glass", "buttons", "dark mode", "hit target", "typography"). | |
| category | No | Optional category filter (e.g. "Foundations", "Components", "Platforms", "Patterns", "Inputs"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, yet it only offers the vague claim 'in real-time' — no hint at result ordering, result count, pagination, or what a hit looks like. It does disclose that matching spans titles, descriptions, and categories, which is the one genuinely useful behavioral detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler, and the searched-field list is placed where it is most useful. It is lean to the point of leaving obvious questions (return shape, result limits) unaddressed, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with full schema coverage and no output schema, the definition is minimally sufficient to call correctly. However, with no annotations and no output schema, the description should say more about what comes back and how results are ranked or capped.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both parameters (query, category) are documented with examples in the schema itself. The description adds no filtering semantics, matching rules, or interaction between query and category beyond what the schema already says, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Search') and resource ('Apple Human Interface Guidelines topics, titles, descriptions, and categories'), so the agent knows this is a keyword search over HIG content. It does not explicitly name the sibling it differs from (get_guideline, list_topics), but the retrieval-by-query framing is clear enough to separate it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the presence of a 'query' keyword search suggests it is for discovery when the agent doesn't already know the exact topic. There is no explicit statement of when to prefer this over get_guideline (fetch by id) or list_topics (browse), and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
get_design_resources - First observed
get_guideline - First observed
get_redesign_checklist - First observed
list_categories - First observed
list_topics - First observed
search_hig
TDQS
Scored across 6 tools
Each tool has a clearly distinct role: search, fetch full guideline content, list categories, list topics, retrieve design resources, or generate a redesign checklist. Search and get_guideline could superficially seem related, but the descriptions make the search-vs-fetch distinction explicit.
All tools use a consistent snake_case verb_noun pattern: search_hig, get_guideline, list_categories, get_design_resources, list_topics, get_redesign_checklist. The convention is predictable throughout.
Six tools is well-scoped for a documentation/reference server focused on Apple HIG. Each tool supports a distinct lookup or resource-access need without obvious redundancy.
The surface covers search, full-content retrieval, category/topic listing, design resources, and an actionable checklist. Minor gaps might include richer topic metadata or direct navigation helpers, but core HIG discovery and reference workflows are covered.
Maintenance
Related MCP Connectors
Patterns for designing and reviewing AI skills, agents, and multi-agent workflows. Find guidance on context economy, delegation, verification, and tool design; inspect claims, worked examples, maturity labels, and source references. Five read-only tools let agents discover relevant patterns, compare concise cards, read specific sections, and explore relationships. Hosted Streamable HTTP at https://agentic-atlas.dev/mcp/ — no installation, account, or API key required. Browse the atlas at https://agentic-atlas.dev/.
Live AI-native web search with citations. One tool for every MCP client. Flat per-request pricing.
Search and inspect source-pinned agent skills, plugins and tools through a free public MCP.
MCP connector that lets ChatGPT list, search, and run your Apple Shortcuts via a local Mac agent
Related MCP Servers
- AlicenseBqualityFmaintenanceProvides AI assistants with access to Apple's Human Interface Guidelines and technical API documentation across all Apple platforms (iOS, macOS, watchOS, tvOS, visionOS), enabling unified search of design principles and implementation details.23137 npm21MIT
- AlicenseAqualityCmaintenanceEnables AI agents to search, retrieve, and navigate Apple's Human Interface Guidelines as live Markdown content across all Apple platforms.4MIT
- FlicenseNot gradedqualityBmaintenanceEnables intent-based semantic search over external design system documentation, allowing MCP-compatible AI assistants to retrieve relevant design tokens, component architectures, and code patterns via a single tool.-
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to query a design system's components, tokens, icons, patterns, and usage or accessibility guidelines through standardized MCP tools, with pluggable adapters for different data sources.MIT