Jataí + IA
Peça ao seu agente de IA — Claude Code, Cursor, Codex ou Gemini CLI — para colocar o projeto da sua pasta no ar. Ele fala direto com o Jataí pelo servidor MCP da CLI (jatai mcp), sem precisar de GitHub.
1. Antes de começar
Crie sua conta em jataicloud.com.br e confirme o e-mail. O agente não consegue criar a conta por você, e sem o e-mail confirmado o login pelo navegador não é aprovado.
2. O que dá para pedir ao agente
O servidor MCP entrega ao agente nove ferramentas. Você não precisa chamá-las pelo nome: descreva o que quer em português e o agente escolhe.
| Ferramenta | O que o agente faz com ela |
|---|---|
| jatai_conta | Confere quem está logado, o time atual e o que já existe na conta, inclusive se a cortesia gratuita já está em uso. |
| jatai_login | Inicia o login e mostra um link e um código para você aprovar no navegador. |
| jatai_criar_app | Detecta a stack do projeto, escolhe o nome, grava o .jatai.yml e cria o app. Apps que não são estáticos ganham um banco PG Base automaticamente. |
| jatai_publicar | Envia o código da pasta, acompanha o build e devolve a URL do app. Se o deploy falha, traz o fim do log do build para o agente corrigir e tentar de novo. |
| jatai_status | Mostra o estado do app e do último deploy. |
| jatai_logs | Lê as linhas recentes de log do app, com filtro de texto opcional. |
| jatai_variaveis_listar | Lista os nomes das variáveis de ambiente do app. |
| jatai_variaveis_definir | Cria ou altera variáveis de ambiente, e pode já publicar de novo em seguida. |
| jatai_variaveis_remover | Remove variáveis de ambiente, e também pode publicar de novo em seguida. |
Valores não voltam para o agente. O Jataí nunca devolve os valores das variáveis ao agente, só os nomes. Mesmo assim, um valor que você digita no chat passa pelo agente. Uma variável nova ou alterada passa a valer no próximo deploy; basta pedir ao agente para publicar logo depois.
O que continua só no painel
Apagar app ou banco, mudar plano e escala, domínios, cobrança e comandos remotos. Se você pedir uma dessas coisas, o agente indica o caminho no painel.
3. Instalar a CLI
A forma mais simples é não instalar nada: com Node.js no computador, o npx baixa e roda a CLI sozinho (use os blocos da próxima seção). Se preferir deixar a CLI instalada, escolha um canal:
curl -fsSL https://jataicloud.com.br/install.sh | sh
irm https://jataicloud.com.br/install.ps1 | iex
brew install jataicloud/tap/jatai
scoop bucket add jataicloud https://github.com/JataiCloud/scoop-bucket
scoop install jatai
npm i -g jatai-cli
Para conferir: jatai --version.
4. Configurar o agente
Copie o bloco do seu agente. Todos usam npx, então não exigem instalação prévia. Depois de salvar, reinicie o agente para ele carregar o servidor.
Antes de abrir o agente pela primeira vez, rode uma vez no terminal o comando abaixo. Ele faz o primeiro download da CLI, que pode demorar mais do que o agente espera para iniciar o servidor. Quando aparecer a versão, está pronto.
npx -y jatai-cli@latest --version
Claude Code
Um comando no terminal. O --scope user deixa o Jataí disponível em qualquer pasta, não só na atual:
claude mcp add --scope user jatai -- npx -y jatai-cli@latest mcp
Cursor
Adicione ao arquivo ~/.cursor/mcp.json (ou .cursor/mcp.json dentro do projeto):
{
"mcpServers": {
"jatai": {
"command": "npx",
"args": ["-y", "jatai-cli@latest", "mcp"]
}
}
}
Gemini CLI
Adicione ao arquivo ~/.gemini/settings.json:
{
"mcpServers": {
"jatai": {
"command": "npx",
"args": ["-y", "jatai-cli@latest", "mcp"]
}
}
}
Codex
Adicione ao arquivo ~/.codex/config.toml. O startup_timeout_sec dá tempo para o npx iniciar a CLI:
[mcp_servers.jatai]
command = "npx"
args = ["-y", "jatai-cli@latest", "mcp"]
startup_timeout_sec = 30
Outro cliente MCP, com a CLI instalada
Qualquer cliente MCP com transporte stdio serve. Se você instalou a CLI na seção 3, o comando é só jatai com o argumento mcp:
{
"mcpServers": {
"jatai": {
"command": "jatai",
"args": ["mcp"]
}
}
}
Windows com npx
No Windows, os clientes costumam não achar o npx direto. Chame pelo cmd, ou então instale a CLI (seção 3) e use jatai mcp como no bloco genérico acima. Escolha o bloco do seu agente:
Claude Code (terminal):
claude mcp add --scope user jatai -- cmd /c npx -y jatai-cli@latest mcp
Cursor (~/.cursor/mcp.json) e Gemini CLI (~/.gemini/settings.json):
{
"mcpServers": {
"jatai": {
"command": "cmd",
"args": ["/c", "npx", "-y", "jatai-cli@latest", "mcp"]
}
}
}
Codex (~/.codex/config.toml):
[mcp_servers.jatai]
command = "cmd"
args = ["/c", "npx", "-y", "jatai-cli@latest", "mcp"]
startup_timeout_sec = 30
5. Primeiro uso
Abra o agente na pasta do projeto e peça, em português mesmo:
Publique o projeto desta pasta no Jataí
- 1Login. Na primeira vez o agente mostra um link e um código. Abra o link no navegador, confira o código e aprove. Você precisa ter a conta com o e-mail confirmado.
- 2Criação e envio. O agente detecta a stack, cria o app (com banco, se o projeto precisar) e envia o código da pasta.
- 3Build e rollout. Em poucos minutos o app fica no ar em um endereço
*.jataiapp.com.br, e o agente devolve a URL.
Se o agente disser que o deploy está “em andamento”, é normal: builds mais longos passam do tempo que o cliente espera por uma resposta. O agente segue acompanhando com o status do app, e você pode pedir “veja como está o deploy” quando quiser.
Depois é só conversar: “mostre os logs de erro”, “adicione a variável STRIPE_KEY e publique de novo”.
6. Projetos Next.js
No Jataí as variáveis de ambiente, como o DATABASE_URL, existem só em execução, não durante o build. Uma página que lê o banco ao ser gerada no build vai falhar. A solução é fazer a página ser renderizada a cada requisição, e o jeito depende da versão.
Os exemplos abaixo usam o driver pg. Se o projeto ainda não tem, rode npm i pg e npm i -D @types/pg; o Jataí já entrega o DATABASE_URL ao app.
Com cacheComponents (padrão do create-next-app 16)
Não exporte dynamic: o build recusa. Leia o banco dentro de <Suspense> e depois de await connection(), importado de next/server. Sem o <Suspense>, o build falha com “uncached or runtime data during prerendering”:
import { Suspense } from "react";
import { connection } from "next/server";
import { Pool } from "pg";
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
async function Hora() {
await connection();
const { rows } = await pool.query("select now() as agora");
return <p>Hora no banco: {String(rows[0].agora)}</p>;
}
export default function Page() {
return (
<Suspense fallback={<p>Carregando...</p>}>
<Hora />
</Suspense>
);
}
Next.js 15, ou sem cacheComponents
Marque a página como dinâmica:
import { Pool } from "pg";
export const dynamic = "force-dynamic";
const pool = new Pool({ connectionString: process.env.DATABASE_URL });
export default async function Page() {
const { rows } = await pool.query("select now() as agora");
return <p>Hora no banco: {String(rows[0].agora)}</p>;
}
Atenção: as variáveis NEXT_PUBLIC_* (e VITE_*, no Vite) ainda não ficam disponíveis durante o build no Jataí. Não dependa delas para valores embutidos no código do navegador por enquanto.
7. Limites
- A cortesia do Jataí cobre 1 Hex Base + 1 PG Base por time, sem cartão.
- Para um segundo app ou banco, cadastre um meio de pagamento em Faturamento. Quando isso acontecer, o agente avisa e mostra o link.
- Apagar recursos, plano, domínios e cobrança continuam no painel.