Apple Style MCP Server
Provides Apple Human Interface Guidelines compliance auditing, design-token extraction, cross-platform UI pattern comparison, and production component scaffolding for Apple platform apps.
Audits and scaffolds iOS interfaces against Apple HIG, including safe-area and Dynamic Island handling, 44pt touch targets, Liquid Glass materials, and iOS navigation/tab-bar patterns.
Audits and scaffolds macOS desktop interfaces against Apple HIG, including zero-shift sidebars, titlebar and traffic-light geometry, command palette patterns, and window chrome/safe-area rules.
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 Style MCP ServerAudit my macOS sidebar for HIG compliance and export the design tokens"
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 Style MCP Server (@ahmad/apple-style-mcp)
Enterprise-Grade Model Context Protocol (MCP) Server untuk Audit Arsitektur, Design Tokens, dan Scaffolding Komponen Produksi Berbasis Apple Human Interface Guidelines (HIG) Lintas macOS, iPadOS, dan iOS
๐ Mengapa Proyek Ini Dibuat?
Membangun aplikasi lintas perangkat Apple (macOS Desktop, iPadOS Tablet, dan iOS Mobile) menggunakan teknologi modern (Tauri v2, React + TypeScript, maupun SwiftUI) sering kali mengalami inkonsistensi ergonomi dan visual:
Ikon sidebar yang bergeser (layout shift) saat diciutkan di macOS.
Bayangan (box-shadow) menu yang terpotong bingkai jendela frameless
12pxatau memicu garis hitam1pxpada Windows DWM.Penggunaan material Liquid Glass (iOS 26 / iPadOS 26 / macOS Tahoe) yang keliru diterapkan pada layer konten.
Ukuran target sentuh di bawah
44x44ptatau ketiadaanviewport-fit=cover&env(safe-area-inset-*)di sekitar Dynamic Island dan Home Indicator.
@ahmad/apple-style-mcp hadir sebagai Single Source of Truth bagi AI Coding Agents (Claude Desktop, Cursor, Windsurf, Antigravity) untuk secara otomatis mengaudit proyek, mengekstrak design tokens multi-format, membandingkan pola UI lintas perangkat, dan men-scaffold 21 komponen siap produksi.
Related MCP server: hig-mcp
๐๏ธ Arsitektur Sistem
flowchart LR
subgraph Client["AI Coding Assistants"]
A1["Claude Desktop"]
A2["Cursor / Windsurf"]
A3["Antigravity IDE"]
end
subgraph Transport["MCP Server Layer"]
SDK["@modelcontextprotocol/sdk<br/>JSON-RPC 2.0 Stdio"]
LOG["Structured JSON Logger<br/>(PII & Path Redaction)"]
SHUT["Graceful Shutdown<br/>(SIGTERM / In-Flight Drain)"]
end
subgraph Core["Apple HIG Domain Engine"]
PROF["Platform Profiles<br/>macOS ยท iPadOS ยท iOS"]
TOK["Token Engine<br/>Liquid Glass & Classic"]
KB["HIG Knowledge Base<br/>13 Topics & 6 Pattern Matrices"]
AUD["Multi-Platform Audit Engine<br/>+ Auto Platform Detector"]
COMP["Component Registry<br/>21 Production Templates"]
end
subgraph Output["Multi-Format Renderers"]
R1["CSS Variables + Safe Area"]
R2["JSON Schema Tokens"]
R3["TypeScript as const"]
R4["SwiftUI Color & Font"]
end
Client <-->|stdio| SDK
SDK --> LOG
SDK --> SHUT
SDK --> PROF
PROF --> TOK
PROF --> KB
PROF --> AUD
PROF --> COMP
TOK --> R1
TOK --> R2
TOK --> R3
TOK --> R4๐ Matriks Ergonomi & Geometri Multi-Platform Apple HIG
Dimensi Desain | ๐ฅ๏ธ macOS ( | ๐ฑ iPadOS ( | ๐ฑ iOS ( |
Referensi OS | macOS 26 Tahoe / Sonoma | iPadOS 26 | iOS 26 |
Paradigma Navigasi | Zero-Shift Collapsible Sidebar ( | Adaptive Split View (2/3 Kolom, Sidebar | Liquid Glass Floating Tab Bar ( |
Modalitas Input | Pointer presisi + Keyboard + Trackpad | Multi-Touch + Apple Pencil + Trackpad Pointer (Magnetic Hover) + Keyboard | Multi-Touch + Haptic Touch |
Target Sentuh Minimum |
|
|
|
Ukuran Font Body / Large Title |
|
|
|
Window Chrome & Safe Area | Frameless Window ( | Stage Manager Resizable Window + Safe Area Insets | Edge-to-Edge ( |
Aturan Material Liquid Glass | Sidebar, Titlebar, Command Palette, Toast | Split View Sidebar, Floating Tab Bar, Popover | Floating Tab Bar, Navigation Bar, Bottom Sheet |
๐ Quick Start
Prasyarat
Node.js
>= 22.12.0(direkomendasikan Node.js 24 LTS)npm
>= 10.0.0
Instalasi & Build
# 1. Clone repositori
git clone https://github.com/ahmadeko2017/apple-style-mcp.git
cd apple-style-mcp
# 2. Instal seluruh dependensi
npm install
# 3. Build ke direktori dist/
npm run buildIntegrasi dengan AI Client (mcp_config.json / claude_desktop_config.json)
{
"mcpServers": {
"apple-style-mcp": {
"command": "node",
"args": ["/absolute/path/to/apple-style-mcp/dist/index.js"]
}
}
}๐ ๏ธ Dokumentasi Tools MCP (6 Primary Tools + 3 Legacy Aliases)
1. audit_apple_project (Alias v1: audit_desktop_project)
Mengaudit direktori proyek secara statis dan non-destruktif terhadap standar Apple HIG lintas macos, ipados, dan ios (mendukung deteksi platform otomatis).
Parameter Input:
Nama | Tipe | Wajib | Deskripsi |
|
| Tidak | Path direktori proyek yang diaudit (default: direktori aktif) |
|
| Tidak | Target platform yang diaudit (jika kosong, otomatis dideteksi dari proyek) |
Contoh Output:
{
"projectPath": "/workspace/my-apple-app",
"targetPlatforms": ["macos", "ipados", "ios"],
"complianceScore": "100%",
"platformScores": {
"macos": "100%",
"ipados": "100%",
"ios": "100%"
},
"totalChecks": 14,
"passedChecks": 14,
"failedChecks": 0
}2. scaffold_apple_component (Alias v1: scaffold_macos_component)
Menghasilkan kode komponen React + TypeScript produksi siap pakai (21 komponen tersedia):
Kategori | Nama Komponen ( | Deskripsi |
macOS Desktop |
| Tombol kontrol jendela merah/kuning/hijau dengan simbol mikro SVG saat hover |
| Titlebar | |
| Collapsible sidebar ( | |
| Modal Spotlight | |
| Banner notifikasi kanan atas bergaya macOS dengan aturan Zero-Shadow | |
| Panel detail slide-out kanan dengan scroll terisolasi | |
| Utilitas penonaktifan klik kanan browser bawaan pada elemen non-input | |
| Pemformat token | |
iPadOS Tablet |
| Tata letak Split View 2/3 kolom ( |
| Navigasi yang otomatis bertransformasi dari Sidebar ( | |
| Popover kontekstual Liquid Glass bebas bayangan luar | |
| Tombol dengan efek magnetik kursor trackpad iPadOS ( | |
iOS Mobile |
| Floating Capsule Tab Bar iOS 26 yang menyusut otomatis saat scroll ke bawah |
| Navigation Bar dengan Large Title ( | |
| Modal Bottom Sheet dengan detents | |
| Daftar bergaya Inset Grouped iOS dengan radius | |
| Segmented control berlapis dengan indikator tab aktif | |
Universal / Shared |
| Shell aplikasi universal yang merender navigasi sesuai proporsi macOS, iPadOS, atau iOS |
| Detektor | |
| Pembungkus root dengan tinggi | |
| Kontainer permukaan Liquid Glass khusus layer navigasi dengan specular highlight border |
3. get_design_tokens
Mengekstrak design tokens resmi dalam 4 format output:
format:"css"|"json"|"typescript"|"swift"(ekstensi SwiftUIColor,Font, &Layout)platform:"macos"|"ipados"|"ios"design_era:"liquid_glass"(default) |"classic"palette_mode:"apple_system"(default) |"brand_custom"accent_primary: Kode warna hex kustom (misal"#0284c7")
4. scaffold_apple_app_template (Alias v1: scaffold_base_app_template)
Menghasilkan konfigurasi awal proyek (src-tauri/tauri.conf.json, src/styles/tokens.css, serta index.html dengan viewport-fit=cover apabila menyertakan target ios/ipados). Dilengkapi pengaman dry_run: true dan overwrite: false.
5. get_apple_hig_rule
Lookup penjelasan teknis dan formula matematika untuk 13 topik Apple HIG:
zero_shift_geometry, zero_shadow_popovers, window_frame_canvas, titlebar_controls, spotlight_command_palette, toast_banner, liquid_glass_materials, touch_and_hit_targets, safe_area_and_viewport, ipad_split_view_and_morphing, ipad_pointer_and_stage_manager, ios_floating_tab_bar, ios_large_title_and_sheets.
6. compare_platform_pattern
Menghasilkan matriks JSON perbandingan implementasi pola UI antara macOS, iPadOS, dan iOS untuk topik:
navigation, modality, context_actions, notifications, window_and_safe_area, dan typography_and_ergonomics.
๐ Daftar MCP Resources
URI Resource | MIME Type | Deskripsi |
|
| Profil ergonomi lengkap macOS, iPadOS, dan iOS |
|
| Panduan hierarki material Liquid Glass (OS 26 / macOS Tahoe) |
|
| Kumpulan pedoman Split View, Morphing Tab Bar, dan Trackpad iPadOS |
|
| Kumpulan pedoman Floating Tab Bar, Large Title, dan Safe Area iOS |
|
| Pedoman arsitektur desktop macOS (kompatibilitas v1) |
|
| Formula matematika koordinat |
๐ Struktur Direktori Proyek
apple-style-mcp/
โโโ src/
โ โโโ index.ts # CLI entry point (stdio server)
โ โโโ server.ts # MCP SDK Server & JSON-RPC 2.0 dispatcher
โ โโโ registry.ts # ToolRegistry & ResourceRegistry
โ โโโ types.ts # Kontrak tipe protokol MCP
โ โโโ core/
โ โ โโโ errors.ts # Hirarki custom domain error classes
โ โ โโโ fs/safe-fs.ts # Pemindai direktori aman & path guard
โ โ โโโ platform/ # Spesifikasi profil macOS, iPadOS, & iOS
โ โโโ server/
โ โ โโโ logger.ts # Structured JSON logger + PII & path redaction
โ โ โโโ shutdown.ts # Graceful shutdown (SIGTERM / request draining)
โ โโโ tokens/
โ โ โโโ token-definitions.ts # Single source of truth design tokens
โ โ โโโ renderers.ts # Renderer CSS, JSON, TypeScript, & SwiftUI
โ โโโ knowledge/
โ โ โโโ hig-topics.ts # Basis pengetahuan 13 topik Apple HIG
โ โ โโโ pattern-comparisons.ts # Matriks komparasi 6 pola UI lintas platform
โ โโโ audit/
โ โ โโโ detector.ts # Detektor otomatis platform proyek target
โ โ โโโ audit-engine.ts # Mesin evaluasi kepatuhan multi-platform
โ โโโ components/ # 21 template komponen produksi (macOS/iPadOS/iOS/Shared)
โ โโโ tools/ # Implementasi McpTool handlers
โ โโโ resources/ # Implementasi McpResource providers
โ โโโ __tests__/
โ โโโ server.test.ts # Suite pengujian unit & integrasi (Pola AAA)
โโโ .github/
โ โโโ workflows/ci.yml # GitHub Actions CI Quality Gate
โ โโโ ISSUE_TEMPLATE/ # Template Bug Report & Feature Request
โ โโโ PULL_REQUEST_TEMPLATE.md # Template checklist Pull Request
โโโ CHANGELOG.md # Catatan rilis SemVer
โโโ CONTRIBUTING.md # Panduan kontribusi & standar Clean Code
โโโ SECURITY.md # Kebijakan keamanan & fitur proteksi bawaan
โโโ LICENSE # Lisensi MIT๐งช Testing & Quality Gates
Proyek ini dilengkapi pipeline verifikasi kualitas terpadu (npm run verify) yang mencakup pemeriksaan tipe statis, linting tanpa any, pemformatan kode, pengujian unit/integrasi dengan ambang batas coverage ketat, dan kompilasi produksi:
# Menjalankan seluruh gate verifikasi sekaligus
npm run verify
# Atau menjalankan masing-masing perintah:
npm run typecheck # tsc --noEmit (strict mode)
npm run lint # ESLint flat config (0 warnings, 0 explicit any)
npm run format:check # Prettier code style verification
npm run test:coverage # Vitest + v8 coverage (>92% line coverage)
npm run build # Build ESM + TypeScript declarations ke dist/๐ค Kontribusi & Keamanan
Silakan baca CONTRIBUTING.md untuk standar penulisan kode (Clean Code, SOLID, batas 30 baris/fungsi, dan pola pengujian AAA).
Untuk kebijakan keamanan dan pelaporan kerentanan, lihat SECURITY.md.
๐ Lisensi
Didistribusikan di bawah MIT License. Lihat file LICENSE untuk informasi selengkapnya.
Dikembangkan oleh Ahmad Eko Kurniawan.
Available Tools
9 toolsaudit_apple_projectB
Mengaudit kepatuhan arsitektur, konfigurasi Tauri v2, safe-area mobile, ergonomi sentuh 44pt, dan styling Liquid Glass Apple HIG pada proyek macOS, iPadOS, dan iOS.
| Name | Required | Description | Default |
|---|---|---|---|
| platforms | No | Daftar platform Apple yang diaudit: ['macos', 'ipados', 'ios'] (opsional, auto-detect jika kosong) | |
| project_path | No | Path direktori proyek yang akan diaudit (default: direktori kerja aktif) |
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 audit checklist (architecture, Tauri v2, safe-area, 44pt, Liquid Glass), which is real behavioral scope. But it never says whether the tool is read-only or writes reports/fixes files, what the findings look like, or how long a full audit takes โ gaps that matter for a no-annotation tool.
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 led by the verb, with every clause adding a distinct audit dimension rather than filler. Dense but not padded; only the lack of any second sentence on outcome/usage keeps it from a 5.
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 zero annotations, no output schema, and 2 optional parameters, the description should say what an agent gets back (findings list, severities, pass/fail) and whether anything is mutated. It covers what is audited but leaves the result contract entirely unspecified.
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%, so both 'platforms' and 'project_path' are already documented including the auto-detect default. The description echoes the platform names (macOS, iPadOS, iOS) but adds no new semantics such as path format, symlink handling, or what auto-detect keys off. Baseline 3 is appropriate.
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?
Names a specific verb ('Mengaudit' = audit) plus the resource (Apple project) and enumerates exactly what is checked: architecture, Tauri v2 config, mobile safe-area, 44pt touch ergonomics, and Liquid Glass HIG styling. This scope makes it distinguishable from scaffolding siblings, though it never contrasts itself with the similarly named audit_desktop_project.
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 by the enumerated audit scope โ an agent can infer this is a compliance-check tool for Apple-platform projects. There is no explicit statement of when to run it (pre-release? after scaffolding?), no prerequisites, and no pointer to audit_desktop_project for non-Apple targets.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_desktop_projectC
[Alias Kompatibilitas] Mengaudit kepatuhan arsitektur, konfigurasi Tauri v2, dan styling desktop macOS native pada direktori proyek.
| Name | Required | Description | Default |
|---|---|---|---|
| platforms | No | Daftar platform Apple yang diaudit: ['macos', 'ipados', 'ios'] (opsional, auto-detect jika kosong) | |
| project_path | No | Path direktori proyek yang akan diaudit (default: direktori kerja aktif) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full behavioral burden and does not meet it: it never says whether the audit is read-only, whether it writes reports, what permissions it needs, or what the caller receives back. The '[Alias Kompatibilitas]' label implies a legacy/compatibility relationship but leaves its behavioral implications unexplained.
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 front-loaded sentence with no filler, and the bracketed compatibility marker leads. It is efficient, though a little terse for a tool with no other documentation backing it.
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-annotation, no-output-schema audit tool, the description covers what is inspected but not how results are delivered, whether findings are blocking, or how it relates to its sibling audit tool. Adequate but with clear gaps an agent would need to probe for.
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%, with both optional parameters fully documented (platform enum list, project path default). The description adds no additional parameter meaning, so the 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 states a specific verb (mengaudit) and resource (project directory) and names the concrete checks: architecture compliance, Tauri v2 configuration, and native macOS styling. It does not, however, distinguish this from the sibling audit_apple_project, despite the 'Alias Kompatibilitas' prefix hinting at an overlap.
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 indication of when to use this tool versus audit_apple_project or when it should be avoided. The only guidance present (platform auto-detect, default working directory) is already carried by the schema, not by the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_platform_patternB
Membandingkan bagaimana suatu pola antarmuka Apple HIG (navigation, modality, context_actions, notifications, window_and_safe_area, typography_and_ergonomics) diimplementasikan di macOS, iPadOS, dan iOS.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Pola desain UI yang ingin dibandingkan lintas platform Apple |
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 discloses scope (three platforms, six pattern families) which is useful, but says nothing about the return shape, depth, or whether all three platforms are always 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?
A single front-loaded sentence with no filler, but the parenthetical list of enum values duplicates the schema and consumes most of the text.
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 should describe what a comparison result looks like (per-platform sections? differences?), and it does not. Adequate for calling the tool, incomplete for interpreting its output.
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% and the enum is fully documented in the schema, so the description's enumeration of the same six values adds no meaning beyond structured data. 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 (Membandingkan) and resource (Apple HIG UI patterns) plus the exact comparison axis (macOS, iPadOS, iOS). It is distinguishable from get_apple_hig_rule and the audit/scaffold siblings, though no sibling is named explicitly.
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 comparison-across-platforms intent implies when to use it, but there is no explicit guidance versus get_apple_hig_rule (single-rule lookup) or the audit tools, and no stated preconditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_apple_hig_ruleA
Melihat penjelasan teknis, formula matematika, dan pencegahan bug untuk aturan desain Apple HIG lintas macOS, iPadOS, dan iOS (termasuk Liquid Glass, Zero-Shift Geometry, Safe Area Insets, Split View, dan Floating Tab Bar).
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Topik aturan Apple HIG yang ingin dipelajari | |
| platform | No | Filter platform opsional: macos, ipados, atau ios |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. 'Melihat' (viewing) implies a non-destructive lookup, and the description usefully discloses what the content contains (technical explanation, mathematical formulas, bug prevention), but it never states the return format, depth, or whether results are cached/static.
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 the core action first and the topic list in a parenthetical. The enumeration is long but earns its place by mapping to the topic enum; there is no filler.
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 only two fully documented parameters and no output schema, the description covers enough: it names the content type returned and the platform scope. It would be stronger if it described output shape or the effect of omitting the platform filter, but nothing critical for correct invocation is missing.
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% with both parameters enum-constrained and documented, so baseline is 3. The description adds only marginal value by listing the topic areas and hinting at cross-platform coverage ('lintas macOS, iPadOS, dan iOS'), but does not clarify the interaction between topic and the optional platform filter.
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: it retrieves technical explanations, formulas, and bug-prevention notes for Apple HIG design rules, with the covered topics enumerated (Liquid Glass, Zero-Shift Geometry, Safe Area Insets, etc.). This clearly separates it from the scaffold_* and audit_* siblings, though no sibling is named explicitly.
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 usage is implied rather than stated: an agent can infer it should call this when it needs HIG rule details before scaffolding or auditing, but there is no explicit when-to-use, when-not-to-use, or pointer to alternatives like compare_platform_pattern. Guidance is adequate but left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_tokensB
Menyediakan design tokens resmi Apple HIG untuk macOS, iPadOS, dan iOS (Liquid Glass & Classic Vibrancy, Apple System Colors & Brand Custom, SF Pro typography, safe-area insets, dan chrome geometry) dalam format CSS, JSON, TypeScript, atau SwiftUI.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Format output yang diinginkan: css, json, typescript, atau swift (default: css) | |
| platform | No | Target platform Apple: macos, ipados, atau ios (default: macos) | |
| design_era | No | Bahasa desain Apple: liquid_glass (OS 26 / Tahoe) atau classic (default: liquid_glass) | |
| palette_mode | No | Palet dasar warna: apple_system atau brand_custom (default: apple_system) | |
| accent_primary | No | Warna aksen primer kustom dalam format hex (contoh: #0284c7) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. 'Menyediakan' implies a read-only provisioning operation with no mutation side effects, and the format list tells the agent the output shape (CSS/JSON/TS/Swift). However, it never states there is no side effect, whether the data is static or generated per-call, or any cost/latency consideration โ meaningful gaps for a no-annotation tool.
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 listing the resource and its scope, with no filler. The long parenthetical inventory is dense but every item conveys actual token coverage, so it largely 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?
With 5 all-optional parameters and no output schema, the description does what is needed: it names the output formats and enumerates the token categories an agent will receive. Only the absence of any return-structure hint (e.g. nesting, units, file vs payload) keeps it short of complete.
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% and the enum values are already documented with defaults (e.g. 'liquid_glass (OS 26 / Tahoe)'). The description's mention of the four formats and of 'Apple System Colors & Brand Custom' mirrors rather than extends those enums, so it does not meaningfully deepen parameter understanding 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?
The description names a specific verb (menyediakan/provides) and a concrete resource (official Apple HIG design tokens), then enumerates the token families covered (Liquid Glass & Classic Vibrancy, system colours, SF Pro typography, safe-area insets, chrome geometry). It never mentions the sibling tools (get_apple_hig_rule, scaffold_apple_component), so an agent cannot tell from the text alone how this differs from fetching a single HIG rule.
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 statement of when to call this versus alternatives, no prerequisites, and no exclusions. The only usable signal is the implicit 'get me tokens' framing, which leaves the agent to infer that this is the bulk-retrieval counterpart to get_apple_hig_rule or scaffold_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scaffold_apple_app_templateB
Menghasilkan struktur starter dan file konfigurasi (tauri.conf.json, tokens.css, index.html safe-area) untuk proyek macOS, iPadOS, dan iOS dengan dukungan dry_run dan proteksi overwrite.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Jika true, hanya mengembalikan preview tanpa menulis ke disk (default: false) | |
| app_name | Yes | Nama aplikasi baru (contoh: 'Awesome Apple App') | |
| overwrite | No | Jika true, mengizinkan penimpaan file yang sudah ada (default: false) | |
| platforms | No | Daftar platform target: ['macos', 'ipados', 'ios'] (default: ['macos']) | |
| design_era | No | Era desain: liquid_glass atau classic (default: liquid_glass) | |
| identifier | Yes | Bundle identifier aplikasi (contoh: 'com.ahmad.app') | |
| target_dir | No | Direktori target penulisan file starter (opsional) | |
| accent_color | No | Warna aksen utama dalam format hex (contoh: '#0284c7') | |
| palette_mode | No | Mode palet warna: apple_system atau brand_custom (default: apple_system) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose two meaningful behaviors: a dry_run preview mode and overwrite protection for existing files, plus names the concrete artifacts produced. It does not say what happens on conflict when overwrite is false (error vs skip), whether parent directories are created, or what a dry_run response looks like.
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 dense sentence that front-loads the output artifacts and appends the two safety behaviors. No filler; slightly compressed given the 9-parameter surface.
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 9-parameter write tool with no annotations and no output schema, the description covers artifacts and the two safety flags but omits conflict semantics, whether the tool creates the target directory, and what non-dry-run success returns. Adequate but leaves real gaps for a mutating generator.
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%, with all 9 parameters including enums and defaults documented inline, so the baseline is 3. The description mentions dry_run and overwrite but adds no syntax, constraints, or interaction detail beyond what the schema already states.
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+resource: generating starter structure and config files (tauri.conf.json, tokens.css, index.html) for macOS/iPadOS/iOS projects. However, it never distinguishes itself from the very similar sibling scaffold_base_app_template, leaving the agent to guess which scaffolding tool to pick.
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?
No indication of when to use this versus scaffold_base_app_template, scaffold_macos_component, or scaffold_apple_component. The only usage-adjacent content is the mention of dry_run and overwrite protection, which is capability, not routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scaffold_apple_componentB
Menghasilkan kode komponen React + TypeScript produksi bergaya Apple HIG untuk macOS, iPadOS, dan iOS (Traffic Lights, Zero-Shift Sidebar, Command Palette, iPad Split View, iOS Liquid Glass Tab Bar, Bottom Sheet, dll).
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Konteks platform opsional: macos, ipados, atau ios | |
| component | Yes | Jenis komponen Apple HIG yang ingin di-generate (macOS, iPadOS, iOS, atau Shared) |
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 says code is 'produced' but not whether it is written to disk, returned as a string, or whether existing files are overwritten โ a critical distinction for a scaffold tool. Permissions, prerequisites, and side effects are entirely unaddressed.
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 platform scope and the concrete component examples both earn their place. The long parenthetical list is slightly heavy but serves as useful orientation to the enum's contents.
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?
The tool is simple (2 params, no nesting), but with no output schema and no annotations, the description should at least indicate the shape of the result โ generated code returned inline vs. files created. That gap leaves an agent unable to predict the outcome of a call.
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 both parameters enumerated and described, so the schema does the heavy lifting. The description's parenthetical list of component names loosely mirrors the component enum but adds no selection guidance or defaults beyond it; 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 gives a specific verb and resource: 'Menghasilkan kode komponen React + TypeScript' styled per Apple HIG, scoped to macOS/iPadOS/iOS, and names concrete component examples (Traffic Lights, Command Palette, Liquid Glass Tab Bar). It does not differentiate itself from the closely named sibling scaffold_macos_component, so an agent must infer the boundary.
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: 'you want an Apple HIG component' selects this tool. No when-not guidance and no explicit routing against scaffold_macos_component, scaffold_apple_app_template, or get_design_tokens, all of which could plausibly be chosen for a similar request. The multi-platform scope hints at the distinction from the macOS-only sibling but never states it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scaffold_base_app_templateC
[Alias Kompatibilitas] Menghasilkan struktur starter atau menuliskan file konfigurasi (tauri.conf.json, tokens.css, AppShell starter) untuk proyek desktop/mobile baru.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Jika true, hanya mengembalikan preview tanpa menulis ke disk (default: false) | |
| app_name | Yes | Nama aplikasi baru (contoh: 'Awesome Apple App') | |
| overwrite | No | Jika true, mengizinkan penimpaan file yang sudah ada (default: false) | |
| platforms | No | Daftar platform target: ['macos', 'ipados', 'ios'] (default: ['macos']) | |
| design_era | No | Era desain: liquid_glass atau classic (default: liquid_glass) | |
| identifier | Yes | Bundle identifier aplikasi (contoh: 'com.ahmad.app') | |
| target_dir | No | Direktori target penulisan file starter (opsional) | |
| accent_color | No | Warna aksen utama dalam format hex (contoh: '#0284c7') | |
| palette_mode | No | Mode palet warna: apple_system atau brand_custom (default: apple_system) |
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 does signal a mutation ("menuliskan file konfigurasi") and names the affected files, but says nothing about defaults that matter operationally โ that overwrite defaults to false and dry_run produces a preview โ nor about idempotency, permissions, or what happens to existing files. The word "Alias" also leaves the agent unsure whether this is a deprecated shim.
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 artifact list is the most useful part of it. The bracketed "[Alias Kompatibilitas]" tag consumes attention without earning it, since its meaning is never resolved.
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 nine-parameter, nine-field mutation tool with no annotations and no output schema, the description is too thin. It omits the alias/deprecation semantics relative to scaffold_apple_app_template and does not describe the resulting file layout or return value, leaving the agent to infer behavior from the schema alone.
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%, so all nine parameters are already self-documented; baseline is 3. The description adds mild context by naming the output files (tokens.css ties to accent_color/palette_mode/design_era, tauri.conf.json ties to identifier/app_name/platforms) but supplies no additional format or validation semantics 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?
The description names a concrete action (generating starter structure / writing config files) and enumerates the specific artifacts (tauri.conf.json, tokens.css, AppShell starter) plus the target project type (desktop/mobile). It is specific enough to distinguish from component-level scaffolds, but the "[Alias Kompatibilitas]" prefix is never explained, so an agent cannot tell whether this duplicates or supersedes the sibling scaffold_apple_app_template.
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?
No guidance is given on when to choose this tool over scaffold_apple_app_template or scaffold_apple_component, despite an obvious alias relationship implied by the title tag. The only usage hint is the implied "new project" context, with no prerequisites, exclusions, or ordering relative to the audit_* tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scaffold_macos_componentC
[Alias Kompatibilitas] Menghasilkan kode komponen React + TypeScript produksi bergaya Apple HIG macOS, iPadOS, dan iOS.
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Konteks platform opsional: macos, ipados, atau ios | |
| component | Yes | Jenis komponen Apple HIG yang ingin di-generate (macOS, iPadOS, iOS, atau Shared) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full load. It says code is 'produksi' (production-grade) but never states where files are written, whether existing files are overwritten, whether a project must already exist, or whether the call is idempotent. For a scaffolding/write tool that is a significant 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 front-loaded sentence that leads with the alias marker and then the core action. No filler, though the alias tag is cryptic without explanation of what it aliases.
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 tool with a fully documented enum schema and no output schema, the description covers what is generated (component code and platform). It is missing side-effect information (file paths, overwrite behavior) that matters for a scaffold generator with zero annotation coverage.
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% with both parameters enum-constrained and individually documented, so the schema does the semantic work. The description adds only the notion that platform is optional context, which the schema already conveys. 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 and artifact: 'Menghasilkan kode komponen React + TypeScript' styled per Apple HIG, with the three platform families named. The stack and design-system scope are clear. However, it does not differentiate itself from the sibling scaffold_apple_component, and the name's 'macos' scoping conflicts slightly with the description's macos/ipados/ios coverage.
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 '[Alias Kompatibilitas]' prefix hints this is a compatibility alias, but the description never explicitly says 'use this instead of scaffold_apple_component' or explains when one should be chosen over the other. No prerequisites, no when-not guidance, no mention of the other scaffolding siblings.
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.
9 tool updates
v2.0.0- First observed
audit_apple_project - First observed
audit_desktop_project - First observed
compare_platform_pattern - First observed
get_apple_hig_rule - First observed
get_design_tokens - First observed
scaffold_apple_app_template - First observed
scaffold_apple_component - First observed
scaffold_base_app_template - First observed
scaffold_macos_component
TDQS
Scored across 9 tools
The tool set suffers from significant redundancy due to aliases (e.g., audit_apple_project vs audit_desktop_project, scaffold_apple_component vs scaffold_macos_component). An agent might face confusion when presented with functionally identical tools, degrading the usability of the set.
The tools mostly adhere to the consistent verb_noun pattern, such as get_design_tokens and scaffold_apple_component. The presence of aliases and slight naming variations does not fundamentally break the pattern.
With 9 tools, the set is well-scoped and appropriately detailed for its highly specialized purpose of Apple HIG implementation and auditing.
The surface is robust, covering component generation, full application scaffolding, design tokens, and architectural auditing. The set covers nearly all necessary lifecycle stages for HIG implementation.
Maintenance
Related MCP Connectors
Live React design-system APIs, patterns, and code validation so AI agents build real UI, not slop.
Give your agent a real design system: tokens, measured WCAG contrast, and rules to follow.
Run accessibility, contrast, and design token audits and file QA issues from your AI coding tool.
UI design from prompts, screenshots, and URLs for AI coding agents and theme tokens.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to extract design systems, analyze components, and maintain design-code consistency from Figma files, providing intelligent component analysis and accessibility compliance.23 npm27MIT
- AlicenseAqualityBmaintenanceProvides Apple Human Interface Guidelines design tokens (colors, typography, Liquid Glass constraints, SwiftUI mappings) as structured data for AI coding agents.439 PyPI36MIT
- AlicenseNot gradedqualityAmaintenanceEnables AI coding assistants to generate bespoke design systems by synthesizing OKLCH color palettes, chamfer highlights and spring physics, teaching layout composition grammar, and returning micro-interaction primitives and component blueprints. Also audits JSX/TSX/HTML through a senior design director's lens to score and critique UI quality.2 npm1MIT

UXKIN MCP Serverofficial
AlicenseNot gradedqualityAmaintenanceEnables coding agents to find real iOS app screens, user journeys, and website design systems, including colors, typography, components, and DESIGN.md files, so generated UIs resemble real products instead of AI defaults.7MIT