MCP do Kasy
Peça em linguagem natural. O assistente prepara a máquina, cria o app e liga features sem você digitar no terminal.
O MCP do Kasy (kasy-mcp) é o caminho principal de uso do kit. Em vez de digitar kasy no terminal, você conversa com o assistente (Cursor, Claude Code, Claude Desktop…) e ele chama as tools certas.
Pense no MCP como um plug: de um lado a IA, do outro a CLI kasy. Por baixo é a mesma ferramenta (mesma licença, mesmos comandos). Muda só como você fala com ela.
Ainda não ligou o MCP? Comece por Instalar o Kasy. Esta página explica o que ele faz e o que cada tool cobre.
A proposta
Hoje o MCP já cobre o fluxo completo do dia a dia: preparar a máquina, criar projeto, rodar e resetar o app, adicionar ou remover feature, atualizar o kit, trocar cor/splash/ícone, ler o design system antes de montar uma tela, configurar credenciais (Apple, Facebook, assinatura iOS/Android, Codemagic, RevenueCat/Sentry/Mixpanel/AdMob…), publicar nas lojas (iOS e Android, local ou via Codemagic), configurar domínio e checar/consertar o projeto.
A direção do produto é ir além: em poucas semanas, o MCP deve conseguir fazer tudo conectado ao fluxo da Kasy pelo chat, sem a pessoa precisar ficar digitando comando no terminal. Você pede; o assistente executa.
A CLI no terminal continua existindo. Quem preferir digitar kasy usa o instalador. Os dois caminhos usam a mesma kasy-cli por baixo.
O que o MCP faz (e o que não faz)
| Faz | Não faz |
|---|---|
Roda a kasy-cli de verdade na sua máquina | Reimplementar a CLI (zero lógica duplicada) |
Diagnostica e tenta corrigir o ambiente (doctor + install) | Pedir sudo ou apagar disco (denylist) |
| Lê o design system do projeto aberto ao vivo | Inventar cor/fonte/componente genérico |
Reporta problema resolvido pra melhorar o doctor | Enviar nome, e-mail, chave de licença ou path completo |
Roda local (kasy mcp setup instala kasy-mcp global na sua máquina). Não há servidor hospedado pela Kasy no meio. O pacote já traz a kasy-cli pro assistente. Detalhe em Instalar o Kasy.
Tools
Cada tool é um pedido que o assistente pode fazer. Você não chama pelo nome: fala em português e o modelo escolhe.
Preparar e consertar a máquina
| Tool | Por baixo | Quando usar |
|---|---|---|
prepare_machine | kasy doctor | "Prepara minha máquina com o Kasy" |
run_setup_command | um comando de shell | O assistente instala o que falta (Homebrew, choco, apt, npm -g…) |
check_kasy_updates | checagem npm + versão da sessão MCP | Antes de create_project: tem versão nova? |
upgrade_kasy | npm install -g kasy-cli@latest kasy-mcp@latest | Instala a versão nova (depois reinicie o app do assistente) |
O loop esperado: prepare_machine → se faltar algo, run_setup_command → check_kasy_updates → se precisar, upgrade_kasy e reinício do app do assistente → prepare_machine de novo, até passar. O assistente não deve só diagnosticar e parar.
Criar e gerenciar o projeto
| Tool | Por baixo | Quando usar |
|---|---|---|
create_project | kasy new (modo Rápido) | "Cria um projeto Kasy com Firebase" |
create_project_status | (poll) | Depois de create_project ou timeout -32001: ver se o scaffold terminou |
configure_backend | kasy backend | Conecta Firebase/Supabase depois de create_project com configureLater: true (ou projeto criado com kasy new --configure-later) |
list_features | kasy features | Ver o que existe antes de adicionar |
add_feature | kasy add <feature> | "Adiciona drive no meu projeto" (também funciona para revenuecat, ads, onboarding, sentry, kanban...) |
list_flows | kasy add flows | Lista os Kasy Flows (telas e fluxos prontos) que dá para instalar |
add_flow | kasy add flows <id> | "Instala o flow de login por telefone": instala uma tela ou fluxo pronto do catálogo, já no design system do projeto |
remove_feature | kasy remove <feature> | "Remove ads do meu projeto" |
check_status | kasy status | Backend, features e credenciais pendentes |
check_project | kasy check | Diagnóstico de push/config (fix opcional) |
configure_status | kasy configure --status | Lista o que falta preencher (só leitura) |
update_project | kasy update [feature] | "Atualiza meu projeto pro kit mais novo" |
deploy_backend | kasy deploy (em background) | Deploy Firebase ou Supabase (pode levar vários minutos) |
deploy_backend_status | (poll) | Depois de deploy_backend ou timeout -32001: ver se o deploy terminou |
kanban | kasy kanban <ação> | "O que falta fazer nesse projeto?" / "Cria uma tarefa pra revisar o checkout" |
create_project só cobre o caminho Rápido (não interativo). Antes de perguntar qualquer coisa, o assistente deve te oferecer a escolha entre Rápido (aqui, poucas perguntas) e Avançado (Passo a passo com todas as perguntas, só no terminal com kasy new). Recomenda Rápido, mas nos dois dá pra adicionar ou remover feature depois (kasy add/kasy remove, ou add_feature/remove_feature no chat).
No Rápido, se você já descreveu o produto (barbearia, estoque, delivery), o assistente trata como o app inteiro: resume com você até você dizer que está ok, mostra um plano e só então cria o projeto. O backend é escolhido agora e a conexão remota fica para depois. Se você só pediu o setup da Kasy, ele cria o projeto e para.
No Supabase/API, o assistente pergunta só push (não pergunta Google separado; Google vem ligado por padrão): sem push = sem Firebase companion (Google no scaffold; provedor Enabled no Supabase Auth; credenciais depois com configure_google_login); com push = projeto Firebase companion gratuito (FCM) e Google OAuth pode ser configurado automaticamente nesse passo.
Para não receber uma lista numerada gigante no chat:
- Cursor / Claude Code: o assistente usa AskQuestion (quiz estruturado) e chama
create_projectcomdirectory,backend, região e push já preenchidos. Não chamecreate_projectsem esses campos no Cursor (retornaMISSING_PREFS). - Claude Desktop e outros sem quiz:
create_projectcomuseElicitationForm: truee semdirectory/backendabre o formulário MCP.
Antes de create_project, confirme o alinhamento só se for criar projeto Firebase (backend Firebase, ou Supabase/API com push). O assistente checa com prepare_machine (kasy doctor avisa se as contas divergem). Contas diferentes costumam quebrar a criação nesse caminho; o fix é firebase login --reauth com a conta do gcloud auth login. Supabase/API sem push não precisa de gcloud/Firebase.
Depois de um update_project, se o kit sobrescrever um arquivo que você customizou, o assistente deve reconciliar a sua mudança com o código novo (não descartar em silêncio).
kanban lê e edita o board do projeto (o mesmo que a tela Kanban do app mostra) sem precisar de senha nova: no Firebase usa seu próprio login gcloud, no Supabase usa a service_role_key do projeto já linkado. Só Firebase e Supabase, backend API REST próprio não é suportado (não tem como assumir uma credencial de admin genérica). Veja Kanban.
Rodar e resetar o app
| Tool | Por baixo | Quando usar |
|---|---|---|
run_app | kasy run (em background) | "Rode o app" |
reload_app | dev bridge (/dev/reload ou /dev/restart) | Depois de editar Dart com kasy run --web rodando (hot reload/restart) |
clear_web_storage | kasy clear-web | "Limpa o navegador" / testar onboarding de novo na web |
stop_app | para o pid do mcp-run | "Para o app" |
reset_app | kasy reset | Testar onboarding/push do zero (simulador ou web) |
Quando você pede "rode o app". O assistente deve usar quiz estruturado (não lista em markdown) para:
- Plataforma: iOS, Android ou web
- Se for web:
- Padrão: só devolve a URL
http://localhost:5555 openBrowser=true: abre no navegador padrão do sistema (--open-browser)flutterChrome=true: Chrome isolado do Flutter (--open)freshStorage=true: limpa localStorage, sessionStorage e IndexedDB ao abrir (--fresh, inclui sessão Firebase Auth). Combine comopenBrowsere device preview em aba iOS/Android/iPad pra testar onboarding como primeira vez
- Padrão: só devolve a URL
Para limpar com o app já rodando: clear_web_storage ou reset_app com platform=web.
Não use run_kasy_command pra kasy run. Essa tool espera o processo terminar e mataria a sessão.
Branding (Personalização)
| Tool | Por baixo | Quando usar |
|---|---|---|
set_primary_color | kasy color | "Muda a cor principal pra #0553B1" |
set_icon | kasy icon --image | "Troca o ícone do app" |
set_splash | kasy splash --light/--dark | "Troca as logos da splash" |
set_favicon | kasy favicon --image | "Troca o favicon" |
rebrand_project | rebrand guiado: pergunta, mostra um preview e só aplica com o seu sim (kasy color + icon + splash + favicon + notifications text) | "Faz o rebrand do app com essa cor e logo" |
rename_app | kasy rename (prévia primeiro, aplica com confirmed: true) | "Troca o nome do app para Lanchonete Boa" |
Orquestração
Três tools guiam a IA. As instruções longas saem pelo MCP, só com assinatura ativa, e melhoram sem você atualizar o kasy-mcp. Sem assinatura ou sem internet, a tool avisa e não entrega o texto. Elas não são uma página pública nem um arquivo do projeto.
| Tool | O que faz |
|---|---|
rebrand_project | Pergunta o essencial (documento de marca, logo, tipografia, arquivo Figma ou Pen), mostra um preview e só aplica depois do seu sim |
create_screens | Cria uma ou várias telas e as navegações. Constrói na hora. Só pergunta se faltar um fato que impede a tela |
finalize_project | Parte de uma ideia, reescreve um resumo curto até você dizer que está ok, mostra um plano de execução e, com o seu sim, cria o projeto, abre o app no navegador ao lado e vai montando as telas na sua frente |
O rebrand espera o sim do preview. Uma tela sozinha não espera um plano. O plano existe no finalize_project, quando o pedido é o app inteiro. Se você mandou uma imagem, ela vale para o app inteiro: boas-vindas, login, cadastro, perfil, o visual de configurações e o menu nascem dela. A tela de assinatura e o administrativo ficam como o kit. Sem imagem, essas telas base ficam como o kit e só entram as telas do produto. Na verificação (kasy-cli 1.91.0 e kasy-mcp 0.25.0), a ferramenta abre o app, troca claro e escuro, celular e largura larga, compara a cor com a imagem, aperta os toques do plano e roda o analyzer. Um arquivo dizendo que a tela foi vista não passa. A cada tela, o assistente diz o que está fazendo.
Credenciais e integrações
| Tool | Por baixo | Quando usar |
|---|---|---|
configure_apple_web | kasy apple-web | Liga o Sign in with Apple na web (Firebase ou Supabase) |
configure_facebook_login | kasy facebook | Configura o Facebook Login (nativo + backend) |
configure_google_login | kasy google | Google Sign-In (Supabase/API). Depois do create sem push, ou quando o usuário pedir |
setup_social_login | kasy google / kasy facebook / kasy apple-web | Passo a passo do login social no Supabase/API (guia único com o que é automático e o que é manual) |
setup_phone_login | kasy phone | Login por telefone (OTP): check mostra o que falta, enable liga o botão e o provedor Phone, disable esconde o botão. Veja Login por telefone |
set_notification_texts | kasy notifications text | Muda o texto da notificação demo e do lembrete |
configure_ios_signing | kasy ios configure | Instala a API key da App Store Connect (Key ID + Issuer ID + .p8) |
configure_android_signing | kasy android configure | Salva android/key.properties a partir de um keystore já existente |
configure_codemagic | kasy codemagic configure | Liga o token do Codemagic e o app ID do projeto |
configure_project_keys | kasy configure --set | Preenche credenciais (RevenueCat, Sentry, Mixpanel, AdMob, Stripe, App Store ID…), uma ou várias de uma vez |
configure_license | kasy license <chave> | Salva e valida sua chave de licença do Kasy, sem essa tool, create_project/add_feature/etc. falham pedindo a chave |
Essas nove viviam presas ao terminal porque o MCP fecha o stdin (não dá pra responder pergunta por pergunta). O jeito que passou a funcionar: o assistente coleta os valores com quiz estruturado (AskQuestion) ou formulário MCP, depois chama a tool uma vez só com tudo, nada fica esperando resposta no meio do processo. Chaves de licença e OAuth são texto livre, não quiz de múltipla escolha. Nenhuma delas gera credencial nova (keystore, chave de API, app no Meta/Apple/Codemagic): isso continua manual, feito uma vez nos respectivos painéis. configure_license é a exceção: a chave em si vem por email na hora da compra em kasy.dev, não é gerada pela tool.
Publicar (lojas e web)
| Tool | Por baixo | Quando usar |
|---|---|---|
release_ios | kasy ios release | "Publica o iOS" (Mac, com configure + Xcode já feitos) |
build_ios | kasy ios build | IPA sem upload |
clean_ios | kasy ios clean | Limpar build iOS |
release_android | kasy android release | AAB assinado local + abre o Play Console |
build_aab | kasy android build-aab | Só o AAB, sem abrir console |
build_apk_signed | kasy android build-apk-signed | APK release assinado, sideload, lojas alternativas (Amazon, Samsung, F-Droid) |
build_apk | kasy android build-apk | APK de debug, sem assinatura, testar rápido no celular |
codemagic_release | kasy codemagic release | "Publica no Codemagic" (iOS e/ou Android) |
codemagic_status | kasy codemagic status <id> | Acompanhar o build na nuvem |
manage_domain | kasy domain list|add|remove | Domínios autorizados do Auth (web) |
set_release_version | kasy release-version | Versão live nas lojas / force update |
Consertar o projeto (Referência)
| Tool | Por baixo | Quando usar |
|---|---|---|
fix_project | kasy fix pub-get|pods|clean | "Roda pub get" / "reinstala pods" / "faz clean" |
Design system e tela
| Tool | Por baixo | Quando usar |
|---|---|---|
list_components | lê lib/components/ ao vivo | Antes de criar ou editar qualquer tela |
A lista vem do projeto atual, não de um cache. Depois de um rebrand ou kasy update, o conjunto pode mudar. O assistente não deve inventar Material cru (Scaffold, AlertDialog, TextField…) se existir equivalente Kasy.
Validar no navegador (Browser QA)
| Tool | Por baixo | Quando usar |
|---|---|---|
browser_qa_guide | confere a ponte de semantics no projeto + devolve o roteiro de validação | Depois de implementar ou mudar uma tela, antes de dar como pronto |
Flutter Web pinta em canvas, sem a árvore de semantics ligada, um agente de navegador (Cursor, Claude, Playwright) não enxerga botão nem campo, só pixels. O kit já liga isso em debug/profile (ver Guia Web); browser_qa_guide confirma a ponte em lib/main.dart e devolve docs/agent-browser-qa.md. Mapa completo dos arquivos de IA: Orientação para IA.
Importante: o MCP é um processo headless, não abre navegador sozinho. A tool só devolve o roteiro; quem executa é o navegador que o próprio agente já tem (o Browser pane do Claude Code, o navegador do Cursor, etc.).
Qualquer outro comando da CLI
| Tool | Por baixo | Quando usar |
|---|---|---|
list_commands | kasy --help / kasy <cmd> --help | Descobrir flags antes de rodar |
run_kasy_command | kasy <comando> <args> | prepare e outras flags raras (nunca license nem upgrade) |
read_kasy_docs | busca kasy.dev/docs ao vivo | Ler a doc oficial de qualquer página antes de chutar um passo |
Prefira a tool dedicada quando existir. run_kasy_command é o canivete: só roda o binário kasy, nunca shell arbitrário. Nunca use pra kasy run.
read_kasy_docs busca a doc publicada (não a base de treino, que pode estar desatualizada) em markdown limpo, em pt/en/es. Serve pra confirmar uma flag rara, ler o guia completo de uma feature (ex.: funcionalidades/stripe) antes de configurar, ou consultar referencia/troubleshooting quando algo falha de um jeito não familiar.
Telemetria (o assistente chama, não você)
| Tool | Por baixo | Quando usar |
|---|---|---|
report_issue | POST pra edge da Kasy | Depois de tentar consertar de verdade |
Corrigir é obrigatório; reportar sozinho não resolve nada pra você. O caminho normal é resolved: true com o comando exato que funcionou. Isso vira melhoria no kasy doctor. Sem PII: sem nome, e-mail, chave ou path completo.
Resources
Além das tools, o MCP expõe dois resources que o assistente lê sozinho:
| URI | O que é |
|---|---|
kasy://design-system-guide | DESIGN_SYSTEM.md e AGENTS.md do projeto aberto |
kasy://architecture | Convenção feature-first: api → repository → provider → ui |
Nada de cor ou fonte fixa no pacote do MCP. Depois de um rebrand, a fonte da verdade continua sendo o projeto no disco.
Pedidos típicos
Com o MCP ligado, dá pra falar assim:
Prepara minha máquina com o KasyCria um projeto chamado meu-app com Firebase, modo rápidoAdiciona revenuecat no meu projetoPublica o iOSPublica no Codemagic o Android e me diz o statusAdiciona app.meudominio.com nos domínios autorizadosO assistente escolhe a tool (prepare_machine, create_project, run_app, release_ios, codemagic_release…). Você não precisa lembrar o nome.
Limitação conhecida (v1)
Tools e resources sem directory explícito resolvem relativo ao diretório de trabalho do processo do MCP.
- Cursor / Claude Code: confiável (cwd = projeto aberto).
- Claude Desktop: não tem conceito de "projeto aberto". Depois do
create_project, o assistente precisa passardirectoryexplícito emlist_components,check_status, etc.
MCP do Kasy vs MCP de terceiros
São coisas diferentes:
| MCP | Pra quê |
|---|---|
Kasy (kasy-mcp) | Criar/gerenciar o app Flutter gerado pelo kit |
| RevenueCat | Montar catálogo (produtos, entitlements, offerings) no painel deles |
| Stripe | Criar produto e preços na conta Stripe |
Dá pra usar os três juntos: o MCP do Kasy liga a feature no código; o da Stripe/RevenueCat monta o catálogo no painel.
Próximo passo
- Instalar o MCP (se ainda não instalou)
- Preparar a máquina
- Criar o primeiro app
Atualizado em 03/11/2026

