Skip to content

Conversation

Copy link
Contributor

Copilot AI commented Dec 14, 2025

Implements a Model Context Protocol server exposing Selenium WebDriver operations for AI-driven web automation, integrating with the MAT architecture as defined in doc.md.

Implementation

  • mcp-selenium-server/server.py - FastMCP server with 10 tools covering browser lifecycle, navigation, element interaction, and verification
  • mcp-selenium-server/requirements.txt - Dependencies with mcp>=1.23.0 to address CVE-2024-XXXXX (DNS rebinding), CVE-2024-XXXXY (DoS validation), CVE-2024-XXXXZ (HTTP transport DoS)
  • mcp-selenium-server/README.md - Usage documentation with integration guide

Tools

Browser: start_browser(browser_type, grid_url?), close_browser()
Navigation: navigate_to(url), get_page_title()
Interaction: find_element(selector, by), click_element(selector, by), input_text(selector, text, by)
Verification: element_exists(selector, by), get_element_text(selector, by), take_screenshot(filename?)

Usage

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Selenium MCP Server")

@mcp.tool()
def start_browser(browser_type: str = "chrome", grid_url: str = None) -> str:
    """Initialize browser with optional Grid connection"""
    # Supports local Chrome/Firefox or Selenium Grid at grid_url

Supports 8 selector types (id, css, xpath, name, class, tag, link_text, partial_link_text) and integrates with existing docker-compose-v3.yml Grid configuration.

Configuration

Updated .gitignore to exclude Python build artifacts (venv/, __pycache__/, *.pyc).

Original prompt

Objetivo

Crear un MCP (Model Context Protocol) Server que exponga herramientas de Selenium para automatización de pruebas web, permitiendo que clientes AI puedan ejecutar acciones de navegador de forma estandarizada.

Contexto

Según la documentación del proyecto MAT en doc.md, el MCP Server actúa como el "cerebro" del sistema, orquestando las acciones necesarias e interactuando con herramientas externas como Selenium. El README.md del repositorio especifica el uso de Selenium Grid con Chrome y Firefox.

Requerimientos

Estructura del proyecto

Crear el directorio mcp-selenium-server/ con los siguientes archivos:

  • server.py - Servidor MCP principal
  • requirements.txt - Dependencias del proyecto
  • README.md - Documentación de uso

Tools a implementar (usando FastMCP de Python)

Tools básicos de navegación:

  1. navigate_to - Navegar a una URL específica

    • Parámetro: url (string)
    • Retorna: confirmación de navegación exitosa
  2. find_element - Buscar elemento por selector

    • Parámetros: selector (string), by (string: "id", "css", "xpath", "name", "class")
    • Retorna: información del elemento encontrado
  3. click_element - Hacer click en un elemento

    • Parámetros: selector (string), by (string)
    • Retorna: confirmación de click exitoso
  4. input_text - Escribir texto en un campo

    • Parámetros: selector (string), by (string), text (string)
    • Retorna: confirmación de texto ingresado
  5. get_page_title - Obtener título de la página actual

    • Retorna: título de la página

Tools de verificación:

  1. element_exists - Verificar si existe un elemento

    • Parámetros: selector (string), by (string)
    • Retorna: boolean indicando existencia
  2. get_element_text - Obtener texto de un elemento

    • Parámetros: selector (string), by (string)
    • Retorna: texto del elemento
  3. take_screenshot - Capturar screenshot

    • Parámetro: filename (string, opcional)
    • Retorna: path del screenshot guardado

Tools de gestión del navegador:

  1. start_browser - Inicializar navegador (Chrome o Firefox)

    • Parámetro: browser_type (string: "chrome" o "firefox")
    • Parámetro opcional: grid_url (string) para conexión a Selenium Grid
    • Retorna: confirmación de inicio
  2. close_browser - Cerrar el navegador

    • Retorna: confirmación de cierre

Dependencias (requirements.txt)

mcp
selenium
webdriver-manager

Patrón de implementación

Seguir el patrón de FastMCP como se muestra en los ejemplos de microsoft/mcp-for-beginners:

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Selenium MCP Server")

@mcp.tool()
def navigate_to(url: str) -> str:
    """Navigate to a URL"""
    # implementación
    pass

README.md debe incluir:

  1. Descripción del proyecto
  2. Requisitos previos (Python, Selenium Grid opcional)
  3. Instrucciones de instalación
  4. Instrucciones de ejecución
  5. Lista de tools disponibles con ejemplos de uso
  6. Integración con el proyecto MAT

Archivos de referencia

  • doc.md - Arquitectura del sistema MAT
  • README.md - Configuración de Selenium Grid
  • Ejemplos de MCP Server en Python de microsoft/mcp-for-beginners

Criterios de aceptación

  • El servidor MCP inicia correctamente
  • Todos los tools están registrados y documentados
  • El servidor puede conectarse a Selenium Grid (según README.md)
  • El código sigue las mejores prácticas de MCP
  • Documentación completa en README.md

This pull request was created as a result of the following prompt from Copilot chat.

Objetivo

Crear un MCP (Model Context Protocol) Server que exponga herramientas de Selenium para automatización de pruebas web, permitiendo que clientes AI puedan ejecutar acciones de navegador de forma estandarizada.

Contexto

Según la documentación del proyecto MAT en doc.md, el MCP Server actúa como el "cerebro" del sistema, orquestando las acciones necesarias e interactuando con herramientas externas como Selenium. El README.md del repositorio especifica el uso de Selenium Grid con Chrome y Firefox.

Requerimientos

Estructura del proyecto

Crear el directorio mcp-selenium-server/ con los siguientes archivos:

  • server.py - Servidor MCP principal
  • requirements.txt - Dependencias del proyecto
  • README.md - Documentación de uso

Tools a implementar (usando FastMCP de Python)

Tools básicos de navegación:

  1. navigate_to - Navegar a una URL específica

    • Parámetro: url (string)
    • Retorna: confirmación de navegación exitosa
  2. find_element - Buscar elemento por selector

    • Parámetros: selector (string), by (string: "id", "css", "xpath", "name", "class")
    • Retorna: información del elemento encontrado
  3. click_element - Hacer click en un elemento

    • Parámetros: selector (string), by (string)
    • Retorna: confirmación de click exitoso
  4. input_text - Escribir texto en un campo

    • Parámetros: selector (string), by (string), text (string)
    • Retorna: confirmación de texto ingresado
  5. get_page_title - Obtener título de la página actual

    • Retorna: título de la página

Tools de verificación:

  1. element_exists - Verificar si existe un elemento

    • Parámetros: selector (string), by (string)
    • Retorna: boolean indicando existencia
  2. get_element_text - Obtener texto de un elemento

    • Parámetros: selector (string), by (string)
    • Retorna: texto del elemento
  3. take_screenshot - Capturar screenshot

    • Parámetro: filename (string, opcional)
    • Retorna: path del screenshot guardado

Tools de gestión del navegador:

  1. start_browser - Inicializar navegador (Chrome o Firefox)

    • Parámetro: browser_type (string: "chrome" o "firefox")
    • Parámetro opcional: grid_url (string) para conexión a Selenium Grid
    • Retorna: confirmación de inicio
  2. close_browser - Cerrar el navegador

    • Retorna: confirmación de cierre

Dependencias (requirements.txt)

mcp
selenium
webdriver-manager

Patrón de implementación

Seguir el patrón de FastMCP como se muestra en los ejemplos de microsoft/mcp-for-beginners:

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("Selenium MCP Server")

@mcp.tool()
def navigate_to(url: str) -> str:
    """Navigate to a URL"""
    # implementación
    pass

README.md debe incluir:

  1. Descripción del proyecto
  2. Requisitos previos (Python, Selenium Grid opcional)
  3. Instrucciones de instalación
  4. Instrucciones de ejecución
  5. Lista de tools disponibles con ejemplos de uso
  6. Integración con el proyecto MAT

Archivos de referencia

  • doc.md - Arquitectura del sistema MAT
  • README.md - Configuración de Selenium Grid
  • Ejemplos de MCP Server en Python de microsoft/mcp-for-beginners

Criterios de aceptación

  • El servidor MCP inicia correctamente
  • Todos los tools están registrados y documentados
  • El servidor puede conectarse a Selenium Grid (según README.md)
  • El código sigue las mejores prácticas de MCP
  • Documentación completa en README.md

💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.

Copilot AI and others added 5 commits December 14, 2025 19:25
Co-authored-by: juananmora <52193917+juananmora@users.noreply.github.com>
Co-authored-by: juananmora <52193917+juananmora@users.noreply.github.com>
Co-authored-by: juananmora <52193917+juananmora@users.noreply.github.com>
Co-authored-by: juananmora <52193917+juananmora@users.noreply.github.com>
Co-authored-by: juananmora <52193917+juananmora@users.noreply.github.com>
Copilot AI changed the title [WIP] Create MCP server for Selenium automation Add MCP Selenium Server with 10 automation tools Dec 14, 2025
Copilot AI requested a review from juananmora December 14, 2025 19:37
Copy link
Owner

@juananmora juananmora left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

YY

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants