Skip to content

O formato .adapp

A analogia do instalador

Um .adapp ("Atende Direito App") é um instalador de provider MCP. Em vez de cadastrar um servidor MCP na mão — endpoint, tools, secrets, ícone — você empacota tudo isso num único arquivo .zip com extensão .adapp e importa de uma vez no catálogo global da plataforma.

É o mecanismo de portabilidade e distribuição de integrações MCP curadas: quem empacota gera o pacote uma vez, quem importa publica a integração pronta para todos os workspaces usarem.

Dica

Se você só quer conectar um servidor MCP ao seu workspace, não precisa de .adapp — cadastre um servidor customizado direto (veja Cadastrar MCP Server). O .adapp existe para quando você quer publicar uma integração no catálogo global.

Formato atual

A versão vigente do formato é adapp/v1, declarada no campo format do manifest.json.

Estrutura interna do ZIP

O layout dentro do .adapp muda conforme o transport declarado no manifest.

Transport http ou sse

text
pacote.adapp (ZIP)
├── manifest.json          (obrigatório)
├── icon.png               (opcional; png/jpg/jpeg/webp)
└── tools/
    ├── crawl.json          (uma tool por arquivo)
    ├── search.json
    └── ...

Cada arquivo em tools/ descreve uma tool: name, description, inputSchema, required_secrets e, opcionalmente, um http_binding (ver Manifesto → http_binding).

Transport openapi

text
pacote.adapp (ZIP)
├── manifest.json          (obrigatório)
├── icon.png               (opcional)
└── openapi.json           (spec OpenAPI completo)

No modo openapi não existe pasta tools/ — as tools são derivadas do spec no momento do import (cada combinação path + método vira uma tool).

Ciclo de vida

text
Empacotar (mcp:pack-app)  →  .adapp  →  Importar (POST /mcp/apps/import)  →  Catálogo global  →  Usar no fluxo
  1. Um desenvolvedor empacota um provider MCP (existente no catálogo ou a partir de um spec OpenAPI) com php artisan mcp:pack-app.
  2. O comando gera o arquivo .adapp.
  3. Um admin importa o pacote via POST /api/v1/mcp/apps/import.
  4. A integração passa a existir no catálogo MCP global, visível para todos os workspaces.
  5. Qualquer workspace pode cadastrar um servidor a partir dessa entrada e usá-la no Flow Builder.

Checksum: por que existe

Todo manifest.json carrega um campo checksum no formato sha256:<64 hex>. Ele é calculado a partir do conteúdo canônico do manifest, do hash de cada arquivo de tool (ou do openapi.json) e do hash do ícone. No import, esse checksum é recalculado e comparado em tempo constante — qualquer byte alterado no pacote invalida a verificação e o import é rejeitado.

Isso garante que o pacote que chega até o import é exatamente o que o empacotador gerou — sem adulteração no caminho.

Próximos passos