Icon Composer MCP
Ferramentas MCP locais para documentos editáveis do Apple Icon Composer e visualizações nativas de aparência.
Documentação
Icon Composer MCP
Icon Composer MCP (icon-composer-kit) é um servidor MCP local para criar, inspecionar, revisar e renderizar documentos editáveis do Apple Icon Composer .icon. Ele mantém o espaço de trabalho explícito e local, valida o material gráfico antes de gravá-lo e delega visualizações ao renderizador assinado do Icon Composer da Apple quando disponível.
Ele é intencionalmente um compositor de ícones. Aceita arte estática em SVG ou PNG e organiza essa arte em grupos editáveis, camadas, materiais, preenchimentos, posições e especializações de aparência. Não gera arte, não vetoriza imagens raster, não baixa ativos nem chama um serviço de rede.
Galeria de visualizações
Estas visualizações foram produzidas a partir das receitas incluídas com o renderizador nativo do Apple Icon Composer. Cada exemplo tem um pacote editável correspondente em examples/.
| Orbit | Bloom | Prism |
|---|---|---|
Cada receita pode ser renderizada em todas as seis aparências suportadas:
| Exemplo | Padrão | Escuro | Tinted Light | Tinted Dark | Clear Light | Clear Dark |
|---|---|---|---|---|---|---|
| Orbit | 512 | 512 | 512 | 512 | 512 | 512 |
| Bloom | 512 | 512 | 512 | 512 | 512 | 512 |
| Prism | 512 | 512 | 512 | 512 | 512 | 512 |
| Padrão | Escuro | Tinted Light | Tinted Dark | Clear Light | Clear Dark |
|---|---|---|---|---|---|
As visualizações pequenas mostram a verificação de 32 px usada pelo fluxo de trabalho dos exemplos: Orbit, Bloom e Prism.
Requisitos
- Node.js 24 ou mais recente.
- npm e o
package-lock.jsonincluído. - Um diretório absoluto dedicado e gravável para
ICON_WORKSPACE. - macOS com Apple Icon Composer para
composer_statusreportar disponibilidade e pararender_iconproduzir visualizações nativas. As operações de documento suportam sistemas de arquivos locais macOS e Linux. O Windows não é suportado pelas verificações de propriedade. A ferramenta nativa verificada atualmente reporta a versão 1.6 no ambiente de desenvolvimento; a disponibilidade é verificada em tempo de execução.
O servidor verifica o requisito de assinatura da Apple e o identificador com.apple.IconComposerTool esperado antes de invocar ictool. ICON_COMPOSER_APP pode apontar para um pacote .app absoluto quando o renderizador estiver instalado fora de seu local padrão; valores malformados desabilitam a renderização nativa.
Instalar e executar localmente
Clone o repositório e depois compile o pacote 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"
O servidor fala MCP via stdio. Mantenha ICON_WORKSPACE dedicado a ícones criados por este servidor. A raiz do espaço de trabalho é uma configuração do operador, não um argumento de ferramenta, e deve ser um diretório real absoluto abaixo da raiz do sistema de arquivos.
Instalar no seu host MCP
Compile uma vez com npm ci e npm run build, depois escolha seu host abaixo. Estas são instalações locais: execute o host no Mac que tem o Icon Composer para renderizar visualizações. O Linux suporta apenas operações de documento. Sessões de codificação somente em navegador e remotas não podem iniciar o renderizador no seu Mac por meio desta configuração stdio.
Substitua /absolute/path/icon-composer-kit pelo seu checkout e /absolute/path/icon-workspace por um diretório de saída dedicado. Para aplicativos de desktop, substitua /absolute/path/node pelo resultado de command -v node (Node 24+). Caminhos JSON e TOML são literais: não coloque ~ ou $PWD neles. Mescle entradas na configuração existente em vez de substituir outros servidores.
| Host | Configuração | Verificação |
|---|---|---|
| Codex CLI | codex mcp add ou TOML | codex mcp get e /mcp |
| Codex app | TOML local compartilhado do Codex | Reinicie o app, inicie uma nova tarefa local |
| Claude Code | claude mcp add | claude mcp get e /mcp |
| Claude Desktop — Chat | Configuração JSON do desktop | Reinicie o app, inicie um novo Chat |
| Claude Cowork | Wrapper de plugin local manual | Habilite o plugin e verifique suas ferramentas |
| Cursor | mcp.json de usuário ou projeto | Habilite o servidor nas configurações de MCP |
| VS Code | .vscode/mcp.json | Inicie o servidor, selecione ferramentas de chat |
Nenhum pacote npm publicado ou extensão de um clique é assumido por estas instruções. Mantenha configurações específicas da máquina e qualquer ZIP de plugin que você personalizar fora deste repositório público.
Codex CLI
Registre para seu usuário:
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
Inicie uma nova sessão codex e use /mcp para verificar a conexão. Para remover o registro, execute codex mcp remove icon-composer-kit; os arquivos de ícone permanecem no disco.
Alternativamente, mescle isto em ~/.codex/config.toml. Para um projeto confiável apenas, use o .codex/config.toml desse projeto:
[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"
Documentação oficial do MCP do Codex.
Codex app
O app e a CLI compartilham a configuração de MCP no mesmo host local do Codex. Use o registro da CLI acima, ou adicione o mesmo bloco TOML a ~/.codex/config.toml se você não usa a CLI. Reinicie o app e abra uma nova tarefa local. Peça para chamar composer_status, depois list_icons.
Use a configuração no Mac que executa a tarefa, não um host remoto separado. Para desinstalar, remova o bloco TOML do servidor e sua subtabela de ambiente, depois reinicie o app. Orientação oficial de configuração compartilhada.
Claude Code
Use o escopo de usuário para acesso em seus projetos:
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
Inicie uma nova sessão do Claude Code e execute /mcp. Todas as seis ferramentas devem estar disponíveis. Para restringir a instalação ao seu projeto atual sem compartilhar seus caminhos, substitua --scope user por --scope local. --scope project grava configuração .mcp.json compartilhada; evite confirmar caminhos absolutos pessoais lá.
Remova com claude mcp remove --scope user icon-composer-kit, usando o mesmo escopo em que instalou. Guia oficial do MCP do Claude Code.
Claude Desktop — Chat
No macOS, abra Configurações → Desenvolvedor → Editar Configuração do Claude Desktop, ou edite ~/Library/Application Support/Claude/claude_desktop_config.json. Mescle 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" }
}
}
}
Saia completamente e reabra o Claude Desktop. Em um novo Chat, verifique as ferramentas disponíveis e solicite composer_status. Remova a entrada e reinicie para desinstalar. Esta é uma configuração manual de stdio, não uma instalação de extensão de desktop .mcpb. Configuração oficial de servidor local.
Claude Cowork
Instalação manual de plugin local. O Claude documenta servidores MCP locais em plugins de desktop, mas diz explicitamente que servidores legados claude_desktop_config.json não estão disponíveis no Cowork. Use o mecanismo de plugin em vez de assumir que a configuração do Chat é transferida. A execução de plugin local requer o aplicativo de desktop e pode ser desabilitada pela política da organização. Veja arquitetura do Cowork e a limitação de configuração legada.
Para preparar um wrapper local da máquina, crie esta pasta fora do checkout:
icon-composer-local/
├── .claude-plugin/
│ └── plugin.json
└── .mcp.json
Coloque isto em .claude-plugin/plugin.json:
{
"name": "icon-composer-local",
"version": "1.0.1",
"description": "Local Apple Icon Composer tools"
}
Coloque o JSON da seção Claude Desktop — Chat em .mcp.json, com seus caminhos absolutos reais. O wrapper referencia seu checkout compilado existente e dependências; ele não os agrupa nem baixa. Este layout segue a referência oficial de plugin MCP.
Do diretório do wrapper, inclua ambas as entradas ocultas no arquivo:
zip -r ../icon-composer-local.zip .claude-plugin .mcp.json
No Claude Desktop, abra Cowork → Personalizar → Plugins e use a opção de upload de plugin personalizado para instalar o ZIP. Habilite-o e inicie uma nova tarefa. Peça por composer_status e list_icons; os nomes das ferramentas do plugin podem ter um prefixo de namespace. Guia oficial de instalação de plugins.
Se uploads personalizados/execução local de MCP não estiverem disponíveis, use Claude Code ou Claude Desktop Chat. Não insira um caminho de sistema de arquivos no campo de URL do conector remoto. Para desinstalar, remova o wrapper de Plugins; retenha ou arquive o espaço de trabalho de ícones separado conforme desejado. O ZIP personalizado contém caminhos locais, então mantenha-o privado.
Cursor
Para seu usuário, mescle o seguinte em ~/.cursor/mcp.json. Para um projeto, use .cursor/mcp.json nesse projeto:
{
"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" }
}
}
}
Abra os controles de MCP do Cursor em Configurações / Personalizar, habilite o servidor e recarregue a janela se ele não conectou. No chat do Agent, peça para chamar composer_status. Remova a entrada JSON para desinstalar. Guia oficial de configuração do Cursor.
VS Code
O VS Code usa um objeto servers em vez de mcpServers. Mescle isto em .vscode/mcp.json, ou execute MCP: Abrir Configuração do Usuário para uma instalação ampla do usuário:
{
"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" }
}
}
}
Use a ação Iniciar do editor para o servidor e aceite seu prompt de confiança. Selecione suas ferramentas no chat do agente e solicite composer_status. Para desinstalar, pare o servidor e remova sua entrada. Em uma janela remota do VS Code, garanta que o servidor esteja configurado para executar no seu Mac local se você precisar de renderização nativa. Guia oficial do MCP do VS Code.
Verificar qualquer instalação
Pergunte ao host: “Use Icon Composer Kit para chamar composer_status e list_icons.” Uma resposta de ferramenta bem-sucedida confirma a conexão. composer_status retornando available: false significa que o MCP está conectado, mas o renderizador da Apple não pôde ser verificado; a criação de documentos ainda pode funcionar.
Se nenhuma ferramenta aparecer, execute o cliente incluído independentemente:
ICON_WORKSPACE=/absolute/path/icon-workspace \
/absolute/path/node /absolute/path/icon-composer-kit/dist/client.js tools
Isto deve listar seis ferramentas. Depois verifique os logs do seu host, caminhos absolutos literais, versão do Node e propriedade do espaço de trabalho. Se o Icon Composer estiver instalado separadamente do Xcode, adicione ICON_COMPOSER_APP à mesma configuração de ambiente do servidor com o caminho absoluto .app.
Estas receitas foram verificadas contra a documentação oficial em 5 de setembro de 2026 e a ajuda da CLI instalada. Use a documentação do host vinculada se os rótulos de menu mudarem.
Cliente MCP de linha de comando
O cliente compilado é um pequeno chamador de diagnóstico. Ele inicia um servidor filho com o ICON_WORKSPACE atual, lista as ferramentas registradas ou chama uma ferramenta usando um arquivo JSON.
export ICON_WORKSPACE=/absolute/path/icon-workspace
node dist/client.js tools
node dist/client.js call list_icons
Chamadas sem argumentos podem omitir o arquivo JSON:
node dist/client.js call composer_status
O cliente aceita entrada JSON de até 2 MiB e imprime o resultado do MCP como JSON. Falhas de ferramenta retornam um status de saída diferente de zero. ICON_WORKSPACE é obrigatório mesmo para tools porque o cliente sempre inicia o servidor local.
Um primeiro ícone
O examples/orbit.json incluído é uma solicitação completa de create_icon. Ele usa um fundo de duas paradas, dois grupos, camadas SVG estáticas, material de vidro e uma especialização de fundo escuro.
export ICON_WORKSPACE=/absolute/path/icon-workspace
node dist/client.js call create_icon examples/orbit.json
Para uma prévia escura, salve isto como render.json no checkout (ou qualquer arquivo local passado explicitamente ao cliente):
{ "name": "orbit", "rendition": "Dark", "size": 512, "inline": false }
node dist/client.js call render_icon render.json
O caminho do PNG no resultado é relativo a ICON_WORKSPACE. Abra orbit.icon no Icon Composer da Apple para inspecionar suas camadas interativamente. Salve experimentos manuais do editor como uma cópia separada; eles não são importados para a especificação gerenciada.
A resposta contém o caminho lógico do pacote (orbit.icon) e uma revisão SHA-256. A criação nunca sobrescreve um nome de ícone existente. Para revisar um ícone, chame read_icon, copie seu spec e revision completos, então chame update_icon com um novo outputName. O pacote original permanece inalterado.
Superfície do MCP
O servidor registra seis ferramentas e um prompt. As respostas das ferramentas são texto JSON, exceto render_icon, que também pode incluir uma imagem PNG quando inline for verdadeiro.
| Ferramenta | Propósito | Grava no workspace? |
|---|---|---|
composer_status | Verifica se o renderizador verificado da Apple está disponível; pode retornar sua versão curta numérica. | Não |
list_icons | Lista nomes válidos de pacotes de ícones no workspace configurado. | Não |
create_icon | Valida uma especificação completa e cria um novo pacote .icon editável. | Sim |
read_icon | Lê a especificação gerenciada e sua revisão. | Não |
update_icon | Verifica uma revisão esperada e cria uma especificação revisada sob um novo nome. | Sim |
render_icon | Renderiza uma aparência PNG nativa, salva-a com um nome de arquivo único e, opcionalmente, a retorna inline. | Sim |
O prompt compose-icon fornece uma lista de verificação de composição: uma tela de 1024 por 1024, grupos e camadas de frente para trás, formas de vidro separadas, arte escura quando útil, seis renderizações de aparência e inspeção de 32 px/1024 px. O texto do prompt é orientação; os esquemas das ferramentas permanecem autoritativos.
Referência da especificação
create_icon aceita {name, spec}. update_icon requer {name, outputName, expectedRevision, spec}. expectedRevision é a revisão hexadecimal de 64 caracteres retornada por read_icon. Ambos aceitam objetos JSON estritos. Campos desconhecidos são rejeitados. A especificação gerenciada atual é armazenada como source.json dentro de cada pacote e é a autoridade usada por read_icon e atualizações posteriores.
Campos do ícone
| Campo | Tipo | Restrições e padrão |
|---|---|---|
background | string ou {top,bottom} | Obrigatório. Cores são #RRGGBB de seis dígitos; um objeto é um gradiente vertical. |
darkBackground | Igual a background | Preenchimento opcional para aparência escura. |
platform | "iOS" | "macOS" | Padrão é "iOS". |
groups | Array | Obrigatório; 1–4 grupos. |
Campos do grupo
| Campo | Tipo | Restrições e padrão |
|---|---|---|
name | string | Obrigatório, 1–80 caracteres; sem caracteres de controle. |
layers | Array | Obrigatório; 1–32 camadas. Grupos e camadas são de frente para trás. |
specular | boolean | Padrão é false. |
blur | number | 0–1, padrão é 0. |
translucency | number | 0–1, padrão é 0. |
shadow | "none" | "neutral" | "chromatic" | Padrão é "none". |
shadowOpacity | number | 0–1, padrão é 0. |
lighting | "combined" | "individual" | Padrão é "combined". |
Campos da camada
| Campo | Tipo | Restrições e padrão |
|---|---|---|
name | string | Obrigatório, 1–80 caracteres; sem caracteres de controle. |
svg | string | Exatamente uma fonte primária é obrigatória: SVG estático de até 256 KiB. |
pngBase64 | string | Fonte primária alternativa: PNG não entrelaçado em base64, no máximo 1 MiB e 1024 px por lado. Os pixels são re-codificados sem metadados. |
darkSvg | string | Especialização opcional de arte escura, com as mesmas regras de SVG. |
darkPngBase64 | string | Especialização opcional de PNG escuro, com as mesmas regras de PNG. |
glass | boolean | Padrão é false. |
opacity | number | 0–1, padrão é 1. |
scale | number | 0.01–4, padrão é 1. |
x, y | number | −1024–1024 pontos, cada um com padrão 0. |
O JSON completo do ícone deve ter no máximo 2 MiB e conter no máximo 64 ativos de arte, incluindo especializações escuras. O SVG aceita uma linguagem estática deliberadamente pequena de geometria, gradientes locais, máscaras e caminhos de recorte, com entrada bruta limitada a 256 KiB, 4096 elementos e profundidade 32. URLs externas, URLs de dados, scripts, atributos de evento, estilos, declarações e elementos não suportados são rejeitados. A entrada PNG deve ser um PNG válido, não animado, não entrelaçado, com CRCs intactos; metadados acessórios são removidos. O transporte MCP reserva até 3 MiB por quadro.
As cores de fundo e SVG sem etiqueta são emitidas como valores Display P3 no documento nativo. Os pixels PNG não são convertidos de cor e os perfis incorporados são removidos; exporte a arte PNG como sRGB antes de importá-la.
Renderização
render_icon recebe name, rendition, size, inline, tintColor opcional, tintStrength opcional e opaqueBackground opcional.
| Campo | Tipo | Restrições e padrão |
|---|---|---|
rendition | Default, Dark, TintedLight, TintedDark, ClearLight, ClearDark | Padrão é Default. |
size | inteiro | 16–1024 px, padrão é 512. |
inline | booleano | Padrão é true; inclui o PNG como uma imagem MCP quando verdadeiro. |
tintColor | número | Opcional, 0–1. Passado ao renderizador da Apple. |
tintStrength | número | Opcional, 0–1. Passado ao renderizador da Apple. |
opaqueBackground | #RRGGBB | Opcional. Compõe o alfa renderizado sobre um PNG RGB opaco. Esta é uma prévia achatada, não um ícone de origem da App Store. |
Após verificar se os arquivos nativos ainda correspondem à especificação gerenciada, o renderizador cria um pacote temporário a partir de source.json, então invoca o ictool da Apple com a plataforma configurada do ícone. A saída é verificada quanto à assinatura PNG e às dimensões solicitadas antes de ser salva sob um nome de arquivo gerado no workspace. A renderização nativa não tem aproximação ou fallback de rede.
Dados, revisões e limites de segurança
- Nomes são identificadores minúsculos: uma letra seguida de até 63 letras minúsculas, dígitos ou hífens.
- Criação e renderização gravam com modos de arquivo restritivos e nunca sobrescrevem um ícone existente ou nome de arquivo de prévia.
update_iconé copy-on-write: requer a revisão SHA-256 atual e um novo nome de saída. Uma incompatibilidade interrompe a atualização.- Caminhos do workspace são controlados pelo ambiente do processo. Chamadas de ferramenta não podem selecionar caminhos de arquivo arbitrários.
- O servidor serializa operações, exclui gravadores concorrentes do workspace, limita novas gravações a um workspace com menos de 100 entradas de nível superior e limita operações válidas de ferramenta a 120 por minuto por processo. Erros retornados via MCP são deliberadamente genéricos e não divulgam caminhos locais ou detalhes do processo nativo.
- O servidor não importa edições feitas na GUI nativa do Icon Composer. Se
icon.jsonou um ativo esperado for editado fora desta ferramenta, a próxima leitura/atualização rejeita o pacote em vez de revertê-lo silenciosamente. Não há importação arbitrária de.iconexistente.
Veja SECURITY.md para a política de relatórios do projeto.
Exemplos e verificação
O gerador de galeria lê as três receitas JSON, cria documentos editáveis por meio do MCP, renderiza todas as seis aparências mais uma prévia de 32 px e atualiza os ativos verificados. Ele requer macOS e uma instalação verificada do Apple Icon Composer:
npm run examples
As verificações regulares não exigem renderização nativa:
npm run format:check
npm run typecheck
npm run coverage
npm run build
A integração contínua executa essas verificações independentes do host no Ubuntu. A galeria nativa é uma verificação manual no macOS porque o Apple Icon Composer não está disponível nesse ambiente de CI. Execute npm run test:native no macOS para uma verificação real separada do MCP de camadas PNG, preenchimentos sólidos, sombras cromáticas, ambas as plataformas, todas as aparências e exportações opacas.
Dicas de design
- Comece com uma silhueta simples que permaneça legível a 32 px.
- Mantenha formas de vidro desconectadas em camadas separadas para que os efeitos de material possam ser controlados de forma independente.
- Use no máximo quatro grupos e mantenha a ordem das camadas explícita.
- Dê ao modo escuro seu próprio fundo e arte quando uma marca clara perder contraste.
- Use grupos planos com
specular: false,blur: 0,translucency: 0,shadow: "none"eglass: falsequando a arte deve permanecer visualmente estável. - Inspecione tanto a menor prévia quanto uma renderização nativa grande antes de distribuir um ícone.
Solução de problemas
| Sintoma | Resolução |
|---|---|
| O servidor sai antes que as ferramentas apareçam | Defina um ICON_WORKSPACE absoluto; use Node 24+ e execute npm ci e depois npm run build. O diretório e os arquivos gerenciados devem ser de sua propriedade e não graváveis por grupo/outros. |
composer_status relata indisponível | Instale o Apple Icon Composer. O padrão é a cópia dentro de /Applications/Xcode.app. Para uma cópia independente, defina ICON_COMPOSER_APP=/Applications/Icon\ Composer.app no seu shell, ou o valor literal equivalente no objeto env do host. Restrições de sandbox/confiança do sistema operacional também podem impedir a verificação. |
| O nome do ícone já existe | Escolha um novo nome; use read_icon e update_icon para preservar o histórico de revisões. |
| Documento nativo foi modificado / arquivos inesperados | Preserve a cópia manual. Crie um novo ícone gerenciado usando sua especificação desejada. Não remova source.json nem armazene arquivos não relacionados dentro de um pacote gerenciado. |
| Workspace ocupado após uma falha | Pare todos os processos que usam esse workspace. Inspecione e remova apenas o diretório .operation-lock obsoleto; arquive os diretórios temporários .render-* restantes antes de reiniciar. Não remova o bloqueio de um gravador ativo. |
| Limite do workspace atingido | Arquive ícones/prévias mais antigos fora do workspace ativo, ou configure um novo workspace dedicado. Não há ferramenta de exclusão. |
| SVG rejeitado | Exporte caminhos/formas simples com atributos de apresentação inline. Converta texto em caminhos no seu editor de arte; remova CSS, imagens incorporadas, referências externas e filtros. |
| PNG rejeitado | Exporte um PNG sRGB estático, não entrelaçado, de até 1024 px por lado e 1 MiB. |
| A exportação opaca falha em uma renderização detalhada | O achatamento atualmente aceita PNGs nativos de até 1 MiB; o caminho de prévia comum permite 6 MiB. Tente uma prévia menor. |
| O vidro parece unido ou inesperado | Coloque formas desconectadas em camadas separadas e compare todas as seis versões nativas. |
O formato de documento nativo não é uma API pública versionada da Apple. A compatibilidade é verificada contra o renderizador instalado; uma futura atualização da Apple pode exigir uma mudança de mapeamento. O pacote não automatiza a integração de projetos Xcode, não compila catálogos de ativos nem exporta um ícone de origem da App Store sem máscara. opaqueBackground achata a prévia renderizada, incluindo sua silhueta arredondada.
Arquitetura
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
O build verifica tipos com TypeScript e empacota o servidor e a CLI com esbuild em dist/server.js e dist/client.js. As importações de origem usam o alias @/ sem extensão para src/; o build resolve essas importações. As dependências de tempo de execução permanecem instaladas via npm.
O tempo de execução usa os pacotes oficiais de servidor/cliente MCP, Zod, Saxes e PNGJS. Não há construtor de comandos de shell, servidor HTTP, banco de dados, serviço em segundo plano ou binário Apple empacotado. Módulos de origem, testes e exemplos reproduzíveis estão incluídos neste repositório; AGENTS.md mapeia suas responsabilidades.
Contribuindo
Leia CONTRIBUTING.md antes de abrir uma alteração. O repositório é licenciado sob a Licença MIT.