MCP Selenium Server
Automatize navegadores web usando Selenium WebDriver via MCP.
Documentação
MCP Selenium Server
Um servidor Model Context Protocol (MCP) para Selenium WebDriver — automação de navegador para agentes de IA.
Configuração
Goose (Desktop)
Cole na barra de endereços do seu navegador:
goose://extension?cmd=npx&arg=-y&arg=%40angiejones%2Fmcp-selenium%40latest&id=selenium-mcp&name=Selenium%20MCP&description=automates%20browser%20interactions
Goose (CLI)
goose session --with-extension "npx -y @angiejones/mcp-selenium@latest"
Claude Code
claude mcp add selenium -- npx -y @angiejones/mcp-selenium@latest
Cursor / Windsurf / outros clientes MCP
{
"mcpServers": {
"selenium": {
"command": "npx",
"args": ["-y", "@angiejones/mcp-selenium@latest"]
}
}
}
Exemplo de Uso
Diga ao agente de IA de sua escolha:
Abra o Chrome, vá para github.com/angiejones e tire uma captura de tela.
O agente chamará as APIs do Selenium para start_browser, navigate e take_screenshot. Sem necessidade de scripts manuais ou instruções explícitas.
Navegadores Suportados
Chrome, Firefox, Edge e Safari.
Nota sobre Safari: Requer macOS. Execute
sudo safaridriver --enableuma vez e habilite "Permitir Automação Remota" em Safari → Ajustes → Desenvolvedor. Sem modo headless.
Ferramentas
start_browser
Inicia uma sessão de navegador.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| browser | string | Sim | chrome, firefox, edge ou safari |
| options | object | Não | { headless: boolean, arguments: string[] } |
navigate
Navega para uma URL.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| url | string | Sim | URL para navegar |
interact
Executa uma ação de mouse em um elemento.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| action | string | Sim | click, doubleclick, rightclick ou hover |
| by | string | Sim | Estratégia de localização: id, css, xpath, name, tag, class |
| value | string | Sim | Valor para a estratégia de localização |
| timeout | number | Não | Tempo máximo de espera em ms (padrão: 10000) |
send_keys
Digita texto em um elemento. Limpa o campo primeiro.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| by | string | Sim | Estratégia de localização |
| value | string | Sim | Valor do localizador |
| text | string | Sim | Texto a inserir |
| timeout | number | Não | Tempo máximo de espera em ms (padrão: 10000) |
get_element_text
Obtém o conteúdo de texto de um elemento.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| by | string | Sim | Estratégia de localização |
| value | string | Sim | Valor do localizador |
| timeout | number | Não | Tempo máximo de espera em ms (padrão: 10000) |
get_element_attribute
Obtém o valor de um atributo de um elemento.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| by | string | Sim | Estratégia de localização |
| value | string | Sim | Valor do localizador |
| attribute | string | Sim | Nome do atributo (ex.: href, value, class) |
| timeout | number | Não | Tempo máximo de espera em ms (padrão: 10000) |
press_key
Pressiona uma tecla do teclado.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| key | string | Sim | Tecla a pressionar (ex.: Enter, Tab, a) |
upload_file
Envia um arquivo por meio de um elemento de entrada de arquivo.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| by | string | Sim | Estratégia de localização |
| value | string | Sim | Valor do localizador |
| filePath | string | Sim | Caminho absoluto para o arquivo |
| timeout | number | Não | Tempo máximo de espera em ms (padrão: 10000) |
take_screenshot
Captura uma captura de tela da página atual.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| outputPath | string | Não | Caminho de salvamento. Se omitido, retorna dados de imagem em base64. |
close_session
Fecha a sessão atual do navegador. Sem parâmetros.
execute_script
Executa JavaScript no navegador. Use para interações avançadas não cobertas por outras ferramentas (ex.: arrastar e soltar, rolagem, leitura de estilos computados, manipulação de DOM).
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| script | string | Sim | Código JavaScript a executar |
| args | array | Não | Argumentos acessíveis via arguments[0], etc. |
window
Gerencia janelas e abas do navegador.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| action | string | Sim | list, switch, switch_latest ou close |
| handle | string | Não | Identificador da janela (obrigatório para switch) |
frame
Alterna o foco para um frame ou de volta para a página principal.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| action | string | Sim | switch ou default |
| by | string | Não | Estratégia de localização (para switch) |
| value | string | Não | Valor do localizador (para switch) |
| index | number | Não | Índice do frame, baseado em 0 (para switch) |
| timeout | number | Não | Tempo máximo de espera em ms (padrão: 10000) |
alert
Lida com diálogos de alerta, confirmação ou prompt do navegador.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| action | string | Sim | accept, dismiss, get_text ou send_text |
| text | string | Não | Texto a enviar (obrigatório para send_text) |
| timeout | number | Não | Tempo máximo de espera em ms (padrão: 5000) |
add_cookie
Adiciona um cookie. O navegador deve estar em uma página do domínio do cookie.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Sim | Nome do cookie |
| value | string | Sim | Valor do cookie |
| domain | string | Não | Domínio do cookie |
| path | string | Não | Caminho do cookie |
| secure | boolean | Não | Sinalizador seguro |
| httpOnly | boolean | Não | Sinalizador somente HTTP |
| expiry | number | Não | Carimbo de data/hora Unix |
get_cookies
Obtém cookies. Retorna todos ou um específico pelo nome.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Não | Nome do cookie. Omita para obter todos. |
delete_cookie
Exclui cookies. Exclui todos ou um específico pelo nome.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| name | string | Não | Nome do cookie. Omita para excluir todos. |
diagnostics
Obtém diagnósticos do navegador capturados via WebDriver BiDi (habilitado automaticamente quando suportado).
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| type | string | Sim | console, errors ou network |
| clear | boolean | Não | Limpar buffer após retornar (padrão: false) |
Recursos
Os recursos MCP fornecem dados somente leitura que os clientes podem acessar sem chamar uma ferramenta.
browser-status://current
Retorna o status da sessão atual do navegador (ID da sessão ativa ou "nenhuma sessão ativa").
| Propriedade | Valor |
|---|---|
| Tipo MIME | text/plain |
| Requer navegador | Não |
accessibility://current
Retorna um instantâneo da árvore de acessibilidade da página atual — uma representação JSON compacta e estruturada de elementos interativos e conteúdo de texto. Muito menor que o HTML completo. Útil para entender o layout da página e encontrar elementos para interagir.
| Propriedade | Valor |
|---|---|
| Tipo MIME | application/json |
| Requer navegador | Sim |
Desenvolvimento
Configuração
git clone https://github.com/angiejones/mcp-selenium.git
cd mcp-selenium
npm install
Executar Testes
npm test
Requer Chrome + chromedriver no PATH. Os testes são executados em modo headless.
Instalar via Smithery
npx -y @smithery/cli install @angiejones/mcp-selenium --client claude
Instalar globalmente
npm install -g @angiejones/mcp-selenium
mcp-selenium
Licença
MIT
