Google Workspace MCP Documentation
Complete reference for all Google Workspace MCP tools. Explore Gmail, Drive, Docs, Sheets, Calendar, and more.
Authentication
The server supports both legacy OAuth 2.0 for single-user mode and OAuth 2.1 for multi-user environments.
Source: auth/auth_info_middleware.py
OAuth 2.1 (Multi-User)
Enabled by setting `MCP_ENABLE_OAUTH21=true`. Uses bearer token authentication, which is ideal for web applications and other clients where multiple users need to authenticate. The server includes an innovative CORS proxy to handle browser-based authentication flows seamlessly.
Legacy OAuth 2.0 (Single-User)
The default authentication method. Suitable for single-user setups and clients that do not support OAuth 2.1. Requires configuring credentials via environment variables or a `client_secret.json` file.
Google Calendar MCP
Google Calendar MCP integration - Manage calendars, events, and scheduling with AI
Source: gcalendar/calendar_tools.py
list_calendars
Lists all calendars accessible to the authenticated user.
get_events
Retrieves upcoming events from a specified calendar within a time range.
| Parameter | Required | Description |
|---|---|---|
calendar_id | Optional | Calendar ID (default: primary) |
time_min | Optional | Start time (RFC3339 or YYYY-MM-DD) |
time_max | Optional | End time (RFC3339 or YYYY-MM-DD) |
max_results | Optional | Max number of events (default: 25) |
create_event
Creates a new calendar event. Supports all-day and timed events.
| Parameter | Required | Description |
|---|---|---|
summary | Required | Event title |
start_time | Required | Start time (RFC3339 or YYYY-MM-DD) |
end_time | Required | End time (RFC3339 or YYYY-MM-DD) |
calendar_id | Optional | Calendar ID (default: primary) |
description | Optional | |
location | Optional | |
attendees | Optional | |
timezone | Optional |
modify_event
Updates an existing event by ID. Only provided fields will be modified.
| Parameter | Required | Description |
|---|---|---|
event_id | Required | ID of the event to modify |
calendar_id | Optional | Calendar ID (default: primary) |
summary | Optional | |
start_time | Optional | |
end_time | Optional | |
description | Optional | |
location | Optional | |
attendees | Optional | |
timezone | Optional |
delete_event
Deletes an event by ID.
| Parameter | Required | Description |
|---|---|---|
event_id | Required | ID of the event to delete |
calendar_id | Optional | Calendar ID (default: primary) |
Google Drive MCP
Google Drive MCP server - Access and manage files and folders through MCP protocol
Source: gdrive/drive_tools.py
search_drive_files
Searches for files and folders across the user's Drive
| Parameter | Required | Description |
|---|---|---|
query | Required | Search query string (e.g., name contains 'report') |
max_results | Optional | Maximum number of files to return |
get_drive_file_content
Retrieves the content of a specific file
| Parameter | Required | Description |
|---|---|---|
file_id | Required | The ID of the file |
mime_type | Optional | Specify the desired export format |
list_drive_items
Lists files and folders within a specific folder or the root
| Parameter | Required | Description |
|---|---|---|
folder_id | Optional | The ID of the folder to list (defaults to root) |
max_results | Optional | Maximum number of items to return |
create_drive_file
Creates a new file in Google Drive
| Parameter | Required | Description |
|---|---|---|
name | Required | The desired name for the new file |
content | Required | The text content to write into the file |
folder_id | Optional | The ID of the parent folder |
mime_type | Optional | The MIME type of the file (defaults to text/plain) |
Gmail MCP
Gmail MCP integration - Send, receive, and manage emails with AI assistance
Source: gmail/gmail_tools.py
search_gmail_messages
Searches messages and returns Message and Thread IDs with web links.
| Parameter | Required | Description |
|---|---|---|
query | Required | Search query (supports Gmail operators) |
page_size | Optional | Max number of messages (default: 10) |
get_gmail_message_content
Retrieves the full content (subject, sender, body) of a specific email.
| Parameter | Required | Description |
|---|---|---|
message_id | Required | The ID of the message to retrieve |
get_gmail_messages_content_batch
Retrieves content for multiple messages in a single batch request.
| Parameter | Required | Description |
|---|---|---|
message_ids | Required | List of message IDs to retrieve |
format | Optional | Format ("full" or "metadata") |
get_gmail_thread_content
Retrieves the complete content of a conversation thread.
| Parameter | Required | Description |
|---|---|---|
thread_id | Required | The ID of the thread to retrieve |
get_gmail_threads_content_batch
Retrieves content for multiple threads in a single batch request.
| Parameter | Required | Description |
|---|---|---|
thread_ids | Required | List of thread IDs to retrieve |
send_gmail_message
Sends an email. Supports new emails and replies.
| Parameter | Required | Description |
|---|---|---|
to | Required | Recipient email address |
subject | Required | Email subject |
body | Required | Email body (plain text) |
cc | Optional | CC recipient |
bcc | Optional | BCC recipient |
thread_id | Optional | Thread ID to reply within |
in_reply_to | Optional | Message-ID being replied to |
draft_gmail_message
Creates a draft email. Supports new drafts and reply drafts.
| Parameter | Required | Description |
|---|---|---|
to | Optional | Recipient email address |
subject | Required | Email subject |
body | Required | Email body (plain text) |
thread_id | Optional | Thread ID to reply within |
list_gmail_labels
Lists all labels in the user's account.
manage_gmail_label
Manages Gmail labels: create, update, or delete.
| Parameter | Required | Description |
|---|---|---|
action | Required | Action: "create", "update", or "delete" |
name | Optional | Label name (required for create) |
label_id | Optional | Label ID (required for update/delete) |
modify_gmail_message_labels
Adds or removes labels from a message. Use to archive (remove INBOX) or delete (add TRASH).
| Parameter | Required | Description |
|---|---|---|
message_id | Required | The ID of the message to modify |
add_label_ids | Optional | List of label IDs to add |
remove_label_ids | Optional | List of label IDs to remove |
batch_modify_gmail_message_labels
Adds or removes labels from multiple messages in a batch.
| Parameter | Required | Description |
|---|---|---|
message_ids | Required | List of message IDs to modify |
add_label_ids | Optional | List of label IDs to add |
remove_label_ids | Optional | List of label IDs to remove |
Google Docs MCP
Google Docs MCP server - Create and edit documents with AI-powered MCP tools
Source: gdocs/docs_tools.py
search_docs
Search for Google Docs by name (using Drive API).
| Parameter | Required | Description |
|---|---|---|
query | Required | Text to search for in Doc names |
page_size | Optional | optional, default: 10 |
get_doc_content
Retrieve the plain text content of a Google Doc by its document ID.
| Parameter | Required | Description |
|---|---|---|
document_id | Required |
list_docs_in_folder
List all Google Docs inside a given Drive folder (by folder ID, default = root).
| Parameter | Required | Description |
|---|---|---|
folder_id | Optional | optional, default: 'root' |
page_size | Optional | optional, default: 100 |
create_doc
Create a new Google Doc, optionally with initial content.
| Parameter | Required | Description |
|---|---|---|
title | Required | Name for the doc |
content | Optional | optional, default: empty |
read_doc_comments
Read all comments and replies from a Google Doc.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | The ID of the Google Document |
reply_to_comment
Reply to specific comments in documents.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | The ID of the Google Document |
comment_id | Required | The ID of the comment to reply to |
reply_content | Required | The content of the reply |
create_doc_comment
Create new comments on documents.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | The ID of the Google Document |
comment_content | Required | The content of the comment |
resolve_comment
Mark comments as resolved.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | The ID of the Google Document |
comment_id | Required | The ID of the comment to resolve |
Google Chat MCP
Google Chat MCP integration - Send and receive messages through MCP protocol
Source: gchat/chat_tools.py
list_spaces
Lists Google Chat spaces (rooms and DMs) accessible to the user.
| Parameter | Required | Description |
|---|---|---|
page_size | Optional | optional, default: 100 |
space_type | Optional | optional, default: "all", can be "room" or "dm" |
get_messages
Retrieves messages from a specific Google Chat space.
| Parameter | Required | Description |
|---|---|---|
space_id | Required | |
page_size | Optional | optional, default: 50 |
order_by | Optional | optional, default: "createTime desc" |
send_message
Sends a message to a Google Chat space.
| Parameter | Required | Description |
|---|---|---|
space_id | Required | |
message_text | Required | |
thread_key | Optional | To reply in a thread |
search_messages
Searches for messages across Chat spaces by text content.
| Parameter | Required | Description |
|---|---|---|
query | Required | Text to search for |
space_id | Optional | If provided, searches only in this space |
page_size | Optional | optional, default: 25 |
Google Forms MCP
Google Forms MCP server - Create and manage forms and responses with AI
Source: gforms/forms_tools.py
create_form
Creates a new form with a title and optional description.
| Parameter | Required | Description |
|---|---|---|
title | Required | The title of the form |
description | Optional | The description of the form |
document_title | Optional | The document title (shown in browser tab) |
get_form
Retrieves details about a specific form, including its questions and URLs.
| Parameter | Required | Description |
|---|---|---|
form_id | Required | The ID of the form to retrieve |
set_publish_settings
Updates the publish settings of a form, such as making it a template or requiring authentication.
| Parameter | Required | Description |
|---|---|---|
form_id | Required | The ID of the form to update |
publish_as_template | Optional | Whether to publish as a template |
require_authentication | Optional | Whether to require authentication |
get_form_response
Retrieves a single response from a form by its ID.
| Parameter | Required | Description |
|---|---|---|
form_id | Required | The ID of the form |
response_id | Required | The ID of the response to retrieve |
list_form_responses
Lists all responses for a given form, with support for pagination.
| Parameter | Required | Description |
|---|---|---|
form_id | Required | The ID of the form |
page_size | Optional | Maximum number of responses to return |
page_token | Optional | Token for retrieving the next page of results |
Google Tasks MCP
Google Tasks MCP integration - Manage tasks and task lists via MCP protocol
Source: gtasks/tasks_tools.py
list_task_lists
List all task lists for the user.
| Parameter | Required | Description |
|---|---|---|
max_results | Optional | Maximum number of task lists to return |
page_token | Optional | Token for pagination |
get_task_list
Get details of a specific task list.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The ID of the task list to retrieve |
create_task_list
Create a new task list.
| Parameter | Required | Description |
|---|---|---|
title | Required | The title of the new task list |
update_task_list
Update an existing task list.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The ID of the task list to update |
title | Required | The new title for the task list |
delete_task_list
Delete a task list. Note: This will also delete all tasks in the list.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The ID of the task list to delete |
list_tasks
List all tasks in a specific task list.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The ID of the task list |
max_results | Optional | Maximum number of tasks to return |
page_token | Optional | Token for pagination |
show_completed | Optional | Whether to include completed tasks |
get_task
Get details of a specific task.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The ID of the task list |
task_id | Required | The ID of the task to retrieve |
create_task
Create a new task in a task list.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The ID of the task list |
title | Required | The title of the task |
notes | Optional | Notes for the task |
due | Optional | Due date in RFC 3339 format |
update_task
Update an existing task.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The ID of the task list |
task_id | Required | The ID of the task to update |
title | Optional | New title for the task |
status | Optional | New status ("needsAction" or "completed") |
delete_task
Delete a task from a task list.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The ID of the task list |
task_id | Required | The ID of the task to delete |
move_task
Move a task to a different position or list.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The current task list ID |
task_id | Required | The ID of the task to move |
parent | Optional | New parent task ID |
destination_task_list | Optional | Destination task list ID |
clear_completed_tasks
Clear all completed tasks from a task list.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The ID of the task list to clear |
Google Custom Search
Perform web searches using a Programmable Search Engine
Source: gsearch/search_tools.py
search_custom
Performs a search using the Google Custom Search JSON API.
| Parameter | Required | Description |
|---|---|---|
q | Required | The search query |
num | Optional | Number of results to return (1-10) |
start | Optional | The index of the first result to return |
safe | Optional | Safe search level (active, moderate, off) |
site_search | Optional | Restrict search to a specific site |
get_search_engine_info
Retrieves metadata about the configured Programmable Search Engine.
search_custom_siterestrict
Performs a search restricted to a list of specific sites.
| Parameter | Required | Description |
|---|---|---|
q | Required | The search query |
sites | Required | List of sites/domains to search within |
num | Optional | Number of results to return |
Google Sheets MCP
Google Sheets MCP server - Create and manage spreadsheets with AI automation
Source: gsheets/sheets_tools.py
get_spreadsheet_info
Retrieves metadata about a specified spreadsheet, including its title, ID, and details about individual sheets (name, ID, size).
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet |
read_sheet_values
Reads data from a given range within a sheet.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet |
range | Required | The A1 notation range to read (e.g., "Sheet1!A1:C10") |
modify_sheet_values
Allows for writing, updating, or clearing values in a specified range of a sheet.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet |
range | Required | The A1 notation range to modify (e.g., "Sheet1!A1:C10") |
values | Required | The values to write (2D array) |
value_input_option | Optional | How values should be interpreted (RAW or USER_ENTERED) |
create_spreadsheet
Creates a new Google Spreadsheet, optionally with specified sheet names.
| Parameter | Required | Description |
|---|---|---|
title | Required | The title of the new spreadsheet |
sheet_names | Optional | List of sheet names to create (optional) |
create_sheet
Adds a new sheet to an existing spreadsheet.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet |
sheet_title | Required | The title of the new sheet |
Google Slides MCP
Google Slides MCP integration - Create and manage presentations through MCP
Source: gslides/slides_tools.py
create_presentation
Create a new presentation with the given title.
| Parameter | Required | Description |
|---|---|---|
title | Required | The title of the presentation. |
get_presentation
Get presentation details including slides and content.
| Parameter | Required | Description |
|---|---|---|
presentation_id | Required | The ID of the presentation to retrieve. |
add_slide
Add a new slide to the presentation.
| Parameter | Required | Description |
|---|---|---|
presentation_id | Required | The ID of the presentation. |
layout | Optional | The layout for the new slide. |
insertion_index | Optional | Index where to insert the slide. |
update_slide_content
Update content on a specific slide.
| Parameter | Required | Description |
|---|---|---|
presentation_id | Required | The ID of the presentation. |
slide_id | Required | The ID of the slide to update. |
element_id | Required | The ID of the element to update. |
new_content | Required | The new content for the element. |