WebMCP em produção|INEMA.CLUB-PRO

Aula 7 · 16 min

Produção e governança: quem aprova ferramenta nova, versão, desligar rápido

Ferramenta para agente é ação do seu site feita por outro. Precisa de dono, data de aprovação, nível de autonomia e um jeito de sair do ar em minutos, sem quebrar o formulário. Nesta aula o catálogo aprovado vira um arquivo que a página e o servidor leem, um script confere e um estado desliga.

Começar a aula
Painel preto liso com uma fileira de interruptores, um deles desligado com uma trava de segurança vermelha.

Nesta aula você vai

  1. 1O catálogo aprovado (governanca.json)
  2. 2Níveis de autonomia de 0 a 3
  3. 3O script que confere código × catálogo
  4. 4Desligar uma ferramenta e manter o formulário

Objetivo: pôr cada ferramenta num catálogo com dono, data e nível de autonomia, e desligar uma sem deploy de código nem quebrar o formulário.

01A vida de uma ferramenta

Clique em cada etapa.

Clique em cada bloco do diagrama para ver o que ele faz.

02Níveis de autonomia

Do modelo de constituição de agentes do INEMA, aplicado às ferramentas do site.

1. 3

Executa e registra. Para o que só lê: buscar, listar, ver.

No kit: buscar_oficinas, listar_comentarios, minhas_reservas.

03O catálogo aprovado

A página lê com fetch (cache: no-store); o servidor lê do disco a cada requisição. Sem o arquivo, nada sai: falha fechada.

Arquivo · kit/pagina/governanca.json
{
  "versao_catalogo": "2026-10-19.1",
  "spec_webmcp": "2026-10-16",
  "protocolo_mcp": "2026-07-28",
  "niveis": {
    "3": "faz sozinho e registra",
    "2": "faz e avisa o responsável",
    "1": "propõe e espera a pessoa aprovar",
    "0": "não toca: encaminha para uma pessoa"
  },
  "ferramentas": [
    { "nome": "buscar_oficinas", "dono": "time do site", "nivel": 3, "aprovada_em": "2026-10-19", "estado": "ativa", "superficies": ["webmcp", "mcp"] },
    { "nome": "listar_comentarios", "dono": "time do site", "nivel": 3, "aprovada_em": "2026-10-19", "estado": "ativa", "superficies": ["webmcp"] },
    { "nome": "minhas_reservas", "dono": "time do site", "nivel": 3, "aprovada_em": "2026-10-19", "estado": "ativa", "superficies": ["webmcp"] },
    { "nome": "reservar_vaga", "dono": "time do site", "nivel": 1, "aprovada_em": "2026-10-19", "estado": "ativa", "superficies": ["webmcp", "mcp"] }
  ]
}

04Conferir código × catálogo

governanca.mjs lê as ferramentas que o código conhece (página e servidor) e compara com o catálogo.

Terminal · catálogo do kit e catálogo ruim
cd ~/projetos/formacao-webmcp-expert-v72/kit
node scripts/governanca.mjs; echo "saída: $?"
node scripts/governanca.mjs governanca/ruim.json | grep -E "PROBLEMA|GOVERN"; echo "saída: ${PIPESTATUS[0]}"
Exemplo do repositório
catálogo 2026-10-19.1 · 4 ferramentas (4 ativas) · código: 4 na página, 2 no servidor
GOVERNANÇA: 0 problema(s)
saída: 0
PROBLEMA reservar_vaga: tem consequência e está no nível 3 (máximo 1: propõe e espera a pessoa)
PROBLEMA minhas_reservas: está no código (webmcp) mas não no catálogo aprovado
PROBLEMA listar_comentarios: sem data de aprovação (AAAA-MM-DD)
GOVERNANÇA: 3 problema(s)
saída: 1

O catálogo ruim põe reservar_vaga no nível 3 (faria sozinho), esquece minhas_reservas e não data a aprovação de listar_comentarios.

05Desligar rápido

Numa cópia da página, o estado de reservar_vaga vira desligada. Nenhum código muda.

Terminal · desligar reservar_vaga
cd ~/projetos/formacao-webmcp-expert-v72/kit
node scripts/desligar.mjs reservar_vaga nativo; echo "saída: $?"
Exemplo do repositório
== Chromium 156.0.8078.4 (Playwright) · modo: nativo
antes:  WebMCP 4 ferramentas · MCP 2 ferramentas
desligada: reservar_vaga (estado "desligada" no governanca.json, nenhum código mudou)
depois: WebMCP 3 ferramentas · MCP 1 ferramentas
formulário: a pessoa reservou of-301 normalmente
DESLIGAR: ok · reservar_vaga fora do WebMCP e do MCP, formulário funcionando
saída: 0

Em produção, o mesmo vale ao publicar o governanca.json novo: a página lê sem cache na próxima carga, o servidor na próxima chamada. Agente com a página já aberta ainda vê a ferramenta até recarregar.

06Prática

Conferir, desligar e escrever o catálogo do seu site. Cada exercício termina num pronto quando.

E1 · Catálogo em ordem

3 min

Rode a conferência do catálogo.

Pronto quando: node scripts/governanca.mjs; echo "saída: $?" → GOVERNANÇA: 0 problema(s) e saída: 0; o ruim → GOVERNANÇA: 3 problema(s) e saída: 1.

E2 · Desligar sem deploy

5 min

Rode o ensaio de desligar reservar_vaga.

Pronto quando: node scripts/desligar.mjs reservar_vaga nativo; echo "saída: $?" → depois: WebMCP 3 ferramentas · MCP 1 ferramentas, DESLIGAR: ok e saída: 0.

E3 · O catálogo do seu site

20 min

Escreva o governanca.json das ferramentas do seu site: dono, data, nível e superfícies. Combine com o time quem pode mudar o estado para desligada e em quanto tempo.

Pronto quando: Na sua cópia do kit com as suas ferramentas, node scripts/governanca.mjs; echo "saída: $?" → 0 problema(s) e saída: 0.

07Teste da aula

A explicação aparece depois da resposta.

Pergunta 1 de 4

reservar_vaga tem consequência. Em que nível ela pode ficar?

08Em três frases

CatálogoToda ferramenta exposta tem dono, data, nível e superfícies num arquivo só.
NívelConsequência fica no 1 (propõe e espera) ou no 0 (não toca).
DesligarEstado desligada tira a ferramenta das duas portas sem deploy; o formulário fica.

Para ir além

Aula anteriorPróxima aula