Pular para o conteúdo
fernando.moretes.com
BlogEstudosCursosE-booksOpen SourcePodcasts
Loading…
Fernando Azevedo

Arquiteto de TI Especialista

Arquitetura, AWS, IA em produção, sistemas financeiros e FinOps, escritos a partir do que foi operado, com os números.

  • LinkedIn
  • GitHub
  • E-mail

Conteúdo

  • Blog
  • Estudos de arquitetura
  • Cursos
  • E-books
  • Open Source
  • Podcasts
  • Assuntos
  • Trilhas

Ferramentas

  • Moretes Architect MCP
  • Well-Architected self-check
  • Arquitetura deste site
  • Números públicos
  • Histórico de estudo

Sobre

  • Comunidade
  • IA Builder
  • Perfil
  • Currículo (CV)
  • Trabalhe comigo
  • Media kit
  • RSS do blog
  • RSS dos estudos
  • Artigos narrados (podcast)
  • llms.txt
  • Termos, privacidade e uso de IA

(c) 2026 Fernando Francisco Azevedo

MCP para Arquitetos: o Moretes Architect na prática/Conectar em 30 segundos: Claude Code, Codex, Kiro, Cursor e VS Code
Módulo 1 · Começar· Aula 02/10

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 quiser

Dica: 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.

Assista a esta aula
Narrado por Fernando AzevedoMP4PDF
Ouça esta aula
0:0012:11
Velocidade
Baixar

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ão mcpServers, e exige "type": "http".
  • O Amazon Q Developer CLI usa mcpServers como os outros, mas também pede "type": "http".
  • O Kiro aceita disabled e autoApprove. Deixe autoApprove vazio: 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.

Clientes de linha de comando: um comando, sem chave. O nome moretes-architect é o rótulo que os prompts do curso usam.
bash
# 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/mcp
Clientes por arquivo. Repare: o VS Code usa servers, e VS Code e Amazon Q exigem type: http.
text
# 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) e github_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_resources e aws_cost_history só 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.

Instalação local a partir do GitHub e a configuração do Claude Desktop (caminho absoluto obrigatório).
text
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. 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 chama tools/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. 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_budget com {"availabilityPercent":99.9,"periodDays":30} e a ferramenta devolve allowedDowntimeMinutes: 43.19999999999524, remainingMinutes igual, exhausted: false e 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. 3

    Abra /health e /tools.json no navegador

    /health devolve {"status":"ok","version":"0.2.0","publicTools":48,"accountTools":false}. /tools.json devolve version e groups, cada grupo com name, description e external por ferramenta; external: true marca as 6 que saem do servidor (as 5 aws_knowledge_* e github_public_repository). Se o navegador mostra 48 e o cliente mostra menos, o problema é do lado do cliente. Se /health nã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êCausaO que fazer
405 ao abrir /mcp no navegadorEsperado. /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 allowedA 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: 3600Cota 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-AfterThrottle do API Gateway: 5 rps, burst 20.Espere alguns segundos. Nunca repita em loop apertado.
Ferramentas não aparecemO 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 apareceIntencional: 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.
Ligar

Cada cliente, seu arquivo ou comando

Toque num conceito e depois na definição.

Quiz

Confira o que ficou

1. Você abriu /mcp no navegador e recebeu 405. O que isso indica?
2. Qual cliente usa a chave `servers` em vez de `mcpServers` no arquivo de configuração?
3. O agente recebeu 429 com `Retry-After: 3600`. Qual é a causa e a saída?
4. Em qual situação o modo local (stdio) é a escolha certa, e não só uma alternativa?

Referências

Client setup (docs/clients.md) · fernando-moretes/moretes-aws-architect-mcpDeployment and validation (docs/deployment.md) · fernando-moretes/moretes-aws-architect-mcpConnect to MCP servers · Claude Code docsMCP configuration · Kiro docsModel Context Protocol (MCP) · OpenAI developersTransports (specification 2025-06-18) · modelcontextprotocol.io
Concluir e ir para a próxima Aula anterior