Skip to main content
Glama

MCP Selenium WebDriver

by Nixon-Suarez
  • Linux
  • Apple
design_architecture.md4.01 kB
# Diseño de la Arquitectura del Servidor MCP con Selenium WebDriver ## 1. Componentes Principales ### 1.1 Servidor MCP (`FastMCP`) El núcleo del sistema será un servidor MCP implementado con `FastMCP` del SDK de Python. Este servidor expondrá las funcionalidades de Selenium WebDriver como **herramientas (tools)** y, posiblemente, configuraciones o estados como **recursos (resources)**. ### 1.2 Módulo de Gestión de WebDriver (`webdriver_manager.py`) Este módulo será responsable de: - Iniciar y cerrar instancias de navegadores (Chrome, Firefox). - Configurar opciones del navegador (modo headless, tamaño de ventana, etc.). - Aplicar configuraciones de evasión de detección (plugins, argumentos de inicio). - Gestionar proxies. ### 1.3 Módulo de Interacción con Selenium (`selenium_interactor.py`) Este módulo contendrá las funciones que interactúan directamente con Selenium WebDriver para realizar las acciones solicitadas: - Navegar a URLs. - Encontrar elementos (por ID, XPath, CSS Selector, etc.). - Hacer clic, escribir, interactuar con elementos. - Acciones de ratón (hover, arrastrar y soltar). - Manejo de entrada de teclado. - Tomar capturas de pantalla. - Subir archivos. ## 2. Estructura de Directorios ``` mcp_selenium_server/ ├── server.py # Punto de entrada del servidor MCP ├── webdriver_manager.py # Lógica para gestionar WebDrivers y opciones ├── selenium_interactor.py # Funciones de interacción con Selenium ├── requirements.txt # Dependencias del proyecto ├── config.py # Archivo de configuración (opcional, para proxies, etc.) └── Dockerfile # Para facilitar el despliegue (opcional) ``` ## 3. Definición de Herramientas MCP (Tools) Las siguientes funcionalidades de Selenium se expondrán como herramientas MCP. Cada herramienta recibirá los parámetros necesarios y devolverá el resultado de la operación. - `start_browser(browser_type: str, options: dict = None, proxy: dict = None)`: Inicia una nueva sesión de navegador. Devuelve un ID de sesión. - `navigate_to_url(session_id: str, url: str)`: Navega a una URL específica. - `find_element(session_id: str, strategy: str, value: str)`: Encuentra un elemento. Devuelve información sobre el elemento (e.g., ID interno, tag, texto). - `click_element(session_id: str, element_id: str)`: Hace clic en un elemento. - `type_text(session_id: str, element_id: str, text: str)`: Escribe texto en un elemento. - `take_screenshot(session_id: str, path: str)`: Toma una captura de pantalla. - `upload_file(session_id: str, element_id: str, file_path: str)`: Sube un archivo. - `execute_script(session_id: str, script: str, *args)`: Ejecuta JavaScript en el navegador. - `close_browser(session_id: str)`: Cierra una sesión de navegador. ## 4. Manejo de la Evasión de Detección - **Plugins/Extensiones:** Se explorará el uso de extensiones de navegador (e.g., `undetected_chromedriver`) o la carga de extensiones personalizadas a través de las opciones del navegador. - **Configuraciones del Navegador:** Se configurarán opciones específicas del navegador (user-agent, resolución, WebGL, etc.) para simular un usuario real. - **Proxies:** Se integrará el soporte para proxies HTTP/SOCKS para enmascarar la dirección IP. ## 5. Gestión de Sesiones El `webdriver_manager.py` mantendrá un mapeo de `session_id` a instancias de WebDriver para permitir que múltiples clientes MCP controlen diferentes sesiones de navegador de forma independiente. ## 6. Dependencias Clave - `mcp`: Para el servidor MCP. - `selenium`: Para la automatización del navegador. - `webdriver_manager`: Para la gestión automática de los controladores de navegador. - `undetected_chromedriver` (opcional, pero recomendado para evasión de detección). Este diseño proporciona una base sólida para construir el servidor MCP solicitado, separando las preocupaciones y facilitando la implementación y el mantenimiento.

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nixon-Suarez/MCP-Selenium-WebDriver'

If you have feedback or need assistance with the MCP directory API, please join our Discord server