MCP Browser Console Capture Service

Un servicio de automatización de navegador para capturar la salida de la consola, útil para tareas como el análisis de sentimiento público.

Documentación

MCP Browser Console Capture Service

Resumen

MCP Browser Console Capture Service es un servicio de automatización de navegador basado en el framework FastMCP, diseñado específicamente para el sistema de análisis de opinión pública inteligente. Este servicio proporciona control completo del navegador, ejecución de JavaScript, captura de registros de consola y funciones de interacción con la página.

Stack tecnológico

  • FastMCP: Marco de servicios MCP (Model Context Protocol)
  • Selenium: Herramienta de automatización de navegador
  • Chrome: Navegador principal compatible
  • ChromeDriver: Controlador del navegador Chrome
  • Python 3.10.12+: Entorno de ejecución

Funciones principales

🌐 Control del navegador

  • Iniciar y gestionar instancias del navegador Chrome/Firefox
  • Navegación de páginas y acceso a URL
  • Ajuste y gestión del tamaño de la ventana
  • Soporte para múltiples sesiones

📝 Ejecución de JavaScript

  • Ejecutar código JavaScript personalizado en la página
  • Obtener resultados de ejecución y valores de retorno
  • Soporte para ejecución de scripts asíncronos

📊 Captura de registros de consola

  • Capturar en tiempo real los registros de la consola del navegador
  • Soporta múltiples niveles de registro (INFO, WARNING, ERROR, DEBUG)
  • Devolución de datos de registro estructurados
  • Límite configurable de cantidad de registros (máximo 10000)

🎯 Interacción con la página

  • Clic en elementos y entrada de texto
  • Espera de elementos y verificación de condiciones
  • Función de captura de pantalla de la página
  • Obtención de cookies e información de la página

🔐 Mecanismo de autenticación

  • Soporta autenticación especial test-token-eric
  • Permisos de administrador por defecto
  • Registro completo de operaciones

Pasos de configuración del entorno

1. Requisitos del sistema

# Ubuntu/Debian 系统
sudo apt update
sudo apt install -y python3 python3-pip python3-venv

# 安装必要的系统依赖
sudo apt install -y wget unzip curl

2. Instalación de Chrome y ChromeDriver

Importante: Este servicio requiere una ruta específica para el navegador Chrome

3. Instalación de ChromeDriver

Importante: La versión de ChromeDriver debe coincidir con la versión de Chrome

Google Chrome for Testing 137.0.7151.119 ChromeDriver 137.0.7151.119 (e0ac9d12dff5f2d33c935958b06bf1ded7f1c08c-refs/branch-heads/7151@{#2356})

Descargue e instale usted mismo: dirección de origen json https://googlechromelabs.github.io/chrome-for-testing/last-known-good-versions-with-downloads.json

验证安装

/opt/chromedriver-linux64/chromedriver --version /opt/chrome-linux64/chrome --version

Configure la ruta correspondiente en server.py

4. Configuración del entorno Python

Crear entorno virtual

python3 -m venv venv
source venv/bin/activate

Instalar dependencias

pip install -r requirements.txt

Instalar FastMCP (si no está en requirements.txt)

pip install fastmcp

5. Configuración del archivo de configuración

Asegúrese de que la configuración de rutas en config.json sea correcta:

{
  "mcpServers": {
    "browser-console-capture": {
      "command": "/home/cooper/IntelligentPublicSentimentSystem/mcp_services/browser_console_capture/server.py",
      "args": [],
      "env": {
        "PYTHONPATH": "/home/cooper/IntelligentPublicSentimentSystem"
      }
    }
  }
}

6. Configuración de permisos

# 确保 Chrome 和 ChromeDriver 有执行权限
sudo chmod +x /opt/chrome-linux64/chrome
sudo chmod +x /opt/chromedriver-linux64/chromedriver

# 创建必要的目录
mkdir -p ./screenshots
mkdir -p ./logs

7. Verificación del entorno

# 测试 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 el servicio

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 - 状态字典初始化完成

Ejemplos de uso

Operaciones básicas del 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)

Interacción con la 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)

Descripción de configuración

Configuración del navegador

  • chrome_binary_path: Ruta del ejecutable del navegador Chrome
  • chromedriver_path: Ruta del ejecutable de ChromeDriver
  • headless: Si se ejecuta en modo headless
  • window_size: Tamaño de la ventana del navegador

Configuración de registros

  • log_level: Nivel de registro (DEBUG, INFO, WARNING, ERROR)
  • log_file: Ruta del archivo de registro
  • max_log_size: Tamaño máximo del archivo de registro

Configuración de rendimiento

  • page_load_timeout: Tiempo de espera de carga de página
  • script_timeout: Tiempo de espera de ejecución de script
  • implicit_wait: Tiempo de espera implícito

Funciones de herramientas MCP

函数名描述参数
start_browserIniciar instancia del navegadorbrowser_type, headless, window_width, window_height
navigate_to_urlNavegar a una URL específicaurl, wait_for_load
execute_javascriptEjecutar código JavaScriptscript, capture_console
get_console_logsObtener registros de consolalevel, limit, clear_after_get
click_elementHacer clic en un elemento de la páginaselector, by, timeout
input_textIngresar textoselector, text, by, clear_first
take_screenshotTomar captura de pantalla de la páginafilename, full_page, element_selector
close_browserCerrar instancia del navegadorNinguno

Consideraciones de seguridad

  1. Configuración de producción

    • Usar modo headless, por defecto True
    • Restringir acceso a la red
    • Configurar reglas de firewall
  2. Seguridad de autenticación

    • test-token-eric Se requiere token en ciertos casos

Guía de contribución

  1. Hacer fork del proyecto
  2. Crear una rama de funcionalidad
  3. Enviar cambios
  4. Crear un Pull Request

Licencia

Este proyecto utiliza la licencia MIT. Consulte el archivo LICENSE para más detalles.

Contacto

Si tiene preguntas o sugerencias, contacte a través de los siguientes medios: