Conectar em 30 segundos: Claude Code, Codex, Kiro, Cursor e VS Code
Um comando ou seis linhas de JSON ligam o Moretes Architect MCP ao seu agente, sem chave de API. Depois, dois testes provam que a conexão funciona e a cota pública fica explicada antes de morder.
10 min de leitura
Escolha como aprender
combine como quiserDica: o vídeo é um resumo visual rápido; o áudio e o texto trazem a aula completa. Terminar o áudio ou o vídeo, ou passar no quiz, já conta a aula como concluída.
Esta aula termina com o Moretes Architect MCP respondendo dentro do seu agente: Claude Code, Codex, Kiro, Cursor, VS Code, Gemini CLI, Amazon Q Developer CLI ou Claude Desktop. É um comando ou um arquivo JSON de seis linhas, sem chave de API, e dois testes que provam que a conexão funciona: listar as 48 ferramentas e calcular um orçamento de erro. A aula 01 explicou o que o servidor é; esta mostra como ligá-lo e como saber que ligou.
Um servidor, dois endereços
O servidor público roda em Lambda atrás do API Gateway, em us-east-1, e fala Streamable HTTP, o transporte remoto padrão do MCP. O endereço técnico é https://mcp.moretes.com/mcp. O alias https://fernando.moretes.com/api/mcp aponta para o mesmo servidor: é mais fácil de ditar e sobrevive a uma troca de API Gateway, mas acrescenta um salto pelo site. Quando o cliente aceita os dois, eu uso o alias em arquivo versionado no repositório da equipe e o endereço do API Gateway em teste de conectividade, porque remove uma variável quando algo falha. Se o alias responder 404 no seu cliente, use o endereço do API Gateway: é o mesmo servidor.
Não há chave de API, cadastro nem OAuth. Isso é uma escolha de desenho, não um descuido: o servidor é determinístico, não chama modelo nenhum e não acessa conta nenhuma, então o pior que uma pessoa consegue fazer com ele é gastar a cota pública do dia. O preço de não ter chave é a cota compartilhada que explico mais abaixo.
Na mesma origem existem três páginas que abrem no navegador: / é a landing com a lista de ferramentas, /health devolve um JSON com versão e contagem de ferramentas, e /tools.json devolve o inventário agrupado. O /mcp em si não abre no navegador, e isso é esperado: ele só aceita POST.
A versão desta aula é a 0.2.0, publicada em 24 de outubro de 2026, com 48 ferramentas em 8 grupos. Se /health mostrar outra versão, o inventário pode ter mudado; 48 é a referência desta versão, não uma promessa.
Oito clientes, dois formatos
Os clientes de terminal (Claude Code, Codex, Gemini CLI) recebem a URL por um comando mcp add e guardam a configuração por conta própria; claude mcp list e codex mcp list mostram o que ficou registrado. Os clientes de editor (Kiro, Cursor, VS Code, Amazon Q Developer CLI) leem um arquivo JSON no projeto ou na home do usuário. Os quatro arquivos dizem a mesma coisa com três diferenças pequenas que costumam custar dez minutos a quem copia de um para o outro:
- O VS Code usa a chave
servers, nãomcpServers, e exige"type": "http". - O Amazon Q Developer CLI usa
mcpServerscomo os outros, mas também pede"type": "http". - O Kiro aceita
disabledeautoApprove. DeixeautoApprovevazio: aprovar ferramenta por ferramenta é o que permite ver o que o agente está chamando, e é assim que você aprende o inventário nas primeiras semanas.
O nome moretes-architect é só um rótulo local. Pode mudar, mas os prompts desta série assumem esse nome, então "use o moretes-architect" funciona sem tradução.
Arquivo no projeto (.kiro/settings/mcp.json, .cursor/mcp.json, .vscode/mcp.json) vale só para aquele repositório e pode ser versionado, o que coloca a equipe inteira no mesmo servidor com um commit. Arquivo na home vale para todos os projetos. Em qualquer caso, depois de editar, recarregue o cliente: a lista de ferramentas é lida no initialize e não muda sozinha no meio da sessão.
# Claude Code
claude mcp add --transport http moretes-architect https://mcp.moretes.com/mcp
claude mcp list
# Codex
codex mcp add moretes-architect --url https://mcp.moretes.com/mcp
codex mcp list
# Gemini CLI
gemini mcp add --transport http moretes-architect https://mcp.moretes.com/mcpservers, e VS Code e Amazon Q exigem type: http.# Kiro: .kiro/settings/mcp.json
{"mcpServers":{"moretes-architect":{"url":"https://mcp.moretes.com/mcp","disabled":false,"autoApprove":[]}}}
# Cursor: .cursor/mcp.json
{"mcpServers":{"moretes-architect":{"url":"https://mcp.moretes.com/mcp"}}}
# VS Code: .vscode/mcp.json
{"servers":{"moretes-architect":{"type":"http","url":"https://mcp.moretes.com/mcp"}}}
# Amazon Q Developer CLI: mcp.json
{"mcpServers":{"moretes-architect":{"type":"http","url":"https://mcp.moretes.com/mcp"}}}Local: a mesma coisa, sem cota e sem sair da máquina
O repositório é MIT e ainda não tem publicação no npm, então o caminho local é clonar e compilar. São quatro comandos e menos de dois minutos numa máquina com Node.js 22 ou 24. npm ci --ignore-scripts instala exatamente o que está no lockfile e impede que qualquer dependência execute script na instalação; npm run build gera dist/; node dist/stdio.js sobe o servidor falando MCP pela entrada e saída padrão. Não espere interface: ele só fala protocolo, e qualquer diagnóstico vai para stderr. npm run http sobe a mesma coisa em http://127.0.0.1:8787/mcp, com a landing page, para clientes que só falam HTTP.
O Claude Desktop é o caso em que o stdio é o caminho principal: a configuração aponta command para node e args para o caminho absoluto de dist/stdio.js. Caminho relativo falha em silêncio, porque o cliente não sobe a partir da pasta do projeto.
Quando preferir o local, mesmo com o endpoint público a um comando de distância:
- Entrada confidencial. Plano Terraform, template CloudFormation, política IAM, código de produção. Em modo local isso não sai da máquina. As únicas ferramentas que saem são as
aws_knowledge_*(para o AWS Knowledge MCP oficial) egithub_public_repository(api.github.com), e levam só a consulta que você digitou. - Volume. Revisar 40 políticas num loop de CI consome a cota do dia em minutos; local não tem cota.
- Conta AWS.
aws_account_identity,aws_tagged_resourceseaws_cost_historysó existem em stdio, com opt-in explícito. O módulo 3 trata disso.
O endpoint público é para experimentar, aprender e para conversas de desenho sem dado sensível. Não envie segredo, dado de cliente ou arquitetura confidencial para ele: os logs guardam só id da requisição, status e duração, mas o tráfego passa pela minha conta, e você não tem como auditar isso.
git clone https://github.com/fernando-moretes/moretes-aws-architect-mcp.git
cd moretes-aws-architect-mcp
npm ci --ignore-scripts
npm run build
node dist/stdio.js # MCP over stdio; no UI, protocol only
# or: npm run http # http://127.0.0.1:8787/mcp + landing page
# Claude Desktop: claude_desktop_config.json
{
"mcpServers": {
"moretes-architect": {
"command": "node",
"args": ["/ABSOLUTE/PATH/moretes-aws-architect-mcp/dist/stdio.js"]
}
}
}Verificar a conexão em três passos
- 1
Peça o inventário ao agente
Digite: "Liste as ferramentas do moretes-architect e me diga em quantos grupos elas estão." O agente lê o recurso
moretes://tools(ou chamatools/list) e deve responder 48 ferramentas em 8 grupos: Architect personas and code (3), Architecture and decisions (14), Design: diagrams, data, contracts (6), Reliability, operations and FinOps (8), AI agents and MCP safety (5), Infrastructure as code review (4), Live AWS Knowledge (5), Official AWS integrations and GitHub (3). Número diferente: o cliente não recarregou ou a versão mudou. - 2
Faça uma conta que você confere de cabeça
Digite: "Calcule o orçamento de erro de 99,9% em 30 dias." O agente chama
slo_budgetcom{"availabilityPercent":99.9,"periodDays":30}e a ferramenta devolveallowedDowntimeMinutes: 43.19999999999524,remainingMinutesigual,exhausted: falsee a limitação "Time-based SLO only; request-based availability requires good/total event counts." A conta: 30 × 1440 × 0,001 = 43,2 minutos. O 43,1999... é ponto flutuante, não erro de SLO. Se o agente respondeu 43,2 sem chamar ferramenta nenhuma, a conexão não está em uso: peça explicitamente "use o moretes-architect". - 3
Abra /health e /tools.json no navegador
/healthdevolve{"status":"ok","version":"0.2.0","publicTools":48,"accountTools":false}./tools.jsondevolveversionegroups, cada grupo comname,descriptioneexternalpor ferramenta;external: truemarca as 6 que saem do servidor (as 5aws_knowledge_*egithub_public_repository). Se o navegador mostra 48 e o cliente mostra menos, o problema é do lado do cliente. Se/healthnão responde, o problema é do servidor, e não adianta mexer na configuração.
Cota, throttle e o que conta como requisição
O serviço público tem dois contadores por dia UTC, guardados no DynamoDB: 300 requisições por chamador e 3.000 no total. O chamador é identificado por um hash SHA-256 de dia + IP de origem, truncado em 24 caracteres: pseudônimo, muda todo dia, expira em dois dias, e o IP bruto nunca é gravado. Quando qualquer um dos dois estoura, o servidor responde 429 com o texto "Daily service limit reached; use local stdio mode." e o cabeçalho Retry-After: 3600. Os contadores são fail-closed: se o DynamoDB não responder em 1,5 segundo, a requisição é negada em vez de passar sem contar. Prefiro negar uma requisição a perder o controle do custo.
O que conta: cada operação MCP é um POST, e cada POST conta. initialize, tools/list, resources/read e cada tools/call são requisições separadas. Um cliente que recarrega a lista de ferramentas a cada mensagem gasta cota sem você perceber; 300 ainda dá uma tarde inteira de uso interativo, mas não dá um loop de CI.
Na frente do Lambda, o API Gateway impõe um limite de taxa: 5 requisições por segundo com burst de 20. Esse limite também devolve 429, mas vem do gateway e sem o Retry-After de uma hora; é caso de esperar alguns segundos. Em qualquer 429, não repita em loop apertado: aguarde ou troque para o modo local, que não tem nenhum dos dois limites.
O servidor também rejeita corpo acima de 128 KB (413), requisição em lote JSON-RPC (400) e Content-Type diferente de application/json (415). Isso raramente aparece num cliente MCP de verdade; aparece quando alguém testa com curl.
Erros comuns e o que significam
| O que você vê | Causa | O que fazer |
|---|---|---|
| 405 ao abrir /mcp no navegador | Esperado. /mcp só aceita POST; o cabeçalho Allow: POST confirma. | Abra /, /health ou /tools.json. O /mcp é para o cliente, não para você. |
| 403 Origin not allowed | A requisição veio de um navegador com cabeçalho Origin. Não há CORS aberto, por desenho. | Use um cliente MCP nativo; clientes de terminal e de editor não enviam Origin. |
| 429 com Retry-After: 3600 | Cota diária: 300 por chamador ou 3.000 global. | Espere a virada do dia UTC ou passe para node dist/stdio.js. |
| 429 sem Retry-After | Throttle do API Gateway: 5 rps, burst 20. | Espere alguns segundos. Nunca repita em loop apertado. |
| Ferramentas não aparecem | O cliente não recarregou após editar a configuração, ou a chave está errada (servers vs mcpServers, type: http faltando). | Recarregue o cliente, confira /health no navegador e rode claude mcp list ou codex mcp list. |
| aws_account_* não aparece | Intencional: ferramentas de conta nunca são expostas por HTTP. | Módulo 3: stdio local com ENABLE_AWS_ACCOUNT_TOOLS=true e EXPECTED_AWS_ACCOUNT_ID. |
Cada cliente, seu arquivo ou comando
Toque num conceito e depois na definição.