Apple HIG MCP
Allows searching and fetching Apple's Human Interface Guidelines as Markdown, with community implementation notes and platform-specific design workflows for iOS, macOS, watchOS, tvOS, visionOS, and web.
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 MCPaudit my checkout form against Apple HIG for the web"
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
Bring Apple's Human Interface Guidelines into your AI coding workflow.
A local Model Context Protocol server for Apple's Human Interface Guidelines. Cursor, Claude, and Codex can search the full guideline catalog, fetch an article as Markdown, and read community implementation notes inspired by Apple HIG for native apps and the web.
Installation
Easy plugin install
Requires Node.js 20 or newer and Git on your PATH. The plugin includes the built MCP server, so no manual clone, npm install, build, or path editing is needed.
Claude Code — run these as separate commands inside Claude Code:
/plugin marketplace add yordcode/apple-hig-mcp
/plugin install hig@higCodex — run these in your terminal:
codex plugin marketplace add yordcode/apple-hig-mcp
codex plugin add hig@higReload plugins or restart your assistant, then ask: “Use hig to design an accessible settings screen for the web. Fetch Apple's relevant guidelines first and cite them.” The plugin name and marketplace name are both hig, so its install ID is hig@hig.
Choose either plugin installation or manual MCP setup in the guide to avoid registering the same server twice. Marketplace installation applies to Claude Code and Codex; Cursor and Claude Desktop can use manual MCP configuration.
Manual setup and development
Start with the step-by-step setup and usage guide for client configuration, examples, verification, and troubleshooting.
Requires Node.js 20 or newer.
git clone https://github.com/yordcode/apple-hig-mcp.git
cd apple-hig-mcp
npm ci
npm run build
npm startThe catalog is included; npm run sync-catalog is only needed to refresh navigation metadata. The server supplies reference material and checklists; your assistant performs the design and coding. No API key is required by this server.
The process speaks stdio and logs only to stderr. Catalog files are resolved from this package, so the launch path is absolute and does not depend on the agent's working directory. Node.js 20 or newer must be on PATH.
Related MCP server: Grounded Code MCP
Commands
These workflows use Apple's Human Interface Guidelines and cite the official sources. All 11 names now use hig- instead of hig/. Provide the design task as an argument or in your client's task field; the command already selects the platform.
Command | What it does |
| Show the available commands and how to use them. No input required. |
| Read and summarize one guideline without designing or auditing. Provide a |
| Design a website or web app using Apple HIG as a reference, with semantic HTML, CSS implementation notes, and accessibility guidance. Provide a |
| Design an iPhone interface using the relevant navigation, layout, and touch-target guidance. Provide a |
| Design an iPad interface with layouts suited to wider screens, sidebars, and split views. Provide a |
| Design a Mac interface using desktop window, sidebar, toolbar, and menu patterns. Provide a |
| Design an Apple Watch interface with short interactions and suitable controls and touch targets. Provide a |
| Design an Apple TV interface for remote navigation, focus, and viewing from across the room. Provide a |
| Design an Apple Vision Pro interface using spatial layout, system ornaments, and comfortable target spacing. Provide a |
| Adapt an existing interface to follow Apple HIG while preserving its purpose and content. Provide a |
| Check an existing interface against Apple HIG without redesigning it. Provide a |
The table shows short slash-command names. Your assistant controls the invocation prefix:
Installation | Example invocation |
Claude Code plugin |
|
Claude Code user-installed skills |
|
Codex plugin skills |
|
Codex user-installed skills |
|
Cursor or another MCP prompt client | Select the |
Attribution and license
This independent project is not affiliated with or endorsed by Apple Inc. Apple publishes the Human Interface Guidelines; fetched articles include their official source URLs. Apple article text is fetched on demand and is not bundled in this repository.
Repository code and community implementation notes are provided under the MIT License. That license does not grant rights to Apple's guideline content, fonts, logos, or SF Symbols artwork.
Available Tools
6 toolsget_design_referenceGet design referenceB
Return community implementation notes inspired by Apple's HIG. Apple created the underlying design guidance. Notes include platform-tagged rules and web HTML/CSS guidance, with official Apple source links.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Card id, such as buttons, color, sheets, or settings. | |
| platform | No | Target platform. Use web for websites and web apps. |
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. It does disclose meaningful content traits — platform-tagged rules, web HTML/CSS guidance, and official Apple source links — which helps the agent anticipate the return. It says nothing about error behavior for unknown ids or rate limits, but read-only behavior is clear from the verb.
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?
Three short sentences, front-loaded with the action and content type. The middle sentence about Apple creating the guidance is borderline filler but is brief and establishes attribution, so it does not seriously hurt readability.
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?
With no output schema, the description does the work of describing what comes back: platform-tagged rules, web HTML/CSS guidance, and official source links. For a single-card lookup with a fully documented schema, this is nearly complete; only failure modes for invalid ids are unaddressed.
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 coverage is 100%, with the id example values and the platform enum already documented in the schema. The description's mention of 'platform-tagged rules' and 'web HTML/CSS guidance' loosely corroborates the platform parameter but adds no syntax or format detail 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?
States a specific verb (Return) and resource (community implementation notes inspired by Apple's HIG), and clarifies the content type. However, it never distinguishes itself from siblings like get_topic or search_hig, which likely return overlapping design guidance, so an agent cannot tell which one to pick from the purpose alone.
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?
There is no when-to-use guidance, no exclusions, and no alternatives named. The description implies retrieval of a single reference card by id but never says when this is preferable to search_hig, get_topic, or list_topics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_topicGet HIG topicA
Fetch one Human Interface Guidelines article as Markdown, with the canonical Apple URL. Accepts a slug, path, or developer.apple.com URL. Use section to keep one heading, and platform to drop other platforms' notes.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Slug, HIG path, or full developer.apple.com URL. | |
| section | No | Heading to keep, such as Best practices or Platform considerations. | |
| platform | No | Target platform. Use web for websites and web apps. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden and does deliver the output shape (Markdown plus canonical Apple URL) and the narrowing effect of section/platform. It says nothing about error behavior for an invalid slug, network/rate-limit characteristics, or how large an article may be, which are the gaps a caller would want.
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?
Three short sentences, front-loaded with the verb, resource, and return format, then the accepted input forms, then the two filters. No filler and nothing repeated from the schema verbatim.
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?
There is no output schema and no annotations, so the description must carry return semantics — it does (Markdown body plus canonical URL). Input flexibility and both optional filters are covered; only failure modes and remote-access constraints are absent, which is a minor gap for a read-only fetch tool.
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 already 100%, so the baseline is 3. The description goes slightly beyond the schema by explaining the filter effect — 'section to keep one heading' and 'platform to drop other platforms' notes' — which clarifies that platform is a subtractive filter rather than just a target selector.
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 — 'Fetch one Human Interface Guidelines article as Markdown, with the canonical Apple URL' — and the word 'one' plus the output format distinguish it from list_topics and search_hig. It never names those siblings explicitly, so an agent must infer the routing rather than being told.
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?
'Accepts a slug, path, or developer.apple.com URL' and the note about section/platform tell the agent how to call it, but not when to choose it over search_hig (to discover a topic) or get_design_reference. Usage is implied by the input flexibility rather than stated with conditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guide_interfaceGuide an interfaceA
Given a UI task and platform, return community implementation notes inspired by Apple's HIG, a short checklist, and two or three official Apple topics to fetch before writing the interface.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | What to design, such as settings screen, checkout sheet, or onboarding. | |
| platform | No | Target platform. Use web for websites and web apps. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose the shape of the return payload (notes + checklist + topics), which is genuinely useful since there is no output schema. It stops short of stating that it produces guidance rather than code/files, or any limits on repeated calls or platform defaults.
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; the input precondition ('Given a UI task and platform') precedes the payoff. It is dense but every clause earns its place.
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 two-parameter, annotation-free tool with no output schema, the description adequately covers inputs and return contents. The only meaningful gap is behavior when the optional platform is omitted, which is left unstated.
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 (task, platform) are documented in the schema itself, including the enum and the 'use web for websites' note. The description merely references 'a UI task and platform' without adding format or syntax detail, 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 (return) and enumerates the exact artifacts produced: community implementation notes, a short checklist, and two or three Apple topics. That is far more informative than a restatement of the title, though it never contrasts itself with siblings like search_hig or get_design_reference.
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 'before writing the interface' implies the intended workflow position, giving implicit usage guidance. However, it never states when to prefer this over search_hig, list_topics, or get_design_reference, nor any exclusions, so an agent must infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
helpHIG helpB
Show how to use the HIG design commands and tools.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations and no output schema, the description carries the full behavioral burden, yet it only says it 'shows' help. It does not disclose the return format, whether the output is static or topic-dependent, or any read-only nature. For a no-annotation tool this is a notable gap.
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 efficient, front-loaded sentence with no waste. It is terse but appropriate to a simple help command, though it leaves room for a short clause about scope.
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 help tool with no output schema and no annotations, the description is minimally adequate but incomplete: it never mentions what the help content covers, whether HIG-specific guidance differs from sibling tools, or what the agent receives back.
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 takes zero parameters, so the baseline is 4; there are no parameter semantics to document or compensate for.
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 states a specific verb+resource ('Show how to use the HIG design commands and tools'), making it clear this is the general help entry point. It distinguishes itself implicitly from the functional siblings (search_hig, get_topic, guide_interface) by being the help/orientation tool, though it never names those alternatives.
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?
There is no guidance on when to invoke help versus the five sibling tools, nor any prerequisite or trigger condition. An agent must infer that this is a general orientation command rather than something tied to a specific query.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_topicsList HIG topicsA
List Apple Human Interface Guidelines topics. Filter by section, component group, or platform. Returns titles and official URLs, not article text.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | Component group slug, such as menus-and-actions or presentation. | |
| limit | No | ||
| section | No | Top-level HIG section. | |
| platform | No | Target platform. Use web for websites and web apps. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose a key trait: the output contains titles and official URLs, not article text. It says nothing about pagination, the effect of the limit parameter, or whether filters combine with AND semantics, so the read-only list behavior is only partially covered.
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?
Three short sentences, zero filler. Purpose comes first, filtering second, and the output-shape caveat last, which is exactly the right order.
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?
With no output schema, the description correctly compensates by describing the return contents (titles and URLs, not body text). What remains missing is limit/default behavior and whether multiple filters are combined, both of which an agent would want for a 4-parameter tool.
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 coverage is 75%, so the schema already documents group, section, and platform with examples and 2 enums. The description restates the same three filter dimensions without adding format, default, or combination semantics, and never mentions the limit parameter.
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 and resource ("List Apple Human Interface Guidelines topics") and implicitly separates itself from get_topic by noting it returns titles and URLs rather than article text. However, it never names search_hig, the nearest sibling, so the list-vs-search distinction is only inferable.
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?
"Filter by section, component group, or platform" describes how to narrow results, which implies the browsing use case, but gives no explicit when-to-use or when-not-to-use guidance relative to search_hig. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_higSearch HIGA
Search the HIG catalog by title, section, and aliases such as modal, nav, or form. Returns matching topics and official URLs. Does not return full articles; call get_topic for those.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | Words to search for, such as sheet, sidebar, or dark mode. | |
| section | No | Top-level HIG section. | |
| platform | No | Target platform. Use web for websites and web apps. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the disclosure burden on its own. It usefully states what comes back (matching topics and official URLs, not full content), but says nothing about auth needs, rate limits, ranking behavior, or pagination.
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?
Three short sentences, front-loaded with the core action and ending with the routing caveat. Every clause carries information and nothing is padded.
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 4-param search tool with no output schema, it covers the return shape at a high level and routes to get_topic, but never mentions the platform or limit parameters and gives no sense of result volume or ordering. Adequate but leaves gaps an agent must resolve by reading the schema.
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 75%, so the schema already documents query, section, and platform. The description echoes title/section/alias matching and adds alias examples, but adds no syntax or behavior beyond the structured fields, matching the baseline for well-covered schemas.
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 (the HIG catalog) plus what the query matches against (title, section, aliases). It also frames the boundary with get_topic, so an agent can tell it apart from a sibling even without opening schemas.
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?
Explicitly states the negative case (does not return full articles) and names the alternative (call get_topic for those), which is real routing guidance. It stops short of clarifying search vs list_topics or get_design_reference, so it is clear but incomplete.
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
v0.2.0- First observed
get_design_reference - First observed
get_topic - First observed
guide_interface - First observed
help - First observed
list_topics - First observed
search_hig
TDQS
Scored across 6 tools
list_topics, search_hig, and get_topic are clearly distinguished by browse/search/fetch semantics. The main overlap is between get_design_reference and guide_interface, which both return community implementation notes, though guide_interface adds a checklist and suggested topics.
Most tools follow a verb_noun pattern (list_topics, get_topic, get_design_reference, guide_interface). Minor deviations: search_hig uses an abbreviation as its object and help is a bare verb, but overall the convention is readable and predictable.
Six tools is well-scoped for a documentation/reference server. Each tool earns its place across discovery, retrieval, application guidance, and usage help with no redundancy bloat.
The surface covers the full discovery-to-application lifecycle: browse, search, fetch articles, get implementation notes, get a guided workflow, and help. Minor gaps like no explicit platform/section enumeration or bulk fetch exist but are workable via filters.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Related MCP Servers
FlicenseNot gradedqualityAmaintenanceMCP server for fast local code & content search powered by Hawkeye. Enables AI assistants to search indexed codebases & assets with natural language queries.2-- AlicenseNot gradedqualityDmaintenanceA local MCP server that gives AI coding assistants retrieval access to your personal knowledge base of books, standards, and docs, grounding their answers in sources you trust.MIT
- AlicenseNot gradedqualityBmaintenanceA local MCP server that gives AI agents access to developer tooling — GitHub (read-only), documentation search, and web research — via stdio transport.MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for Apple HIG compliance auditing, providing tools to list skills, search/lookup HIG references, audit files/projects, and explain findings.143MIT