Google MCP
Un servidor MCP todo en uno para Google Workspace
Documentación
Servidor Google MCP
Un servidor integral del Protocolo de Contexto de Modelo (MCP) para la integración con Google, que proporciona acceso a Google Calendar, Docs, Sheets, Slides, Drive, Gmail, Contacts, YouTube, Tasks, Forms, Chat y Meet.
Características
Google Forms
- Crear y gestionar formularios de Google
- Agregar preguntas (opción múltiple, respuesta corta, casillas de verificación, etc.)
- Agregar saltos de página, elementos de texto, imágenes y videos
- Listar y recuperar respuestas de formularios
- Actualizar la configuración del formulario (modo de cuestionario, etc.)
Google Chat
- Listar, crear y gestionar espacios de Chat
- Enviar, actualizar y eliminar mensajes
- Agregar y quitar reacciones
- Gestionar miembros del espacio
- Soporte de hilos para conversaciones
Google Meet
- Crear espacios de reunión con controles de acceso
- Programar reuniones mediante la integración con Calendar
- Crear reuniones instantáneas
- Listar y acceder a registros de conferencias
- Ver información de participantes
- Acceder a grabaciones y transcripciones de reuniones
Google Calendar
- Listar calendarios y eventos
- Crear, actualizar y eliminar eventos
- Agregar eventos rápidamente usando lenguaje natural
- Obtener los eventos de hoy y los próximos eventos
- Consultar disponibilidad libre/ocupado
Google Gmail
- Leer, buscar y listar correos electrónicos
- Enviar correos y responder a hilos, con archivos adjuntos
- Listar y descargar archivos adjuntos en mensajes recibidos
- Marcar como leído/no leído, mover a la papelera
- Listar etiquetas y organizar correos
Google Contacts (API de People)
- Listar, buscar y gestionar contactos
- Crear, actualizar y eliminar contactos
- Listar grupos de contactos
Google Drive
- Listar, buscar y explorar archivos y carpetas
- Subir, descargar, copiar, mover y eliminar archivos, de texto o binarios
- Reemplazar el contenido de un archivo existente
- Exportar archivos de Google Workspace a otros formatos (PDF, DOCX, CSV, ...)
- Crear carpetas
- Renombrar archivos
Google Docs
- Crear nuevos documentos con contenido inicial opcional
- Leer el contenido del documento
- Insertar y agregar texto
- Buscar y reemplazar texto
- Listar todos los documentos
Google Sheets
- Crear hojas de cálculo con múltiples hojas
- Leer valores de rangos
- Actualizar y agregar valores
- Limpiar rangos
- Agregar y eliminar hojas
- Listar todas las hojas de cálculo
Google Slides
- Crear y gestionar presentaciones
- Agregar, eliminar y duplicar diapositivas
- Agregar cuadros de texto e imágenes
- Buscar y reemplazar texto
- Listar todas las presentaciones
Google YouTube
- Buscar videos, canales y listas de reproducción
- Obtener detalles de videos y canales
- Ver y gestionar listas de reproducción
- Obtener comentarios de videos
- Ver suscripciones y videos que me gustan
- Calificar videos
Google Tasks (Alternativa a Keep)
- Gestionar listas de tareas (similares a las categorías de Keep)
- Crear, actualizar, completar y eliminar tareas
- Las tareas admiten notas/descripciones (similares a las notas de Keep)
- Herramientas de "notas" convenientes que brindan funcionalidad similar a Keep
Nota: Google Keep no tiene una API pública oficial. Este servidor utiliza la API de Google Tasks como alternativa, que proporciona capacidades similares de toma de notas a través de tareas con descripciones.
Instalación
# Clone the repository
cd google-mcp
# Install dependencies
pnpm install
# Build the project
pnpm build
Configuración de Google Cloud
Antes de usar este servidor, debe configurar las credenciales de Google Cloud:
1. Crear un proyecto de Google Cloud
- Vaya a Consola de Google Cloud
- Cree un nuevo proyecto o seleccione uno existente
- Habilite las siguientes API:
- API de Google Calendar
- API de Google Docs
- API de Google Sheets
- API de Google Slides
- API de Google Drive
- API de Gmail
- API de People (Contactos)
- API de datos de YouTube v3
- API de Google Tasks
- API de Google Forms
- API de Google Chat
- API REST de Google Meet
2. Crear credenciales OAuth 2.0
- Navegue a API y servicios > Credenciales
- Haga clic en Crear credenciales > ID de cliente de OAuth
- Seleccione Aplicación de escritorio como tipo de aplicación
- Descargue el archivo JSON
3. Colocar el archivo de credenciales
Guarde el archivo JSON descargado como credentials.json en la ubicación adecuada para su plataforma:
Linux:
~/.config/google-mcp/credentials.json
(o $XDG_CONFIG_HOME/google-mcp/credentials.json si XDG_CONFIG_HOME está configurado)
macOS:
~/Library/Application Support/google-mcp/credentials.json
Windows:
%APPDATA%\google-mcp\credentials.json
(normalmente C:\Users\<username>\AppData\Roaming\google-mcp\credentials.json)
El archivo debería verse así:
{
"installed": {
"client_id": "YOUR_CLIENT_ID.apps.googleusercontent.com",
"project_id": "your-project-id",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://oauth2.googleapis.com/token",
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
"client_secret": "YOUR_CLIENT_SECRET",
"redirect_uris": ["http://localhost:3000/oauth2callback"]
}
}
Uso con clientes MCP
El servidor se ejecuta como un trabajador agrupado de larga duración, no como un subproceso de stdio. Expone el transporte HTTP Streamable actual en /mcp y conserva el transporte HTTP+SSE heredado en /sse más /messages para clientes más antiguos. Inicie el trabajador una vez y luego apunte los clientes a /mcp.
Inicie el trabajador:
node /path/to/google-mcp/dist/index.js
# or from the project directory:
pnpm dev
Escucha en 127.0.0.1:3015 de forma predeterminada. Anule con GOOGLE_MCP_HOST y GOOGLE_MCP_PORT (o PORT).
Agregue a su configuración de ajustes de MCP:
{
"mcpServers": {
"google": {
"url": "http://127.0.0.1:3015/mcp"
}
}
}
Cada cliente que se conecta obtiene su propia sesión de MCP mientras comparte una sesión autenticada de Google, por lo que solo completa el flujo de OAuth una vez sin importar cuántos clientes o agentes se conecten. Los clientes SSE heredados pueden continuar usando http://127.0.0.1:3015/sse.
Autenticación
En el primer uso, llame a la herramienta google_auth para iniciar la autenticación OAuth:
- El servidor proporcionará una URL para autenticarse
- Abra la URL en un navegador e inicie sesión con su cuenta de Google
- Conceda los permisos solicitados
- La autenticación se completará automáticamente
Los tokens se almacenan localmente y se actualizarán automáticamente:
- Linux:
~/.local/share/google-mcp/tokens.json(o$XDG_DATA_HOME/google-mcp/) - macOS:
~/Library/Application Support/google-mcp/tokens.json - Windows:
%APPDATA%\google-mcp\tokens.json
Archivos locales
Las herramientas que leen un archivo local (path) o escriben uno (savePath) resuelven cada ruta dentro de un único directorio de espacio aislado, que por defecto es ~/Downloads/google-mcp. Las rutas relativas se toman desde esa raíz; las rutas absolutas deben estar dentro de ella.
Esto es importante porque los argumentos provienen de un modelo que puede haber leído un correo electrónico hostil. Sin un límite, un "adjuntar ~/.ssh/id_rsa" inyectado es una primitiva de exfiltración y un savePath inyectado de ~/.ssh/authorized_keys es ejecución de código. Dentro del espacio aislado, ambos son inertes.
export GOOGLE_MCP_FILE_ROOT="$HOME/Documents/mcp-files"
Independientemente de la raíz, el servidor se niega a tocar directorios de claves y credenciales (.ssh, .aws, .gnupg, ...) o archivos que parezcan secretos (*.pem, *.key, tokens.json, credentials.json, .env*), no sigue enlaces simbólicos fuera de la raíz y nunca sobrescribe un archivo existente.
Las transferencias en línea están limitadas a 1 MB, ya que llegan al contexto del modelo; pase savePath para cualquier cosa más grande, hasta 25 MB.
Herramientas disponibles
Autenticación
| Herramienta | Descripción |
|---|---|
google_auth | Iniciar autenticación OAuth |
google_auth_status | Verificar estado de autenticación |
google_auth_code | Establecer manualmente el código de autenticación |
google_logout | Cerrar sesión y borrar tokens |
Google Calendar
| Herramienta | Descripción |
|---|---|
calendar_list | Listar todos los calendarios |
calendar_get | Obtener detalles del calendario |
calendar_list_events | Listar eventos del calendario |
calendar_get_event | Obtener detalles del evento |
calendar_create_event | Crear nuevo evento |
calendar_update_event | Actualizar evento existente |
calendar_delete_event | Eliminar un evento |
calendar_quick_add | Agregar evento mediante lenguaje natural |
calendar_get_freebusy | Verificar disponibilidad |
calendar_today | Obtener los eventos de hoy |
calendar_upcoming | Obtener próximos eventos |
Google Gmail
| Herramienta | Descripción |
|---|---|
gmail_get_profile | Obtener información del perfil de Gmail |
gmail_list_labels | Listar etiquetas de Gmail |
gmail_list_messages | Listar correos electrónicos |
gmail_get_message | Obtener correo electrónico específico |
gmail_send | Enviar un correo electrónico |
gmail_reply | Responder a un correo electrónico |
gmail_get_attachment | Descargar un archivo adjunto de un mensaje |
gmail_trash | Mover a la papelera |
gmail_mark_read | Marcar como leído |
gmail_mark_unread | Marcar como no leído |
gmail_search | Buscar correos electrónicos |
gmail_get_unread | Obtener correos no leídos |
gmail_get_thread | Obtener hilo de correo electrónico |
Google Contacts
| Herramienta | Descripción |
|---|---|
contacts_list | Listar contactos |
contacts_get | Obtener detalles del contacto |
contacts_search | Buscar contactos |
contacts_create | Crear contacto |
contacts_delete | Eliminar contacto |
contacts_list_groups | Listar grupos de contactos |
Google Drive
| Herramienta | Descripción |
|---|---|
drive_list_files | Listar archivos con filtrado |
drive_get_file | Obtener metadatos del archivo |
drive_download_file | Descargar contenido del archivo, texto o binario |
drive_upload_file | Subir un nuevo archivo |
drive_update_file | Reemplazar el contenido de un archivo existente |
drive_delete_file | Eliminar un archivo |
drive_create_folder | Crear una nueva carpeta |
drive_search | Buscar archivos por contenido |
drive_move_file | Mover archivo a carpeta |
drive_copy_file | Copiar un archivo |
drive_rename_file | Renombrar un archivo |
Google Docs
| Herramienta | Descripción |
|---|---|
docs_create | Crear un nuevo documento |
docs_read | Leer contenido del documento |
docs_insert_text | Insertar texto en una posición |
docs_append_text | Agregar texto al final |
docs_replace_text | Buscar y reemplazar texto |
docs_list | Listar todos los documentos |
Google Sheets
| Herramienta | Descripción |
|---|---|
sheets_create | Crear hoja de cálculo |
sheets_get | Obtener información de la hoja de cálculo |
sheets_read | Leer valores de un rango |
sheets_update | Actualizar valores en un rango |
sheets_append | Agregar filas |
sheets_clear | Limpiar un rango |
sheets_add_sheet | Agregar una nueva hoja |
sheets_delete_sheet | Eliminar una hoja |
sheets_list | Listar todas las hojas de cálculo |
Google Slides
| Herramienta | Descripción |
|---|---|
slides_create | Crear presentación |
slides_get | Obtener presentación |
slides_list | Listar presentaciones |
slides_add_slide | Agregar una diapositiva |
slides_delete_slide | Eliminar una diapositiva |
slides_add_text | Agregar cuadro de texto |
slides_add_image | Agregar imagen |
slides_replace_text | Buscar/reemplazar texto |
slides_duplicate_slide | Duplicar diapositiva |
Google YouTube
| Herramienta | Descripción |
|---|---|
youtube_search | Buscar en YouTube |
youtube_get_video | Obtener detalles del video |
youtube_get_channel | Obtener detalles del canal |
youtube_get_my_channel | Obtener su canal |
youtube_list_playlists | Listar sus listas de reproducción |
youtube_get_playlist_items | Obtener videos de la lista de reproducción |
youtube_get_video_comments | Obtener comentarios del video |
youtube_list_subscriptions | Listar suscripciones |
youtube_list_liked_videos | Listar videos que me gustan |
youtube_rate_video | Me gusta/No me gusta video |
Google Tasks
| Herramienta | Descripción |
|---|---|
tasks_list_tasklists | Listar listas de tareas |
tasks_create_tasklist | Crear lista de tareas |
tasks_delete_tasklist | Eliminar lista de tareas |
tasks_list_tasks | Listar tareas |
tasks_create_task | Crear una tarea |
tasks_update_task | Actualizar una tarea |
tasks_delete_task | Eliminar una tarea |
tasks_complete_task | Marcar tarea como completada |
Notas (similares a Keep)
| Herramienta | Descripción |
|---|---|
notes_create | Crear una nota rápida |
notes_list | Listar todas las notas |
notes_update | Actualizar una nota |
notes_delete | Eliminar una nota |
Google Forms
| Herramienta | Descripción |
|---|---|
forms_create | Crear un nuevo formulario |
forms_get | Obtener detalles del formulario |
forms_update_info | Actualizar título/descripción |
forms_add_question | Agregar una pregunta |
forms_delete_item | Eliminar elemento del formulario |
forms_list_responses | Listar respuestas del formulario |
forms_get_response | Obtener respuesta específica |
forms_add_page_break | Agregar salto de página |
forms_add_text | Agregar elemento de texto |
forms_add_image | Agregar imagen |
forms_add_video | Agregar video de YouTube |
Google Chat
| Herramienta | Descripción |
|---|---|
chat_list_spaces | Listar espacios de Chat |
chat_get_space | Obtener detalles del espacio |
chat_create_space | Crear un espacio |
chat_delete_space | Eliminar un espacio |
chat_list_messages | Listar mensajes |
chat_get_message | Obtener detalles del mensaje |
chat_send_message | Enviar un mensaje |
chat_update_message | Actualizar un mensaje |
chat_delete_message | Eliminar un mensaje |
chat_list_members | Listar miembros del espacio |
chat_add_member | Añadir un miembro |
chat_remove_member | Eliminar un miembro |
chat_add_reaction | Añadir reacción con emoji |
Google Meet
| Herramienta | Descripción |
|---|---|
meet_create_space | Crear espacio de reunión |
meet_get_space | Obtener detalles del espacio |
meet_end_conference | Finalizar reunión activa |
meet_schedule | Programar una reunión |
meet_create_instant | Crear reunión instantánea |
meet_get_by_event | Obtener reunión desde evento |
meet_list_upcoming | Listar próximas reuniones |
meet_list_conference_records | Listar reuniones pasadas |
meet_get_conference_record | Obtener registro de reunión |
meet_list_participants | Listar participantes |
meet_list_recordings | Listar grabaciones |
meet_get_recording | Obtener grabación |
meet_list_transcripts | Listar transcripciones |
meet_get_transcript | Obtener transcripción |
meet_list_transcript_entries | Obtener texto de transcripción |
Ejemplos
Enviar un Correo Electrónico
Use gmail_send with to "recipient@example.com", subject "Hello", and body "This is a test email."
Crear un Evento de Calendario
Use calendar_create_event with summary "Team Meeting", startDateTime "2025-01-15T10:00:00-05:00", and endDateTime "2025-01-15T11:00:00-05:00"
Buscar en YouTube
Use youtube_search with query "MCP tutorial" and type "video"
Crear un Documento de Google
Use docs_create with title "Meeting Notes" and content "# Weekly Meeting\n\nAttendees: ..."
Leer una Hoja de Cálculo
Use sheets_read with spreadsheetId "abc123" and range "Sheet1!A1:D10"
Buscar en Drive
Use drive_search with query "quarterly report"
Crear una Nota
Use notes_create with title "Shopping List" and content "- Milk\n- Eggs\n- Bread"
Crear un Formulario de Google
Use forms_create with title "Customer Survey" and description "Help us improve our service"
Enviar un Mensaje de Chat
Use chat_send_message with spaceName "spaces/AAAAA" and text "Hello team!"
Programar una Reunión de Google Meet
Use meet_schedule with summary "Team Standup", startTime "2025-01-15T09:00:00-05:00", and endTime "2025-01-15T09:30:00-05:00"
Desarrollo
# Run in development mode with hot reload
pnpm dev
# Build for production
pnpm build
# Run tests
pnpm test
Licencia
Licencia MIT - consulte LICENSE para más detalles.
Contribuciones
¡Las contribuciones son bienvenidas! No dude en enviar una Solicitud de Extracción (Pull Request).