Playwright Server
Um servidor para automação de navegador utilizando a biblioteca Playwright.
Documentação
Playwright Server MCP
Um servidor MCP baseado em Playwright, fornecendo capacidades de automação de navegador
Componentes
Recursos
O servidor implementa um sistema simples de armazenamento de notas:
- Esquema de URI personalizado note:// para acessar notas individuais
- Cada recurso de nota possui nome, descrição e tipo MIME text/plain
Prompts
O servidor fornece um único recurso de prompt:
- summarize-notes: Cria um resumo de todas as notas armazenadas
- Parâmetro opcional "style" controla o nível de detalhe (brief/detailed)
- Gera um prompt que combina todas as notas atuais com a preferência de estilo
Ferramentas
O servidor implementa as seguintes ferramentas relacionadas ao Playwright:
Sessão e Navegação
-
playwright_new_session: Cria uma nova sessão de navegador e abre a janela do navegador- Parâmetro opcional
url(string), especifica a URL inicial de acesso; se não preenchido, apenas abre o navegador
- Parâmetro opcional
-
playwright_navigate: Navega para a URL especificada- Requer o parâmetro
url(string); se não contiver o prefixo http ou https, https:// será adicionado automaticamente - Se não houver uma sessão de navegador ativa, uma nova sessão será criada automaticamente
- Requer o parâmetro
Interação com a Página e Obtenção de Conteúdo
-
playwright_screenshot: Tira um screenshot da página atual ou de um elemento específico- Requer o parâmetro
name(string), nome do arquivo de screenshot, sem necessidade de incluir extensão - Parâmetro opcional
selector(string), seletor CSS para especificar o elemento da página a ser capturado; se não preenchido, captura a página inteira
- Requer o parâmetro
-
playwright_evaluate: Executa código JavaScript no console do navegador- Requer o parâmetro
script(string), código JavaScript a ser executado no navegador
- Requer o parâmetro
-
playwright_get_text_content: Obtém o conteúdo de texto de todos os elementos visíveis na página atual- Sem parâmetros
- Filtra inteligentemente conteúdo duplicado, retornando apenas texto significativo
-
playwright_get_html_content: Obtém o conteúdo HTML de um elemento específico na página- Requer o parâmetro
selector(string), seletor CSS para localizar o elemento da página cujo HTML deve ser obtido
- Requer o parâmetro
Operações Avançadas de Interação
playwright_action: Suporta seleção de elementos e formas de interação ricas- Parâmetros obrigatórios:
by: Método de seleção de elementos, suporta get_by_text, get_by_placeholder, get_by_label, get_by_role, etc.by_value: Valor para seleção do elementoaction: Tipo de operação, como fill, click, dblclick, hover, check, etc.
- Parâmetros opcionais:
value: Valor da operaçãoforce: Se deve forçar a execução da açãodelay: Atraso entre teclas (milissegundos)- E mais parâmetros especializados, consulte a documentação do código
- Parâmetros obrigatórios:
Configuração
Requisitos do Sistema
- Python 3.10+
- Playwright 1.44+
Início Rápido
Instalação
Configuração do Claude Desktop
MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
Configuração de servidor de desenvolvimento/não publicado
"mcpServers": {
"playwright-server": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\xxxxx\\Documents\\project\\python\\mcp\\playwright-server",
"run",
"playwright-server"
]
}
}
Configuração de servidor publicado
"mcpServers": {
"playwright-server": {
"command": "uvx",
"args": [
"playwright-server"
]
}
}
Desenvolvimento
Construção e Publicação
Preparar o pacote de publicação:
- Sincronizar dependências e atualizar o arquivo de bloqueio:
uv sync
- Construir a distribuição do pacote:
uv build
Isso criará distribuições de código-fonte e wheel no diretório dist/.
- Publicar no PyPI:
uv publish
Nota: Você precisa definir as credenciais do PyPI por meio de variáveis de ambiente ou argumentos de comando:
- Token:
--tokenouUV_PUBLISH_TOKEN - Ou nome de usuário/senha:
--username/UV_PUBLISH_USERNAMEe--password/UV_PUBLISH_PASSWORD
Depuração
Como o servidor MCP é executado via stdio, a depuração pode ser desafiadora. Para a melhor experiência de depuração, recomendamos fortemente o uso do MCP Inspector.
Você pode iniciar o MCP Inspector usando o seguinte comando via npm:
npx @modelcontextprotocol/inspector uv --directory C:\Users\xxxxx\Documents\project\python\mcp\playwright-server run playwright-server
Após a inicialização, o Inspector exibirá uma URL que você pode acessar no navegador para começar a depurar.
Exemplos de Uso
Acesso Básico à Página e Screenshot
# 创建会话并导航到指定网址
await playwright_navigate(url="example.com")
# 截取整个页面
await playwright_screenshot(name="fullpage")
# 截取特定元素
await playwright_screenshot(name="logo", selector=".logo")
Operações Avançadas de Interação
# 点击文本匹配的按钮
await playwright_action(by="get_by_text", by_value="登录", action="click")
# 填充表单字段
await playwright_action(by="get_by_placeholder", by_value="用户名", action="fill", value="test@example.com")
# 检查元素是否可见
await playwright_action(by="get_by_test_id", by_value="submit-button", action="is_visible")