MCP Browser Console Capture Service
Um serviço de automação de navegador para capturar saída do console, útil para tarefas como análise de sentimento público.
Documentação
MCP Browser Console Capture Service
Visão Geral
O MCP Browser Console Capture Service é um serviço de automação de navegador baseado no framework FastMCP, projetado especificamente para o sistema de análise de opinião pública inteligente. Este serviço oferece controle completo do navegador, execução de JavaScript, captura de logs do console e funcionalidades de interação com a página.
Stack de Tecnologias
- FastMCP: Framework de serviço MCP (Model Context Protocol)
- Selenium: Ferramenta de automação de navegador
- Chrome: Navegador principal suportado
- ChromeDriver: Driver do navegador Chrome
- Python 3.10.12+: Ambiente de execução
Funcionalidades Principais
🌐 Controle do Navegador
- Iniciar e gerenciar instâncias do Chrome/Firefox
- Navegação de páginas e acesso a URLs
- Ajuste e gerenciamento do tamanho da janela
- Suporte a múltiplas sessões
📝 Execução de JavaScript
- Executar código JavaScript personalizado na página
- Obter resultados de execução e valores de retorno
- Suporte à execução de scripts assíncronos
📊 Captura de Logs do Console
- Captura em tempo real dos logs do console do navegador
- Suporte a vários níveis de log (INFO, WARNING, ERROR, DEBUG)
- Retorno de dados de log estruturados
- Limite configurável de quantidade de logs (máximo de 10.000)
🎯 Interação com a Página
- Clique em elementos e entrada de texto
- Espera de elementos e verificação de condições
- Funcionalidade de captura de tela da página
- Obtenção de cookies e informações da página
🔐 Mecanismo de Autenticação
- Suporta autenticação especial
test-token-eric - Permissões de administrador padrão
- Registro completo de logs de operação
Etapas de Configuração do Ambiente
1. Requisitos do Sistema
# Ubuntu/Debian 系统
sudo apt update
sudo apt install -y python3 python3-pip python3-venv
# 安装必要的系统依赖
sudo apt install -y wget unzip curl
2. Instalação do Chrome e ChromeDriver
Importante: Este serviço requer o Chrome em um caminho específico
3. Instalação do ChromeDriver
Importante: A versão do ChromeDriver deve corresponder à versão do Chrome
Google Chrome for Testing 137.0.7151.119 ChromeDriver 137.0.7151.119 (e0ac9d12dff5f2d33c935958b06bf1ded7f1c08c-refs/branch-heads/7151@{#2356})
Baixe e instale você mesmo: endereço da fonte json https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json
Verificar instalação
/opt/chromedriver-linux64/chromedriver --version /opt/chrome-linux64/chrome --version
Configure o caminho correspondente no server.py
4. Configuração do Ambiente Python
Criar ambiente virtual
python3 -m venv venv
source venv/bin/activate
Instalar dependências
pip install -r requirements.txt
Instalar FastMCP (se não estiver no requirements.txt)
pip install fastmcp
5. Configuração do arquivo de configuração
Certifique-se de que os caminhos em config.json estejam configurados corretamente:
{
"mcpServers": {
"browser-console-capture": {
"command": "/home/cooper/IntelligentPublicSentimentSystem/mcp_services/browser_console_capture/server.py",
"args": [],
"env": {
"PYTHONPATH": "/home/cooper/IntelligentPublicSentimentSystem"
}
}
}
}
6. Configuração de permissões
# 确保 Chrome 和 ChromeDriver 有执行权限
sudo chmod +x /opt/chrome-linux64/chrome
sudo chmod +x /opt/chromedriver-linux64/chromedriver
# 创建必要的目录
mkdir -p ./screenshots
mkdir -p ./logs
7. Verificação do ambiente
# 测试 Chrome 启动
/opt/chrome-linux64/chrome --version --no-sandbox
# 测试 ChromeDriver
/opt/chromedriver-linux64/chromedriver --version
# 测试 Python 依赖
python3 -c "import selenium; print('Selenium version:', selenium.__version__)"
python3 -c "import fastmcp; print('FastMCP imported successfully')"
Iniciar o serviço
fastmcp run server.py:mcp
IntelligentPublicSentimentSystem/mcp_services/browser_console_capture$ fastmcp run server.py:mcp
2025-06-20 03:02:09,006 - server_module - INFO - 日志系统初始化完成,配置已加载 2025-06-20 03:02:09,010 - auth_utils - INFO - === 浏览器MCP认证配置 === 2025-06-20 03:02:09,010 - auth_utils - INFO - 默认用户: eric 2025-06-20 03:02:09,010 - auth_utils - INFO - 默认角色: admin 2025-06-20 03:02:09,010 - auth_utils - INFO - 特殊Token: test-token-eric 2025-06-20 03:02:09,011 - auth_utils - INFO - 浏览器MCP将自动使用eric用户身份进行认证 2025-06-20 03:02:09,011 - auth_utils - INFO - ========================== 2025-06-20 03:02:09,011 - server_module - INFO - 初始化FastMCP服务器... 2025-06-20 03:02:09,016 - server_module - INFO - FastMCP服务器初始化完成 2025-06-20 03:02:09,017 - server_module - INFO - 状态字典初始化完成
Exemplos de uso
Operações básicas do navegador
# 启动浏览器
start_browser(browser_type="chrome", headless=False)
# 导航到页面
navigate_to_url("https://example.com")
# 执行 JavaScript
execute_javascript("console.log('Hello World'); return document.title;")
# 获取控制台日志
get_console_logs(level="ALL", limit=100)
Interação com a página
# 点击元素
click_element("#submit-button", by="css")
# 输入文本
input_text("#search-input", "搜索内容", by="css")
# 等待元素
wait_for_element(".loading-complete", condition="visible")
# 截图
take_screenshot("page_screenshot.png", full_page=True)
Instruções de configuração
Configuração do navegador
chrome_binary_path: Caminho do executável do Chromechromedriver_path: Caminho do executável do ChromeDriverheadless: Se deve executar em modo headlesswindow_size: Tamanho da janela do navegador
Configuração de logs
log_level: Nível de log (DEBUG, INFO, WARNING, ERROR)log_file: Caminho do arquivo de logmax_log_size: Tamanho máximo do arquivo de log
Configuração de desempenho
page_load_timeout: Tempo limite de carregamento da páginascript_timeout: Tempo limite de execução de scriptimplicit_wait: Tempo de espera implícita
Funções de ferramentas MCP
| Nome da Função | Descrição | Parâmetros |
|---|---|---|
start_browser | Iniciar instância do navegador | browser_type, headless, window_width, window_height |
navigate_to_url | Navegar para URL especificada | url, wait_for_load |
execute_javascript | Executar código JavaScript | script, capture_console |
get_console_logs | Obter logs do console | level, limit, clear_after_get |
click_element | Clicar em elemento da página | selector, by, timeout |
input_text | Inserir texto | selector, text, by, clear_first |
take_screenshot | Capturar screenshot da página | filename, full_page, element_selector |
close_browser | Fechar instância do navegador | Nenhum |
Avisos de segurança
-
Configuração de produção
- Use o modo headless, o padrão é True
- Restrinja o acesso à rede
- Configure regras de firewall
-
Segurança de autenticação
test-token-eric- Situações em que é necessário token
Guia de contribuição
- Faça um fork do projeto
- Crie um branch de funcionalidade
- Envie as alterações
- Crie um Pull Request
Licença
Este projeto é licenciado sob a licença MIT. Consulte o arquivo LICENSE para mais detalhes.
Contato
Se tiver dúvidas ou sugestões, entre em contato pelos seguintes meios:
- Issues do projeto: GitHub Issues
- E-mail: E-mail do projeto
- Documentação: Documentação online