原始内容
pi-google-services
Google Calendar & Gmail MCP server for Pi. Lets your Pi agent manage your calendar and emails through natural language.
Setup
pi-google-services login # Opens browser → authorize with Google
pi-google-services serve # Start MCP server (done automatically by Pi)
Calendar tools
list-events
Show events in a date range.
Examples:
- "mostrame los eventos de mañana"
- "qué tengo esta semana?"
- "eventos del 20 al 25 de junio"
Arguments:
timeMin(ISO 8601) — start of range (default: today 00:00)timeMax(ISO 8601) — end of range (default: today 23:59)calendarId— calendar to query (default: primary)maxResults— max events (default: 50)
create-event
Create a new calendar event with optional attendees and Google Meet.
Examples:
- "creá una reunión mañana a las 15"
- "agendá una llamada con juan@gmail.com el jueves a las 10"
- "creá un evento 'Cumpleaños' el 25/12 todo el día"
- "creá un meet virtual mañana a las 16 con Meet"
Arguments:
summary(required) — event titlestartTime(required) — ISO 8601 startendTime(required) — ISO 8601 endattendees— comma-separated emails to invitewithMeet(boolean) — add Google Meet linkdescription— event descriptionlocation— event locationcalendarId— target calendar (default: primary)
update-event
Modify an existing event.
Examples:
- "cambiá la reunión de mañana a las 16"
- "renombrá el evento de la cena a 'Cena con amigos'"
Arguments:
eventId(required) — event to modifysummary,startTime,endTime— fields to updatecalendarId— target calendar (default: primary)
delete-event
Remove an event.
Examples:
- "borrá el evento de prueba del viernes"
- "eliminá la reunión de las 15"
Arguments:
eventId(required) — event to deletecalendarId— target calendar (default: primary)
search-events
Search events by text.
Examples:
- "buscá eventos de 'reunión'"
- "encontrá cuando hablé de 'presentación'"
Arguments:
query(required) — text to searchmaxResults— max results (default: 50)
list-calendars
List all available calendars.
Examples:
- "mostrame mis calendarios"
- "qué calendarios tengo?"
get-freebusy
Check availability across calendars.
Examples:
- "estoy libre mañana a las 15?"
- "qué horarios tengo ocupados esta semana?"
Arguments:
timeMin,timeMax— range to checkcalendarIds— comma-separated calendar IDs
Gmail tools
list-inbox
List recent inbox messages.
Examples:
- "mostrame mis emails"
- "qué hay en mi bandeja de entrada?"
- "mostrame los últimos 5 emails de LinkedIn"
Arguments:
maxResults— max emails (default: 20)query— optional Gmail search filter
get-email
Read a full email by ID.
Examples:
- "leé el primer email de la lista"
- "mostrame el contenido completo del mail de belo"
Arguments:
id(required) — email message ID
search-emails
Search emails with Gmail syntax.
Examples:
- "buscá emails de belo"
- "encontrá mails sobre 'Uber' de esta semana"
- "mostrame los no leídos"
Arguments:
query(required) — Gmail search querymaxResults— max results (default: 20)
send-email
Send a new email with optional file attachments.
Examples:
- "enviále un mail a lucsk94@gmail.com con asunto 'Prueba' y cuerpo 'Hola, esto es una prueba'"
- "mandále un email a juan@mail.com diciendo que la reunión se pasó al viernes"
- "enviále un email a maria@work.com con el PDF /home/user/reporte.pdf adjunto"
Arguments:
to(required) — recipient emailsubject(required) — email subjectbody— email body textattachments— array of files to attach. Each item can havelocalPath(local file) ordriveFileId(Google Drive file ID)
reply-to-email
Reply to an existing thread with optional file attachments.
Examples:
- "respondé el mail de Natalia aceptando la invitación"
- "contestále al de belo que ya lo vi"
- "respondé al mail de ventas adjuntando /home/user/cotizacion.pdf"
Arguments:
threadId(required) — thread to reply toto(required) — recipient emailsubject(required) — reply subjectbody— reply body textattachments— array of files to attach. Each item can havelocalPath(local file) ordriveFileId(Google Drive file ID)
Tasks tools
list-tasklists
Show all task lists.
Examples:
- "mostrame mis listas de tareas"
list-tasks
List tasks (pending, completed, or all).
Examples:
- "mostrame mis tareas pendientes"
- "qué tareas tengo para hacer?"
- "mostrame las tareas completadas"
Arguments:
taskListId— task list ID (default: @default)status— filter: pending, completed, or '' for allmaxResults— max results (default: 50)
create-task
Create a new task.
Examples:
- "creá una tarea para comprar leche"
- "agendá 'llamar al dentista' para mañana"
Arguments:
title(required) — task titletaskListId— target list (default: @default)notes— optional descriptiondueDate— due date (YYYY-MM-DD)
complete-task
Mark a task as done.
Examples:
- "marcá como hecha la tarea de la leche"
- "completá la tarea del dentista"
Arguments:
taskId(required) — task to completetaskListId— target list (default: @default)
delete-task
Delete a task.
Examples:
- "borrá la tarea de prueba"
Arguments:
taskId(required) — task to deletetaskListId— target list (default: @default)