TabbitBlog

Configure e teste o Playwright MCP no OpenCode

Registre a ferramenta e separe erros de argumentos de falhas do navegador.

Neste artigo
  1. Registre o servidor local
  2. Faça uma navegação somente de leitura
  3. O que os dois modelos fizeram
  4. Localize a primeira camada que falha

O OpenCode pode usar o Playwright MCP como servidor local do projeto. Comece com uma navegação somente de leitura e confira o título retornado. Connected confirma a conexão MCP. O modelo ainda precisa chamar a ferramenta com argumentos válidos, e o Playwright precisa iniciar o navegador e chegar à página.

Testamos o OpenCode 1.18.16 e o Playwright MCP 0.0.84. Este guia usa a configuração 1.x. A documentação do OpenCode V2 coloca os nomes dos servidores dentro de mcp.servers. Execute opencode --version antes de copiar uma configuração.

Registre o servidor local

Crie ou atualize opencode.json na raiz do projeto. Se já houver um objeto mcp, acrescente playwright dentro dele e preserve as outras entradas. O guia MCP do OpenCode 1.x documenta o comando como array, a ativação e o tempo limite.

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "playwright": {
      "type": "local",
      "command": [
        "npx", "-y", "@playwright/mcp@0.0.84",
        "--browser", "firefox", "--headless", "--isolated"
      ],
      "enabled": true,
      "timeout": 45000
    }
  }
}

Use um Firefox compatível com o Playwright incluído no servidor MCP. No pacote testado, a versão informada pelo npm é 1.65.0-alpha-2026-10-30.

npx -y --package playwright@1.65.0-alpha-2026-10-30 playwright install firefox
opencode mcp list

Se o cache do navegador estiver em outro local, disponibilize-o ao processo MCP. No teste isolado passamos o executável correspondente de forma explícita. Ao atualizar, confira a revisão do navegador e a versão do pacote. Um executável antigo com o mesmo nome pode usar outro protocolo.

Execute opencode mcp list na raiz e abra uma nova sessão para verificar as ferramentas. O OpenCode combina configurações de várias fontes. Para diagnosticar, use um projeto vazio com diretórios separados de dados e configuração. A referência de configuração detalha a precedência.

Faça uma navegação somente de leitura

O formulário público do Selenium oferece uma resposta visível e dispensa conta.

Use playwright_browser_navigate apenas para este URL:
{"url":"https://www.selenium.dev/selenium/web/web-form.html"}
Envie um argumento url com o endereço como string.
Leia o retorno e informe o título visível.
Não clique, digite, envie nem chame outra ferramenta.

Confira o nome da ferramenta, o objeto de argumentos e o título retornado. Na sessão 1.x do teste, o OpenCode exibiu playwright_browser_navigate. Um cliente MCP independente vê o nome original browser_navigate. O projeto da Microsoft descreve os snapshots de acessibilidade e as opções do navegador.

Para comparar modelos, mantenha o mesmo URL, instrução, servidor e navegador. Escolha modelos que aceitem chamadas estruturadas com seu adaptador. No teste, o OpenCode usou a configuração de provedor compatível com OpenAI contra um Ollama local. Nenhuma conta externa foi usada. Veja os eventos de ferramenta mesmo se o texto final estiver vazio ou o comando terminar com código zero.

O que os dois modelos fizeram

Na primeira execução usamos um Firefox antigo de outro cache. Os dois modelos enviaram o URL correto, mas a navegação falhou. Um cliente MCP independente recebeu um erro de protocolo com a mesma entrada válida. Com o Firefox 158, revisão 1569, ele leu Web form. Nesse ambiente, enviar um número como url gerou erro de validação.

Passamos o mesmo objeto JSON explícito para os dois modelos em novas sessões com o navegador compatível. O resultado da ferramenta e a resposta final foram registrados separadamente.

Modelo localArgumento da navegaçãoResultado da ferramentaSaída final
qwen3:0.6bURL exato como stringWeb formOmitiu o título
qwen3.5:0.8bURL exato como stringWeb formNenhum evento de texto com o título

O segundo modelo ainda fez dois snapshots apesar da instrução de uma chamada. Em uma tentativa anterior com a versão compatível, nenhum reproduziu o URL exato a partir da instrução em prosa. Com o JSON explícito, ambos navegaram na execução relatada. É uma amostra local pequena. O cliente independente encontrou 25 ferramentas, verificou que browser_navigate.url era uma string e fechou o navegador. Nenhum formulário foi enviado.

Resultados dos dois modelos no OpenCode e da verificação independente do protocolo MCP

Localize a primeira camada que falha

O que apareceCamada inicialPróximo teste
Servidor ausente ou com falha em opencode mcp listConfiguração e processo MCPConfira versão, diretório, comando, executável e tempo limite
Connected, mas o modelo retorna apenas textoModelo, provedor ou ferramentas disponíveisConfira as ferramentas e tente uma chamada com outro modelo compatível
Chave ou tipo de argumento incorretoEsquema da ferramentaCompare o objeto de argumentos com tools/list
O argumento está correto, mas a chamada independente também falhaInicialização, protocolo ou redeConfira a revisão do navegador e repita o mesmo URL
A ferramenta retorna o título, mas a resposta final o omiteLeitura do resultado pelo modeloUse a resposta da ferramenta como evidência e peça apenas o título

Um relato sobre argumentos MCP descreve um servidor de arquivos que esperava path e recebeu filePath. Uma discussão sobre o navegador no OpenCode relata resultados instáveis sem isolar a configuração. Os sintomas pedem verificações distintas. Compare o nome, os argumentos e o retorno da sua própria sessão.

O exemplo usa um contexto limpo. Se precisar de um login existente, veja como conectar um navegador aberto. Para outras integrações, consulte automação com Playwright, Playwright MCP no Claude Code, Playwright MCP no Codex e agentes de código aberto. Para decidir se precisa abrir uma aba, veja pesquisa e controle do navegador e como funcionam os agentes de navegador. Você também pode baixar o Tabbit e repetir a leitura pública com outra conexão.

Perguntas frequentes

O OpenCode pode usar Playwright MCP?

Sim. No 1.x, inclua o servidor local em mcp no opencode.json e execute opencode mcp list no projeto. No V2, use o esquema correspondente.

As ferramentas continuam funcionando quando troco de modelo?

A configuração MCP pode ficar igual. Execute a mesma tarefa curta e veja se ambos os modelos enviam argumentos válidos e leem a resposta.

Por que aparece connected quando a navegação falha?

O servidor pode concluir a conexão MCP antes de iniciar o navegador. Confira a resposta da ferramenta para localizar erros de execução, protocolo ou rede.

Qual argumento browser_navigate espera?

Na versão verificada, url é uma string. Confira em tools/list e use o nome exato apresentado pelo cliente.

Esta configuração conecta as abas que já estão abertas?

O exemplo inicia um contexto isolado. Configure outra conexão se a tarefa precisar de uma aba aberta ou uma sessão já autenticada.

Dê o próximo passo

Deixe o Tabbit trabalhar ao seu lado.

Pesquise entre abas, automatize o trabalho repetitivo do navegador e mantenha todo o contexto ao alcance.