gemini-web-mcp
Provides tools for interacting with the Google Gemini web interface, enabling automated conversational tasks, deep research, file uploads, chat management, and session monitoring.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@gemini-web-mcpUse deep research to explore the future of quantum computing"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Gemini Web MCP Agent
Un agente automatizado que interactúa con la interfaz web de Gemini usando Playwright y LangGraph, diseñado para ser controlado por un LLM a través de MCP.
📋 Requisitos
Docker y Docker Compose
Python 3.11+ (solo para configuración inicial de autenticación)
Cuenta de Google con acceso a Gemini
Servidor Redis (incluido en docker-compose) para persistencia de respuestas
Related MCP server: gemini-skill
🚀 Inicio Rápido
1. Configurar Autenticación Automatizada
El sistema ahora soporta autenticación automatizada y persistencia de sesión robusta.
Configurar Credenciales (Opcional): Crea o edita el archivo
.enven la raíz del proyecto y añade tus credenciales de Google si deseas que el login sea automático.GOOGLE_EMAIL=tu_email@gmail.com GOOGLE_PASSWORD=tu_password REDIS_URL=redis://localhost:6379/0 # Opcional, por defecto localhost para local, 'redis' para dockerIniciar Sesión Inicial: Ejecuta el script de configuración. Esto abrirá un navegador (automáticamente si configuraste el .env, o esperando tu input si no).
# Instalar dependencias pip install -r requirements.txt python -m playwright install chromium # Ejecutar setup python auth_setup.pyEl navegador se abrirá usando un perfil persistente guardado en
profiles/default.Si configuraste el
.env, el script intentará loguearse por ti.Si no, inicia sesión manualmente.
Una vez veas el chat de Gemini, cierra el navegador. El perfil se guardará automáticamente.
Configuración en Servidor Remoto (SSH/Headless): Si estás instalando esto en un servidor sin entorno gráfico, tienes dos opciones:
Opción A (Recomendada - Virtual Display): Usa el script
run_auth_remote.shque utilizaxvfb-run.sudo apt-get update && sudo apt-get install -y xvfb ./run_auth_remote.shEl script tomará capturas de pantalla periódicas en el directorio
screenshots/para que puedas ver el progreso y si se requiere interacción manual (ej. 2FA).Opción B (Headless): Ejecuta el script con el flag
--headless.python auth_setup.py --headlessNota: Esto requiere que
GOOGLE_EMAILyGOOGLE_PASSWORDestén configurados en el.env.
2. Ejecutar el Servidor MCP
# Construir y ejecutar el contenedor en segundo plano
docker compose up -d --build
# Ver los logs para confirmar que está funcionando
docker compose logs -f gemini-agentEl servidor estará disponible en http://localhost:8000.
Herramientas Disponibles
El agente expone varias herramientas para interactuar con Gemini. Para una guía detallada, consulta la Referencia de Herramientas.
1. Ejecución de Tareas: execute_gemini_tasks
Permite realizar consultas simples o invocar herramientas especiales de Gemini.
{
"tool": "execute_gemini_tasks",
"arguments": {
"tasks": ["Crea un resumen de las noticias de hoy"],
"tool": "deep_research"
}
}2. Control Visual: take_gemini_screenshot
Captura una imagen visual de la sesión actual para depuración o verificación.
3. Gestión de Archivos: upload_file_to_gemini
Sube archivos locales directamente al prompt de Gemini. Ideal para análisis de logs, imágenes o documentos.
4. Navegación: list_gemini_chats y switch_gemini_chat
Lista y cambia entre conversaciones existentes en tu historial.
5. Monitoreo: get_gemini_task_status y get_gemini_session_status
Consulta el progreso de tareas largas o verifica si la sesión sigue activa.
6. Gestión de Selectores: verify_gemini_selectors y update_gemini_selector
Permite verificar si los selectores CSS siguen funcionando (detectando cambios en la UI de Gemini) y actualizarlos dinámicamente sin reiniciar el servidor.
Al usarnew_chat: false en execute_gemini_tasks, el agente NO resetea la sesión. Esto es fundamental para monitorear el progreso de deep_research o para mantener el contexto de una conversación fluida. Por defecto, new_chat es true.
🌐 Uso Alternativo: API HTTP (curl)
También puedes interactuar con el agente directamente a través de HTTP.
Ejecutar una Tarea
curl -X POST http://localhost:8000/tasks \
-H "Content-Type: application/json" \
-d '{
"tasks": ["¿Cuáles son las últimas tendencias en IA?"]
}'Usar una Herramienta (ej. deep_research)
curl -X POST http://localhost:8000/tasks \
-H "Content-Type: application/json" \
-d '{
"tasks": ["Investiga el impacto de la IA en la educación"],
"tool": "deep_research"
}'🏗️ Arquitectura y Flujo Asíncrono
El agente está diseñado para manejar tareas de larga duración (como Deep Research de ~30min) sin bloquear al cliente MCP mediante un sistema de Polling Asíncrono:
Ejecución: Al llamar a
execute_gemini_tasks, el servidor devuelve unrequest_idinmediato y procesa la tarea en segundo plano.Persistencia: El estado y los resultados se guardan en Redis.
Recuperación: El cliente debe usar
get_gemini_task_statusperiódicamente para obtener la respuesta final.
Para más detalles, consulta:
Gestión Dinámica de Selectores
El sistema incluye un módulo de Verificación de Selectores que:
Fuente de Verdad: Usa Redis para almacenar la configuración de selectores. Si Redis está vacío, carga desde
config/selectors.json.Validación: Un script (
scripts/check_selectors.py) y una herramienta MCP (verify_gemini_selectors) pueden lanzar un navegador para comprobar si los elementos críticos (tools_button,send_button, etc.) son visibles.Actualización en Caliente: Si un selector falla, se puede actualizar usando
update_gemini_selectory el cambio se aplica inmediatamente en todas las sesiones activas, persistiendo en Redis.Automatización: Un cron job diario (8:00 AM) verifica automáticamente el estado de los selectores.
🔧 Solución de Problemas
Error: "No puedes acceder"
Si ves este error durante auth_setup.py, el script ya incluye configuraciones anti-detección. Asegúrate de:
Usar la última versión de Chrome.
Tener una conexión a internet estable.
Intentar desde una red diferente si el problema persiste.
Error: TimeoutError o el agente no funciona
Si el agente se queda esperando, especialmente después de una actualización de la web de Gemini:
Verifica el Perfil: Asegúrate de que la carpeta
profiles/defaultexiste. Si tienes dudas, borra la carpetaprofilesy ejecutapython auth_setup.pyde nuevo.Revisa los Selectores: El problema más común son los selectores de CSS desactualizados. La interfaz de Gemini puede cambiar, invalidando los selectores en
config/selectors.json.Abre la web de Gemini en tu navegador.
Usa las herramientas de desarrollador (F12) para inspeccionar los elementos que fallan (ej. el botón "Deep Research", el indicador de plan, etc.).
Actualiza los selectores correspondientes en
config/selectors.jsoncon valores únicos y estables.Reinicia el contenedor:
docker compose up -d --build.
Error Común de Selector: Ambigüedad
Un error frecuente es cuando un selector coincide con múltiples elementos (violación de "strict mode"). Por ejemplo, si text="Razonamiento" coincide tanto con el botón que abre el menú como con la opción dentro del menú.
Solución: Haz el selector más específico.
Mal (Ambiguo):
[role='menuitemradio']:has-text('Razonamiento')Bien (Específico):
menu [role='menuitemradio']:has-text('Razonamiento')
Al añadir menu como ancestro, te aseguras de que solo se seleccione el elemento dentro del menú emergente.
📁 Estructura del Proyecto
.
├── src/
│ ├── mcp_server.py # Servidor MCP y API HTTP
│ ├── mcp_controller/
│ │ ├── actions.py # Lógica de interacción con Playwright (POM)
│ │ ├── selectors.py # Gestión de selectores (Redis + File)
│ │ └── selector_validator.py # Lógica de validación de elementos UI
│ └── orchestrator/
│ ├── graph.py # Orquestación del workflow con LangGraph
│ └── state.py # Definición del estado del agente
├── doc/
│ ├── TOOLS.md # Referencia detallada de herramientas
│ ├── ARCHITECTURE.md # Resumen de arquitectura y flujo
│ ├── OPTIMIZATION.md # Mejores prácticas y optimización
│ └── NATURAL_LANGUAGE.md # Guía de uso con lenguaje natural
├── config/
│ └── selectors.json # Selectores CSS (la parte más frágil)
├── .env.example # Plantilla de variables de entorno
├── scripts/
│ └── check_selectors.py # Script de verificación para cron/manual
├── cron_setup.sh # Instalador del cron job diario
├── auth_setup.py # Script para generar auth_state.json
├── auth_state.json # Sesión guardada (ignorado por Git)
├── Dockerfile # Definición de la imagen del contenedor
├── docker-compose.yml # Orquestación de servicios Docker
└── requirements.txt # Dependencias de Python🔐 Seguridad
auth_state.jsony el directorioprofiles/contienen cookies de sesión de Google. Quien tenga esos archivos puede acceder a tu cuenta. Ambos están en.gitignore— nunca los subas al repositorio ni los compartas.Las credenciales (
GOOGLE_EMAIL,GOOGLE_PASSWORD) van únicamente en.env(también ignorado por git). Usa.env.examplecomo plantilla.Para mayor seguridad, borra
profiles/yauth_state.jsony regenera la autenticación periódicamente.Si alguna vez commiteaste uno de estos archivos por accidente, no basta con borrarlo: reescribe el historial (p. ej. con
git filter-repo) y cierra las sesiones de tu cuenta de Google (myaccount.google.com → Seguridad → Administrar dispositivos) o cambia tu contraseña para invalidar las cookies filtradas.
📄 Licencia
Este proyecto está bajo la licencia MIT — puedes usarlo, modificarlo y redistribuirlo libremente.
🛠️ Desarrollo
Ejecutar localmente (sin Docker)
# Instalar dependencias
pip install -r requirements.txt
python -m playwright install chromium
# Es necesario tener auth_state.json generado
# Ejecutar el servidor directamente
python src/mcp_server.pyThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityDmaintenanceAn MCP server that enables AI-powered browser automation, web scraping, and testing using Playwright across Chromium, Firefox, and WebKit. It allows users to perform actions like navigation, clicking, typing, and taking screenshots through natural language interfaces.Last updated14MIT
- Alicense-qualityCmaintenanceMCP server to control Gemini web interface via CDP for AI image generation, chat, and image extraction.Last updated828MIT
- AlicenseAqualityBmaintenanceMCP server for AI-powered research using Gemini. Provides fast grounded web search, deep autonomous research, URL extraction, and session management.Last updated69MIT
- AlicenseAqualityCmaintenanceAn advanced MCP server that provides an agentic interface to Google's Gemini 3.1 models via Vertex AI, combining real-time Google Search, URL analysis, and Python code execution to solve complex multi-step research and data tasks.Last updated1MIT
Related MCP Connectors
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
MCP server for Gainium — manage trading bots, deals, and balances via AI assistants
MCP server exposing the Backtest360 engine API as tools for AI agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/edwyn211/gemini-web-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server