MCP e WebMCP numa figura: servidor × página, quem chama quem
Os dois nomes parecem a mesma coisa e não são. MCP liga um agente a um servidor seu, fora do navegador, e é estável. WebMCP deixa a própria página declarar ferramentas para o agente que está no navegador, e é rascunho. Nesta aula você separa os dois numa figura e roda a detecção de recurso que mantém o site funcionando sem a API.
1MCP: o agente chama o seu servidor (revisão 2026-07-28)
2WebMCP: a página declara ferramentas no navegador
3Detecção de recurso: sem a API, nada quebra
4Qual curso da formação ensina cada lado
Objetivo: situar MCP (servidor) e WebMCP (página) numa figura e ver a detecção de recurso com fallback rodando.
01 · Dois caminhos até a mesma ação
Clique em cada bloco.
Clique em cada bloco do diagrama para ver o que ele faz.
MCP: o agente vai até o seu servidor. WebMCP: a página aberta oferece ferramentas ao agente do navegador. O HTML segura os dois.
02 · Lado a lado
O que muda entre os dois, em quatro perguntas.
1. Onde roda?
MCP: num processo seu (na máquina do agente por stdio, ou num endereço HTTP). WebMCP: dentro da aba aberta, no JavaScript da página.
2. Quem chama?
MCP: o cliente (o agente) chama o servidor. WebMCP: o agente do navegador lê a lista com getTools e executa a ferramenta; a função que roda é a da página.
3. Está pronto?
MCP: estável, revisão 2026-07-28 (tutoriais com SSE e initialize são de revisões antigas). WebMCP: rascunho que já trocou de nome uma vez (de navigator para document, aceito em 19/05/2026). Aula 5.
SeloWebMCP: experimental em 19/10/2026 (origin trial Chrome 149–156, Edge 150).
4. O que preparar hoje?
HTML que o agente lê (aula 3) vale para os dois. Se você tem um serviço com API, o servidor MCP é o passo estável. A página com WebMCP entra como laboratório, sempre com detecção e fallback.
03 · Detecção de recurso com fallback
O único JavaScript de WebMCP deste curso: ver se a API existe e, sem ela, deixar o formulário como está. Registrar ferramentas de verdade é o curso 2. O detectar.mjs abre a página sem a API e com um stub vazio (não é a API nem o polyfill), só para mostrar os dois ramos.
Arquivo · kit/site/deteccao.js
// deteccao.js — detecção de recurso do WebMCP com fallback (kit do curso 0, Formação WebMCP).
// Spec usada: WebMCP, Draft Community Group Report de 16/10/2026 (document.modelContext).
// É rascunho de Community Group, não padrão: no Chrome só com origin trial (149–156) ou flag local.
// Sem a API, nada muda: o formulário acima continua sendo o caminho para pessoas e agentes.
(function () {
const caminho = "modelContext" in document
? "WebMCP presente: aqui a página registraria as ferramentas (curso 2 da formação)"
: "WebMCP ausente: o site segue pelo formulário, igual para todos";
document.documentElement.dataset.webmcp = "modelContext" in document ? "sim" : "nao";
console.log(caminho);
})();
Terminal · os dois ramos
cd ~/projetos/formacao-webmcp-base-v72/kit
node detectar.mjs depois; echo "saída: $?"
Exemplo do repositório
sem API · WebMCP ausente: o site segue pelo formulário, igual para todos · botão Agendar: sim
com stub · WebMCP presente: aqui a página registraria as ferramentas (curso 2 da formação) · botão Agendar: sim
saída: 0
Nos dois ramos o botão "Agendar" continua lá: o fallback não depende da API. Com a API presente, a página registraria as ferramentas; sem ela, segue igual para todo mundo.
sem API · (a página não faz detecção) · botão Agendar: não
com stub · (a página não faz detecção) · botão Agendar: não
saída: 1
Rodando o mesmo teste em antes.html: a página não faz detecção nenhuma e nem tem botão com nome. Código WebMCP sem "modelContext" in document quebra no navegador que não tem a API, que hoje é quase todo navegador.
04 · Prática
Os dois ramos e a detecção na sua cópia.
E1 · Os dois ramos
5 min
Rode o bloco "os dois ramos" e leia o deteccao.js linha a linha.
Pronto quando:node detectar.mjs depois → linha sem API · WebMCP ausente, linha com stub · WebMCP presente, as duas com botão Agendar: sim, e saída: 0.
E2 · Detecção na sua cópia
10 min
Copie kit/site/deteccao.js para /tmp/oficina/ e inclua <script src="deteccao.js"></script> no fim do body da cópia consertada na aula 3.
Pronto quando:node detectar.mjs /tmp/oficina/antes.html → as duas linhas com botão Agendar: sim e saída: 0.
E3 · O mapa do seu serviço
10 min
Escreva três linhas: que ação do seu site um agente pediria; se ela vive num serviço com API (candidata a MCP, curso 1) ou só na página (candidata a WebMCP, curso 2); e qual formulário é o fallback.
Pronto quando: o arquivo com as três linhas existe e cada ação tem um formulário de fallback nomeado.
05 · Teste da aula
Pergunta 1 de 4
Onde roda a ferramenta num servidor MCP?competência
Correto
MCP liga o agente (cliente) a um servidor seu, fora do navegador. Ferramenta no JavaScript da página é o WebMCP.
Não é essa
MCP liga o agente (cliente) a um servidor seu, fora do navegador. Ferramenta no JavaScript da página é o WebMCP.Rever: Dois caminhos até a mesma ação
Pergunta 2 de 4
Qual é a superfície do WebMCP no rascunho de 16/10/2026?competência
Correto
A troca de navigator para document foi aceita em 19/05/2026 (PR #177). Material antigo com navigator.modelContext está desatualizado.
Não é essa
A troca de navigator para document foi aceita em 19/05/2026 (PR #177). Material antigo com navigator.modelContext está desatualizado.Rever: Lado a lado
Pergunta 3 de 4
Para que serve a detecção "modelContext" in document?
Correto
Sem a API, o código não roda o ramo WebMCP e o formulário segue sendo o caminho. Nada se esconde; o fallback é o próprio site.
Não é essa
Sem a API, o código não roda o ramo WebMCP e o formulário segue sendo o caminho. Nada se esconde; o fallback é o próprio site.Rever: Detecção de recurso com fallback
Pergunta 4 de 4
O stub do detectar.mjs é o polyfill do WebMCP?
Correto
O stub não registra nem executa nada. Polyfill (não oficial) e API de verdade ficam para o curso 2.