Icon Composer MCP
Herramientas MCP locales para documentos editables de Apple Icon Composer y vistas previas nativas de apariencia.
Documentación
Icon Composer MCP
Icon Composer MCP (icon-composer-kit) es un servidor MCP local para crear, inspeccionar, revisar y renderizar documentos editables de Apple Icon Composer .icon. Mantiene el espacio de trabajo explícito y local, valida el arte antes de escribirlo y delega las vistas previas al renderizador firmado de Apple Icon Composer cuando está disponible.
Es intencionalmente un compositor de iconos. Acepta arte SVG o PNG estático y organiza ese arte en grupos editables, capas, materiales, rellenos, posiciones y especializaciones de apariencia. No genera arte, vectoriza imágenes rasterizadas, descarga recursos ni llama a un servicio de red.
Galería de vistas previas
Estas vistas previas se produjeron a partir de las recetas incluidas con el renderizador nativo de Apple Icon Composer. Cada ejemplo tiene un paquete editable correspondiente en examples/.
| Orbit | Bloom | Prism |
|---|---|---|
Cada receta se puede renderizar en las seis apariencias compatibles:
| Ejemplo | Predeterminado | Oscuro | Tinte Claro | Tinte Oscuro | Claro Claro | Claro Oscuro |
|---|---|---|---|---|---|---|
| Orbit | 512 | 512 | 512 | 512 | 512 | 512 |
| Bloom | 512 | 512 | 512 | 512 | 512 | 512 |
| Prism | 512 | 512 | 512 | 512 | 512 | 512 |
| Predeterminado | Oscuro | Tinte Claro | Tinte Oscuro | Claro Claro | Claro Oscuro |
|---|---|---|---|---|---|
Las vistas previas pequeñas muestran la verificación de 32 px utilizada por el flujo de trabajo de ejemplos: Orbit, Bloom y Prism.
Requisitos
- Node.js 24 o más reciente.
- npm y el
package-lock.jsonincluido. - Un directorio absoluto dedicado y escribible para
ICON_WORKSPACE. - macOS con Apple Icon Composer para que
composer_statusinforme disponible y para querender_iconproduzca vistas previas nativas. Las operaciones de documentos admiten sistemas de archivos locales de macOS y Linux. Windows no es compatible con las verificaciones de propiedad. La herramienta nativa verificada actualmente informa la versión 1.6 en el entorno de desarrollo; la disponibilidad se verifica en tiempo de ejecución.
El servidor verifica el requisito de firma de Apple y el identificador com.apple.IconComposerTool esperado antes de invocar ictool. ICON_COMPOSER_APP puede apuntar a un paquete .app absoluto cuando el renderizador está instalado fuera de su ubicación predeterminada; los valores malformados deshabilitan el renderizado nativo.
Instalar y ejecutar localmente
Clona el repositorio y luego compila el paquete local:
git clone https://github.com/TheNaubit/icon-composer-mcp.git icon-composer-kit
cd icon-composer-kit
npm ci
npm run build
mkdir -p /absolute/path/icon-workspace
ICON_WORKSPACE=/absolute/path/icon-workspace node "$PWD/dist/server.js"
El servidor habla MCP a través de stdio. Mantén ICON_WORKSPACE dedicado a los iconos creados por este servidor. La raíz del espacio de trabajo es una configuración del operador, no un argumento de herramienta, y debe ser un directorio real absoluto debajo de la raíz del sistema de archivos.
Instalar en tu host MCP
Compila una vez con npm ci y npm run build, luego elige tu host a continuación. Estas son instalaciones locales: ejecuta el host en la Mac que tiene Icon Composer para renderizar vistas previas. Linux solo admite operaciones de documentos. Las sesiones de codificación solo de navegador y remotas no pueden iniciar el renderizador en tu Mac a través de esta configuración de stdio.
Reemplaza /absolute/path/icon-composer-kit con tu checkout y /absolute/path/icon-workspace con un directorio de salida dedicado. Para aplicaciones de escritorio, reemplaza /absolute/path/node con el resultado de command -v node (Node 24+). Las rutas JSON y TOML son literales: no pongas ~ ni $PWD en ellas. Fusiona las entradas en la configuración existente en lugar de reemplazar otros servidores.
| Host | Configuración | Verificación |
|---|---|---|
| Codex CLI | codex mcp add o TOML | codex mcp get y /mcp |
| Codex app | TOML local compartido de Codex | Reinicia la app, inicia una nueva tarea local |
| Claude Code | claude mcp add | claude mcp get y /mcp |
| Claude Desktop — Chat | Configuración JSON de escritorio | Reinicia la app, inicia un nuevo Chat |
| Claude Cowork | Envoltorio de plugin local manual | Habilita el plugin y verifica sus herramientas |
| Cursor | mcp.json de usuario o proyecto | Habilita el servidor en la configuración de MCP |
| VS Code | .vscode/mcp.json | Inicia el servidor, selecciona las herramientas de chat |
Ningún paquete npm publicado ni extensión de un clic se asume en estas instrucciones. Mantén la configuración específica de la máquina y cualquier ZIP de plugin que personalices fuera de este repositorio público.
Codex CLI
Regístrate para tu usuario:
codex mcp add icon-composer-kit \
--env ICON_WORKSPACE=/absolute/path/icon-workspace \
-- /absolute/path/node /absolute/path/icon-composer-kit/dist/server.js
codex mcp get icon-composer-kit
Inicia una nueva sesión de codex y usa /mcp para verificar la conexión. Para eliminar el registro, ejecuta codex mcp remove icon-composer-kit; los archivos de iconos permanecen en el disco.
Alternativamente, fusiona esto en ~/.codex/config.toml. Solo para un proyecto de confianza, usa el .codex/config.toml de ese proyecto en su lugar:
[mcp_servers.icon-composer-kit]
command = "/absolute/path/node"
args = ["/absolute/path/icon-composer-kit/dist/server.js"]
[mcp_servers.icon-composer-kit.env]
ICON_WORKSPACE = "/absolute/path/icon-workspace"
Documentación oficial de MCP de Codex.
Codex app
La app y la CLI comparten la configuración de MCP en el mismo host local de Codex. Usa el registro de CLI anterior, o agrega el mismo bloque TOML a ~/.codex/config.toml si no usas la CLI. Reinicia la app y abre una nueva tarea local. Pídele que llame a composer_status, luego list_icons.
Usa la configuración en la Mac que ejecuta la tarea, no un host remoto separado. Para desinstalar, elimina el bloque de servidor TOML y su subtabla de entorno, luego reinicia la app. Guía oficial de configuración compartida.
Claude Code
Usa el ámbito de usuario para acceso en todos tus proyectos:
claude mcp add --transport stdio --scope user \
--env ICON_WORKSPACE=/absolute/path/icon-workspace \
icon-composer-kit -- /absolute/path/node /absolute/path/icon-composer-kit/dist/server.js
claude mcp get icon-composer-kit
Inicia una nueva sesión de Claude Code y ejecuta /mcp. Las seis herramientas deberían estar disponibles. Para restringir la instalación a tu proyecto actual sin compartir sus rutas, reemplaza --scope user con --scope local. --scope project escribe configuración compartida de .mcp.json; evita confirmar rutas absolutas personales allí.
Elimínalo con claude mcp remove --scope user icon-composer-kit, usando el mismo ámbito en el que lo instalaste. Guía oficial de MCP de Claude Code.
Claude Desktop — Chat
En macOS, abre Configuración → Desarrollador → Editar configuración de Claude Desktop, o edita ~/Library/Application Support/Claude/claude_desktop_config.json. Fusiona esta entrada:
{
"mcpServers": {
"icon-composer-kit": {
"command": "/absolute/path/node",
"args": ["/absolute/path/icon-composer-kit/dist/server.js"],
"env": { "ICON_WORKSPACE": "/absolute/path/icon-workspace" }
}
}
}
Sal por completo y vuelve a abrir Claude Desktop. En un nuevo Chat, verifica las herramientas disponibles y solicita composer_status. Elimina la entrada y reinicia para desinstalar. Esta es una configuración manual de stdio, no una instalación de extensión de escritorio .mcpb. Configuración oficial de servidor local.
Claude Cowork
Instalación manual de plugin local. Claude documenta servidores MCP locales en plugins de escritorio, pero dice explícitamente que los servidores claude_desktop_config.json heredados no están disponibles en Cowork. Usa el mecanismo de plugin en lugar de asumir que la configuración de Chat se transfiere. La ejecución de plugins locales requiere la app de escritorio y puede ser deshabilitada por la política de la organización. Consulta Arquitectura de Cowork y la limitación de configuración heredada.
Para preparar un envoltorio local de máquina, crea esta carpeta fuera del checkout:
icon-composer-local/
├── .claude-plugin/
│ └── plugin.json
└── .mcp.json
Pon esto en .claude-plugin/plugin.json:
{
"name": "icon-composer-local",
"version": "1.0.1",
"description": "Local Apple Icon Composer tools"
}
Pon el JSON de la sección Claude Desktop — Chat en .mcp.json, con tus rutas absolutas reales. El envoltorio hace referencia a tu checkout compilado existente y dependencias; no los agrupa ni descarga. Este diseño sigue la referencia oficial de plugin MCP.
Desde el directorio del envoltorio, incluye ambas entradas ocultas en el archivo:
zip -r ../icon-composer-local.zip .claude-plugin .mcp.json
En Claude Desktop, abre Cowork → Personalizar → Plugins y usa la opción de carga de plugin personalizado para instalar el ZIP. Habilítalo e inicia una nueva tarea. Solicita composer_status y list_icons; los nombres de herramientas de plugin pueden tener un prefijo de espacio de nombres. Guía oficial de instalación de plugins.
Si las cargas personalizadas/ejecución local de MCP no están disponibles, usa Claude Code o Claude Desktop Chat en su lugar. No ingreses una ruta de sistema de archivos en el campo de URL del conector remoto. Para desinstalar, elimina el envoltorio de Plugins; conserva o archiva el espacio de trabajo de iconos separado como desees. El ZIP personalizado contiene rutas locales, así que mantenlo privado.
Cursor
Para tu usuario, fusiona lo siguiente en ~/.cursor/mcp.json. Para un proyecto, usa .cursor/mcp.json en ese proyecto en su lugar:
{
"mcpServers": {
"icon-composer-kit": {
"type": "stdio",
"command": "/absolute/path/node",
"args": ["/absolute/path/icon-composer-kit/dist/server.js"],
"env": { "ICON_WORKSPACE": "/absolute/path/icon-workspace" }
}
}
}
Abre los controles de MCP de Cursor en Configuración / Personalizar, habilita el servidor y recarga la ventana si no se ha conectado. En el chat de Agent, pídele que llame a composer_status. Elimina la entrada JSON para desinstalar. Guía oficial de configuración de Cursor.
VS Code
VS Code usa un objeto servers en lugar de mcpServers. Fusiona esto en .vscode/mcp.json, o ejecuta MCP: Abrir configuración de usuario para una instalación a nivel de usuario:
{
"servers": {
"icon-composer-kit": {
"type": "stdio",
"command": "/absolute/path/node",
"args": ["/absolute/path/icon-composer-kit/dist/server.js"],
"env": { "ICON_WORKSPACE": "/absolute/path/icon-workspace" }
}
}
}
Usa la acción Iniciar del editor para el servidor y acepta su solicitud de confianza. Selecciona sus herramientas en el chat de agente y solicita composer_status. Para desinstalar, detén el servidor y elimina su entrada. En una ventana remota de VS Code, asegúrate de que el servidor esté configurado para ejecutarse en tu Mac local si necesitas renderizado nativo. Guía oficial de MCP de VS Code.
Verificar cualquier instalación
Pregunta al host: "Usa Icon Composer Kit para llamar a composer_status y list_icons". Una respuesta exitosa de la herramienta confirma la conexión. composer_status devolviendo available: false significa que MCP está conectado pero el renderizador de Apple no pudo verificarse; la creación de documentos aún puede funcionar.
Si no aparecen herramientas, ejecuta el cliente incluido de forma independiente:
ICON_WORKSPACE=/absolute/path/icon-workspace \
/absolute/path/node /absolute/path/icon-composer-kit/dist/client.js tools
Esto debería listar seis herramientas. Luego verifica los registros de tu host, las rutas absolutas literales, la versión de Node y la propiedad del espacio de trabajo. Si Icon Composer está instalado por separado de Xcode, agrega ICON_COMPOSER_APP a la misma configuración de entorno del servidor con la ruta absoluta de .app.
Estas recetas se verificaron contra la documentación oficial el 5 de septiembre de 2026 y la ayuda del CLI instalado. Usa la documentación del host vinculada si las etiquetas de menú cambian.
Cliente MCP de línea de comandos
El cliente compilado es un pequeño llamador de diagnóstico. Inicia un servidor hijo con el ICON_WORKSPACE actual, lista las herramientas registradas o llama a una herramienta usando un archivo JSON.
export ICON_WORKSPACE=/absolute/path/icon-workspace
node dist/client.js tools
node dist/client.js call list_icons
Las llamadas sin argumentos pueden omitir el archivo JSON:
node dist/client.js call composer_status
El cliente acepta entrada JSON de hasta 2 MiB e imprime el resultado de MCP como JSON. Los fallos de herramientas devuelven un estado de salida distinto de cero. ICON_WORKSPACE es obligatorio incluso para tools porque el cliente siempre inicia el servidor local.
Un primer icono
El examples/orbit.json incluido es una solicitud completa de create_icon. Utiliza un fondo de dos paradas, dos grupos, capas SVG estáticas, material de vidrio y una especialización de fondo oscuro.
export ICON_WORKSPACE=/absolute/path/icon-workspace
node dist/client.js call create_icon examples/orbit.json
Para una vista previa oscura, guarda esto como render.json en el checkout (o cualquier archivo local pasado explícitamente al cliente):
{ "name": "orbit", "rendition": "Dark", "size": 512, "inline": false }
node dist/client.js call render_icon render.json
La ruta PNG en el resultado es relativa a ICON_WORKSPACE. Abre orbit.icon en el Icon Composer de Apple para inspeccionar sus capas de forma interactiva. Guarda los experimentos manuales del editor como una copia separada; no se importan en la especificación gestionada.
La respuesta contiene la ruta lógica del bundle (orbit.icon) y una revisión SHA-256. La creación nunca sobrescribe un nombre de icono existente. Para revisar un icono, llama a read_icon, copia su spec y revision completos, y luego llama a update_icon con un nuevo outputName. El bundle original permanece sin cambios.
Superficie MCP
El servidor registra seis herramientas y un prompt. Las respuestas de las herramientas son texto JSON, excepto render_icon, que también puede incluir una imagen PNG cuando inline es verdadero.
| Herramienta | Propósito | ¿Escribe en el workspace? |
|---|---|---|
composer_status | Comprueba si el renderizador verificado de Apple está disponible; puede devolver su versión corta numérica. | No |
list_icons | Lista los nombres de bundles de iconos válidos en el workspace configurado. | No |
create_icon | Valida una especificación completa y crea un nuevo bundle .icon editable. | Sí |
read_icon | Lee la especificación gestionada y su revisión. | No |
update_icon | Verifica una revisión esperada y crea una especificación revisada bajo un nuevo nombre. | Sí |
render_icon | Renderiza una apariencia PNG nativa, la guarda con un nombre de archivo único y opcionalmente la devuelve en línea. | Sí |
El prompt compose-icon proporciona una lista de verificación de composición: un lienzo de 1024 por 1024, grupos y capas de adelante hacia atrás, formas de vidrio separadas, arte oscuro cuando sea útil, seis renderizados de apariencia y una inspección de 32 px/1024 px. El texto del prompt es orientación; los esquemas de las herramientas siguen siendo autoritativos.
Referencia de especificación
create_icon acepta {name, spec}. update_icon requiere {name, outputName, expectedRevision, spec}. expectedRevision es la revisión hexadecimal de 64 caracteres devuelta por read_icon. Ambos aceptan objetos JSON estrictos. Los campos desconocidos se rechazan. La especificación gestionada actual se almacena como source.json dentro de cada bundle y es la autoridad utilizada por read_icon y las actualizaciones posteriores.
Campos de icono
| Campo | Tipo | Restricciones y valor predeterminado |
|---|---|---|
background | string o {top,bottom} | Obligatorio. Los colores son #RRGGBB de seis dígitos; un objeto es un gradiente vertical. |
darkBackground | Igual que background | Relleno opcional de apariencia oscura. |
platform | "iOS" | "macOS" | El valor predeterminado es "iOS". |
groups | Array | Obligatorio; 1–4 grupos. |
Campos de grupo
| Campo | Tipo | Restricciones y valor predeterminado |
|---|---|---|
name | string | Obligatorio, 1–80 caracteres; sin caracteres de control. |
layers | Array | Obligatorio; 1–32 capas. Los grupos y capas están de adelante hacia atrás. |
specular | boolean | El valor predeterminado es false. |
blur | number | 0–1, el valor predeterminado es 0. |
translucency | number | 0–1, el valor predeterminado es 0. |
shadow | "none" | "neutral" | "chromatic" | El valor predeterminado es "none". |
shadowOpacity | number | 0–1, el valor predeterminado es 0. |
lighting | "combined" | "individual" | El valor predeterminado es "combined". |
Campos de capa
| Campo | Tipo | Restricciones y valor predeterminado |
|---|---|---|
name | string | Obligatorio, 1–80 caracteres; sin caracteres de control. |
svg | string | Se requiere exactamente una fuente primaria: SVG estático de hasta 256 KiB. |
pngBase64 | string | Fuente primaria alternativa: PNG base64 no entrelazado, de como máximo 1 MiB y 1024 px por lado. Los píxeles se recodifican sin metadatos. |
darkSvg | string | Especialización opcional de arte oscuro, con las mismas reglas SVG. |
darkPngBase64 | string | Especialización opcional de PNG oscuro, con las mismas reglas PNG. |
glass | boolean | El valor predeterminado es false. |
opacity | number | 0–1, el valor predeterminado es 1. |
scale | number | 0.01–4, el valor predeterminado es 1. |
x, y | number | −1024–1024 puntos, cada uno con valor predeterminado de 0. |
El JSON completo del icono debe tener como máximo 2 MiB y contener como máximo 64 activos de arte, incluidas las especializaciones oscuras. SVG acepta un lenguaje estático deliberadamente pequeño de geometría, gradientes locales, máscaras y rutas de recorte, con entrada bruta limitada a 256 KiB, 4096 elementos y profundidad 32. URLs externas, URLs de datos, scripts, atributos de eventos, estilos, declaraciones y elementos no admitidos se rechazan. La entrada PNG debe ser un PNG válido, no animado, no entrelazado, con CRC intactos; los metadatos auxiliares se eliminan. El transporte MCP reserva hasta 3 MiB por fotograma.
Los colores de fondo y SVG sin etiquetar se emiten como valores Display P3 en el documento nativo. Los píxeles PNG no se convierten de color y los perfiles incrustados se eliminan; exporta arte PNG como sRGB antes de importarlo.
Renderizado
render_icon toma name, rendition, size, inline, tintColor opcional, tintStrength opcional y opaqueBackground opcional.
| Campo | Tipo | Restricciones y valor predeterminado |
|---|---|---|
rendition | Default, Dark, TintedLight, TintedDark, ClearLight, ClearDark | El valor predeterminado es Default. |
size | integer | 16–1024 px, el valor predeterminado es 512. |
inline | boolean | El valor predeterminado es true; incluye el PNG como imagen MCP cuando es verdadero. |
tintColor | number | Opcional, 0–1. Se pasa al renderizador de Apple. |
tintStrength | number | Opcional, 0–1. Se pasa al renderizador de Apple. |
opaqueBackground | #RRGGBB | Opcional. Compone el alfa renderizado sobre un PNG RGB opaco. Esta es una vista previa aplanada, no un icono fuente de App Store. |
Después de verificar que los archivos nativos aún coinciden con la especificación gestionada, el renderizador crea un bundle temporal a partir de source.json, y luego invoca Apple ictool con la plataforma configurada del icono. La salida se verifica para la firma PNG y las dimensiones solicitadas antes de guardarse bajo un nombre de archivo generado en el workspace. El renderizado nativo no tiene aproximación ni respaldo de red.
Datos, revisiones y límites de seguridad
- Los nombres son identificadores en minúsculas: una letra seguida de hasta 63 letras minúsculas, dígitos o guiones.
- La creación y el renderizado escriben con modos de archivo restrictivos y nunca sobrescriben un icono existente o un nombre de vista previa.
update_icones de copia en escritura: requiere la revisión SHA-256 actual y un nuevo nombre de salida. Una discrepancia detiene la actualización.- Las rutas del workspace están controladas por el entorno del proceso. Las llamadas a herramientas no pueden seleccionar rutas de archivos arbitrarias.
- El servidor serializa las operaciones, excluye escritores concurrentes del workspace, limita las nuevas escrituras a un workspace con menos de 100 entradas de nivel superior y limita las operaciones de herramientas válidas a 120 por minuto por proceso. Los errores devueltos a través de MCP son deliberadamente genéricos y no revelan rutas locales ni detalles del proceso nativo.
- El servidor no importa ediciones realizadas en la GUI nativa de Icon Composer. Si
icon.jsono un activo esperado se edita fuera de esta herramienta, la siguiente lectura/actualización rechaza el bundle en lugar de revertirlo silenciosamente. No hay importación arbitraria de.iconexistente.
Consulta SECURITY.md para la política de informes del proyecto.
Ejemplos y verificación
El generador de galería lee las tres recetas JSON, crea documentos editables a través de MCP, renderiza las seis apariencias más una vista previa de 32 px, y actualiza los activos verificados. Requiere macOS y una instalación verificada de Apple Icon Composer:
npm run examples
Las comprobaciones regulares no requieren renderizado nativo:
npm run format:check
npm run typecheck
npm run coverage
npm run build
La integración continua ejecuta esas comprobaciones independientes del host en Ubuntu. La galería nativa es una verificación manual en macOS porque Apple Icon Composer no está disponible en ese entorno de CI. Ejecuta npm run test:native en macOS para una verificación MCP real separada de capas PNG, rellenos sólidos, sombras cromáticas, ambas plataformas, todas las apariencias y exportaciones opacas.
Consejos de diseño
- Comienza con una silueta simple que siga siendo legible a 32 px.
- Mantén las formas de vidrio desconectadas en capas separadas para que los efectos de material puedan controlarse de forma independiente.
- Usa como máximo cuatro grupos y mantén el orden de capas explícito.
- Dale al modo oscuro su propio fondo y obra de arte cuando una marca clara pierde contraste.
- Usa grupos planos con
specular: false,blur: 0,translucency: 0,shadow: "none"yglass: falsecuando la obra de arte deba permanecer visualmente estable. - Inspecciona tanto la vista previa más pequeña como un render nativo grande antes de distribuir un icono.
Solución de problemas
| Síntoma | Resolución |
|---|---|
| El servidor sale antes de que aparezcan las herramientas | Establece un ICON_WORKSPACE absoluto; usa Node 24+ y ejecuta npm ci y luego npm run build. El directorio y los archivos gestionados deben ser propiedad de tu cuenta y no ser escribibles por grupo/mundo. |
composer_status informa no disponible | Instala Apple Icon Composer. El valor predeterminado es la copia dentro de /Applications/Xcode.app. Para una copia independiente, establece ICON_COMPOSER_APP=/Applications/Icon\ Composer.app en tu shell, o el valor literal equivalente en el objeto env del host. Las restricciones de sandbox/confianza del sistema operativo también pueden impedir la verificación. |
| El nombre del icono ya existe | Elige un nombre nuevo; usa read_icon y update_icon para conservar el historial de revisiones. |
| El documento nativo fue modificado / archivos inesperados | Conserva la copia manual. Crea un nuevo icono gestionado usando tu especificación deseada. No elimines source.json ni almacenes archivos no relacionados dentro de un paquete gestionado. |
| Espacio de trabajo ocupado después de un bloqueo | Detén todos los procesos que usen ese espacio de trabajo. Inspecciona y elimina solo su directorio .operation-lock obsoleto; archiva los directorios temporales .render-* sobrantes antes de reiniciar. No elimines el bloqueo de un escritor activo. |
| Límite del espacio de trabajo alcanzado | Archiva iconos/vistas previas más antiguos fuera del espacio de trabajo activo, o configura un nuevo espacio de trabajo dedicado. No existe una herramienta de eliminación. |
| SVG rechazado | Exporta trazados/formas simples con atributos de presentación en línea. Convierte el texto a trazados en tu editor de arte; elimina CSS, imágenes incrustadas, referencias externas y filtros. |
| PNG rechazado | Exporta un PNG sRGB estático, no entrelazado, de hasta 1024 px por lado y 1 MiB. |
| La exportación opaca falla en un render detallado | El aplanado actualmente acepta PNG nativos de hasta 1 MiB; la ruta de vista previa ordinaria permite 6 MiB. Prueba con una vista previa más pequeña. |
| El vidrio se ve unido o inesperado | Coloca formas desconectadas en capas separadas y compara las seis representaciones nativas. |
El formato de documento nativo no es una API pública de Apple versionada. La compatibilidad se verifica contra el renderizador instalado; una futura actualización de Apple puede requerir un cambio de mapeo. El paquete no automatiza la integración del proyecto Xcode, no compila catálogos de activos ni exporta un icono fuente de App Store sin máscara. opaqueBackground aplana la vista previa renderizada, incluida su silueta redondeada.
Arquitectura
MCP host or included CLI client
→ stdio transport and strict schemas
→ workspace ownership, revision and file checks
→ validated SVG/PNG assets + editable native .icon
→ verified Apple ictool → bounded PNG response
La compilación verifica tipos con TypeScript y agrupa el servidor y la CLI con esbuild en dist/server.js y dist/client.js. Las importaciones de origen usan el alias @/ sin extensión para src/; la compilación resuelve estas importaciones. Las dependencias de tiempo de ejecución permanecen instaladas a través de npm.
El tiempo de ejecución usa los paquetes oficiales de servidor/cliente MCP, Zod, Saxes y PNGJS. No hay un constructor de comandos de shell, servidor HTTP, base de datos, servicio en segundo plano ni binario de Apple incluido. Los módulos de origen, las pruebas y los ejemplos reproducibles están incluidos en este repositorio; AGENTS.md mapea sus responsabilidades.
Contribuciones
Lee CONTRIBUTING.md antes de abrir un cambio. El repositorio está licenciado bajo la Licencia MIT.