Documentation
Current reference for authentication, transport modes, CLI usage, and all Google Workspace tool groups.
Synced with v1.30.0 ·
Authentication
Legacy OAuth 2.0 and OAuth 2.1 multi-user flows, including stateless and external-provider modes.
Source: auth/
Enable Google Cloud APIs
Enable the API for each service you plan to use, in the same Google Cloud project as your OAuth client. Each link opens the Cloud Console enable flow for whichever project is currently selected, so check the project picker first. To enable them all from the CLI instead, run the gcloud command below with your project ID, dropping any services you will not use. Calls to a service whose API is disabled fail with a 403 SERVICE_DISABLED error. Google Chat also needs a Chat app configured on the Chat API Configuration tab before it accepts requests.
| Enable | API ID | Used by |
|---|---|---|
| Gmail API | gmail.googleapis.com | Gmail MCP |
| Google Drive API | drive.googleapis.com | Google Drive MCP |
| Google Calendar API | calendar-json.googleapis.com | Google Calendar MCP |
| Google Docs API | docs.googleapis.com | Google Docs MCP |
| Google Sheets API | sheets.googleapis.com | Google Sheets MCP |
| Google Slides API | slides.googleapis.com | Google Slides MCP |
| Google Forms API | forms.googleapis.com | Google Forms MCP |
| Google Tasks API | tasks.googleapis.com | Google Tasks MCP |
| People API | people.googleapis.com | Google Contacts MCP |
| Google Chat API | chat.googleapis.com | Google Chat MCP |
| Custom Search API | customsearch.googleapis.com | Google Custom Search MCP |
| Apps Script API | script.googleapis.com | Google Apps Script MCP |
gcloud services enable \
gmail.googleapis.com \
drive.googleapis.com \
calendar-json.googleapis.com \
docs.googleapis.com \
sheets.googleapis.com \
slides.googleapis.com \
forms.googleapis.com \
tasks.googleapis.com \
people.googleapis.com \
chat.googleapis.com \
customsearch.googleapis.com \
script.googleapis.com \
--project=PROJECT_IDOAuth 2.1 (Multi-User)
Enable with MCP_ENABLE_OAUTH21=true and run HTTP transport (--transport streamable-http). This is the recommended mode for modern MCP clients and bearer-token auth.
| Parameter | Required | Description |
|---|---|---|
MCP_ENABLE_OAUTH21 | Required | Set to true to enable OAuth 2.1 mode. |
--transport streamable-http | Required | Required transport for OAuth 2.1 and full MCP compliance. |
Legacy OAuth 2.0 (Single-User / Fallback)
Default mode when OAuth 2.1 is not enabled. Use this for older clients that do not support OAuth 2.1. --single-user cannot be combined with OAuth 2.1.
| Parameter | Required | Description |
|---|---|---|
--single-user | Optional | Legacy single-user flow; mutually exclusive with OAuth 2.1. |
OAUTHLIB_INSECURE_TRANSPORT | Optional | Set to 1 only for local HTTP development callbacks. |
Stateless Mode
Container-friendly mode with no filesystem writes. Requires OAuth 2.1 and bearer tokens on requests.
| Parameter | Required | Description |
|---|---|---|
WORKSPACE_MCP_STATELESS_MODE | Required | Set to true (requires OAuth 2.1). |
External OAuth 2.1 Provider
Use when your app handles OAuth externally. The server skips local OAuth flow and validates incoming bearer tokens.
| Parameter | Required | Description |
|---|---|---|
EXTERNAL_OAUTH21_PROVIDER | Required | Set to true with MCP_ENABLE_OAUTH21=true. |
OAuth Proxy Storage Backends
Select proxy storage backend for OAuth state in distributed deployments.
| Parameter | Required | Description |
|---|---|---|
WORKSPACE_MCP_OAUTH_PROXY_STORAGE_BACKEND | Optional | One of memory, disk, or valkey. |
WORKSPACE_MCP_OAUTH_PROXY_DISK_DIRECTORY | Optional | Disk backend path. |
WORKSPACE_MCP_OAUTH_PROXY_VALKEY_HOST | Optional | Valkey/Redis host for distributed storage. |
Service Account with Domain-Wide Delegation
Authenticate as a service account and impersonate domain users. When a tool call supplies user_google_email, it is used as the per-request impersonation subject, so one server instance can act for multiple domain users; USER_GOOGLE_EMAIL is the fallback subject.
| Parameter | Required | Description |
|---|---|---|
GOOGLE_SERVICE_ACCOUNT_KEY_FILE | Optional | Path to the service account JSON key file (or use GOOGLE_SERVICE_ACCOUNT_KEY_JSON inline — set one, not both). |
USER_GOOGLE_EMAIL | Required | Fallback impersonation subject when a tool call supplies no email. |
DWD_ALLOWED_DOMAINS | Optional | Comma-separated domain allowlist for per-request impersonation. Unset allows any email the delegation scope accepts. |
OAuth Consent Page Branding
Customize the OAuth 2.1 consent page shown to users during authorization.
| Parameter | Required | Description |
|---|---|---|
WORKSPACE_MCP_BRAND_NAME | Optional | Server name shown on the consent page. |
WORKSPACE_MCP_BRAND_ICON_URL | Optional | Consent-page logo (hosted URL or data: URI), shown at 64px wide. |
WORKSPACE_MCP_BRAND_WEBSITE_URL | Optional | Website link shown on the consent page. |
Server Modes and CLI
Transport guidance, CLI mode, tool tiers, and permission filtering options.
Source: main.py
HTTP Transport (Recommended)
Run with --transport streamable-http for Claude Code, VS Code MCP, MCP Inspector, and OAuth 2.1 support.
Stdio Transport (Legacy)
Use only for clients with incomplete MCP support. Not recommended for modern multi-user flows.
CLI Mode (`--cli`)
Directly list and invoke tools from the command line without running the full MCP server process.
| Parameter | Required | Description |
|---|---|---|
--cli list --json | Optional | List tools for scripting and automation. |
--cli <tool> --args <json> | Optional | Invoke a specific tool with JSON args. |
Tool Tiers
Three cumulative tiers for simplified deployments: core, extended, complete.
| Parameter | Required | Description |
|---|---|---|
--tool-tier core|extended|complete | Optional | Scope loaded tools to the selected tier. |
--disabled-tools TOOL_NAME ... | Optional | Block individual tools by name regardless of tier or permission selection. Composes with every other filtering option. Env var: WORKSPACE_MCP_DISABLED_TOOLS (comma-separated). |
Read-Only and Granular Permissions
--read-only requests readonly scopes and hides write tools. --permissions sets a per-service access level and implicitly selects which services load — only the services you list are imported. Levels are cumulative: each one includes every level to its left. Mutually exclusive with --read-only and --tools; combine with --tool-tier to narrow further within the selected services.
| Parameter | Required | Description |
|---|---|---|
--read-only | Optional | Requests readonly scopes and filters write tools. |
--permissions service:level ... | Optional | Space-separated per-service access levels, for example --permissions gmail:send drive:readonly. Env var: WORKSPACE_MCP_PERMISSIONS (space-separated). |
| Service | Levels (least to most permissive) | Notes |
|---|---|---|
gmail | readonlyorganizedraftssendfull | organize adds labels and modify, drafts adds compose, send adds sending, full adds basic settings. |
drive | readonlyfull | full adds full Drive access plus per-file access. |
calendar | readonlyfull | full adds calendar and event write access. |
docs | readonlyfull | Both levels include Drive readonly; full adds document write plus per-file Drive access. |
sheets | readonlyfull | Both levels include Drive readonly; full adds spreadsheet write access. |
slides | readonlyfull | full adds presentation write access. |
forms | readonlyfull | full adds form editing; responses stay read-only at both levels. |
chat | readonlyfull | full adds message and space write access. |
tasks | readonlymanagefull | manage creates and updates tasks but denies delete and clear_completed; full lifts those restrictions. |
contacts | readonlyfull | full adds contact write access. |
search | readonlyfull | Programmable Search is read-only by nature — both levels request the same scope. |
appscript | readonlyfull | Readonly covers projects, deployments, processes, and metrics; full adds project and deployment write. |
Reverse Proxy OAuth URL Overrides
Use external URL overrides when running behind a reverse proxy so generated OAuth endpoints match public domains.
| Parameter | Required | Description |
|---|---|---|
WORKSPACE_EXTERNAL_URL | Optional | Sets a public base URL for OAuth-related endpoints. |
GOOGLE_OAUTH_REDIRECT_URI | Optional | Override only the OAuth callback URL. |
OAUTH_CUSTOM_REDIRECT_URIS | Optional | Comma-separated additional redirect URIs. |
OAUTH_ALLOWED_ORIGINS | Optional | Comma-separated additional CORS origins. |
Attachment Storage
Downloaded Gmail/Drive attachments are stored in persistent local storage and exposed by URL in HTTP mode.
| Parameter | Required | Description |
|---|---|---|
WORKSPACE_ATTACHMENT_DIR | Optional | Override the default ~/.workspace-mcp/attachments/ location. |
OpenTelemetry Tracing (Optional)
Distributed tracing via the otel extra (pip install "workspace-mcp[otel]", included in the Docker image). Tracing is fully disabled unless an OTLP endpoint is configured; spans export only to the collector you specify. Standard OTLP variables for headers, TLS, sampling, and batching are honored.
| Parameter | Required | Description |
|---|---|---|
OTEL_EXPORTER_OTLP_ENDPOINT | Optional | OTLP collector endpoint. Unset means tracing is disabled. |
OTEL_EXPORTER_OTLP_PROTOCOL | Optional | grpc (default) or http/protobuf. |
OTEL_SERVICE_NAME | Optional | Service name — defaults to google-workspace-mcp. |
WORKSPACE_MCP_OTEL_USER_EMAIL | Optional | Set true to record the authenticated user's email on spans. PII — off by default. |
Logging
Server logs default to INFO. DEBUG includes companion lines that may contain user text, so enable it only when needed and treat its output as sensitive.
| Parameter | Required | Description |
|---|---|---|
WORKSPACE_MCP_LOG_LEVEL | Optional | CRITICAL, ERROR, WARNING, INFO (default), or DEBUG. Invalid values fall back to INFO. |
WORKSPACE_MCP_LOG_DIR | Optional | Directory for mcp_server_debug.log — defaults to ~/.google_workspace_mcp/logs. |
Google Calendar MCP
Calendar operations with consolidated event management, availability, and working-status tooling.
Source: gcalendar/calendar_tools.py
list_calendars
CoreLists calendars accessible to the authenticated user.
| Parameter | Required | Description |
|---|---|---|
max_results | Optional | Maximum calendars to return in one page. |
page_token | Optional | Token for the next page, taken from a previous response. Responses include a next page token whenever more calendars remain. |
get_events
CoreRetrieves events for a calendar and time range.
| Parameter | Required | Description |
|---|---|---|
calendar_id | Optional | Defaults to primary. |
time_min | Optional | RFC3339 or date. |
time_max | Optional | RFC3339 or date. |
max_results | Optional | Maximum events to return. |
single_events | Optional | Whether to expand recurring series into individual instances. Defaults to true. Set to false to retrieve recurring master events and their RFC 5545 recurrence rules. |
page_token | Optional | Token for the next page, taken from a previous response. With single_events true, also pass the response's pagination time_min as time_min (even if you omitted it on the first call) and keep every other query parameter unchanged. Ignored when event_id is set. |
manage_event
CoreConsolidated create, update, and delete event operations.
| Parameter | Required | Description |
|---|---|---|
action | Required | create, update, or delete. |
event_id | Optional | Required for update and delete. |
start_time | Optional | Start time (required for create). A timestamp with a UTC offset is kept as that exact instant; omit the offset and pass a timezone to book a local wall-clock time. Date-only values create all-day events. |
end_time | Optional | End time (required for create). Same offset rules as start_time; all-day end dates are exclusive. |
start_timezone | Optional | IANA timezone for the start boundary, overriding the shared timezone. Offset-bearing timestamps keep their instant; offset-free ones are read as local time in this zone. |
end_timezone | Optional | IANA timezone for the end boundary, overriding the shared timezone. Use separate boundary zones for events such as flights whose departure and arrival have different local times. |
attachments | Optional | Drive file IDs or share URLs to attach. On update the list replaces the event's existing attachments rather than adding to them, so pass the full set you want to keep. |
create_calendar
ExtendedCreate a new secondary Google Calendar.
| Parameter | Required | Description |
|---|---|---|
summary | Required | Name for the new calendar. |
description | Optional | Optional calendar description. |
timezone | Optional | IANA timezone (e.g., "America/New_York"). |
query_freebusy
ExtendedQuery free/busy information across one or more calendars.
| Parameter | Required | Description |
|---|---|---|
time_min | Required | Start of the window (RFC3339). |
time_max | Required | End of the window (RFC3339). |
calendar_ids | Optional | Calendar IDs to query. Defaults to primary. |
group_expansion_max | Optional | Maximum calendars to expand per group. |
calendar_expansion_max | Optional | Maximum calendars for which to return busy information. |
manage_out_of_office
ExtendedCreate, list, update, or delete Out of Office events.
| Parameter | Required | Description |
|---|---|---|
action | Required | create, list, update, or delete. |
start_time | Optional | Start time (required for create). |
end_time | Optional | End time (required for create). |
summary | Optional | Event title. |
auto_decline_mode | Optional | How conflicting meetings are declined. |
decline_message | Optional | Message sent with auto-declines. |
recurrence | Optional | RRULE strings for recurring events. |
event_id | Optional | Required for update and delete. |
calendar_id | Optional | Defaults to primary. |
manage_focus_time
ExtendedCreate, list, update, or delete Focus Time events.
| Parameter | Required | Description |
|---|---|---|
action | Required | create, list, update, or delete. |
start_time | Optional | Start time (required for create). |
end_time | Optional | End time (required for create). |
summary | Optional | Event title. |
auto_decline_mode | Optional | How conflicting meetings are declined. |
decline_message | Optional | Message sent with auto-declines. |
chat_status | Optional | Chat availability during focus time (e.g., "doNotDisturb"). |
recurrence | Optional | RRULE strings for recurring events. |
event_id | Optional | Required for update and delete. |
calendar_id | Optional | Defaults to primary. |
Google Drive MCP
Drive content, sharing, import/export, and permission management.
Source: gdrive/drive_tools.py
search_drive_files
CoreSearch Drive files and folders.
| Parameter | Required | Description |
|---|---|---|
query | Required | The search query string. Supports Google Drive search operators. |
page_size | Optional | The maximum number of files to return. Defaults to 10. |
page_token | Optional | Page token from a previous response's nextPageToken. |
drive_id | Optional | ID of the shared drive to search. |
file_type | Optional | Restrict results to specific file type (e.g., 'folder', 'document', 'pdf'). |
get_drive_file_content
CoreRead file content with export support.
| Parameter | Required | Description |
|---|---|---|
file_id | Required | Drive file ID. |
get_drive_file_download_url
CoreDownload Drive files via local path or HTTP attachment URL, or inline as an embedded resource in stateless mode.
| Parameter | Required | Description |
|---|---|---|
file_id | Required | The Google Drive file ID to download. |
export_format | Optional | Optional export format for Google native files. |
create_drive_file
CoreCreate files from inline content or source URLs.
| Parameter | Required | Description |
|---|---|---|
file_name | Required | The name for the new file. |
content | Optional | Text content to write to the file. |
folder_id | Optional | The ID of the parent folder. Defaults to 'root'. |
mime_type | Optional | The MIME type of the file. Defaults to 'text/plain'. |
fileUrl | Optional | If provided, fetches file content from this URL (file://, http://, https://). |
base64_content | Optional | Standard base64-encoded file bytes. Mutually exclusive with content and fileUrl. |
content_mime_type | Optional | MIME type for base64_content uploads. Required when using base64_content. |
base64_sha256 | Optional | Expected SHA-256 hex digest of the decoded payload for integrity verification. |
return_upload_url | Optional | Return a Google resumable-upload URL the client PUTs the bytes to directly, so large or binary files skip the server and model context. Offered only when WORKSPACE_MCP_DISABLE_LOCAL_FILES is set. |
create_drive_folder
CoreCreate folders in My Drive or shared drives.
| Parameter | Required | Description |
|---|---|---|
folder_name | Required | The name for the new folder. |
parent_folder_id | Optional | The ID of the parent folder. Defaults to 'root'. |
import_to_google_doc
CoreImport files (Markdown, DOCX, HTML, etc.) into Google Docs.
| Parameter | Required | Description |
|---|---|---|
file_name | Required | The name for the new Google Doc (extension will be ignored). |
content | Optional | Text content for text-based formats (MD, TXT, HTML). |
file_path | Optional | Local file path for binary formats (DOCX, ODT). |
file_url | Optional | Remote URL to fetch the file from (http/https). |
source_format | Optional | Source format hint ('md', 'markdown', 'docx', 'txt', 'html', 'rtf', 'odt'). |
base64_content | Optional | Standard base64-encoded file bytes for binary uploads. Mutually exclusive with content, file_path, and file_url. |
base64_sha256 | Optional | Expected SHA-256 hex digest of the decoded payload for integrity verification. |
return_upload_url | Optional | Return a Google resumable-upload URL the client PUTs the bytes to directly, so large or binary files skip the server and model context. Offered only when WORKSPACE_MCP_DISABLE_LOCAL_FILES is set. |
import_to_google_slides
CoreImport presentation files (PPTX, PPT, ODP) as Google Slides.
| Parameter | Required | Description |
|---|---|---|
file_name | Required | The name for the new Google Slides presentation. |
file_path | Optional | Local file path to the presentation file. |
file_url | Optional | Remote URL to fetch the file from (http/https). |
source_format | Optional | Source format hint ('pptx', 'ppt', 'odp'). |
folder_id | Optional | Destination folder ID. Defaults to 'root'. |
base64_content | Optional | Standard base64-encoded file bytes for binary uploads. Mutually exclusive with file_path and file_url. |
base64_sha256 | Optional | Expected SHA-256 hex digest of the decoded payload for integrity verification. |
return_upload_url | Optional | Return a Google resumable-upload URL the client PUTs the bytes to directly, so large or binary files skip the server and model context. Offered only when WORKSPACE_MCP_DISABLE_LOCAL_FILES is set. |
import_to_google_sheets
CoreImport spreadsheet files (XLSX, CSV, TSV, etc.) as Google Sheets.
| Parameter | Required | Description |
|---|---|---|
file_name | Required | The name for the new Google Sheet. |
content | Optional | Inline text content for text-based formats (CSV, TSV). |
file_path | Optional | Local file path for binary formats (XLSX, ODS). |
file_url | Optional | Remote URL to fetch the file from (http/https). |
source_format | Optional | Source format hint ('xlsx', 'csv', 'tsv', 'ods'). |
folder_id | Optional | Destination folder ID. Defaults to 'root'. |
base64_content | Optional | Standard base64-encoded file bytes for binary uploads. Mutually exclusive with content, file_path, and file_url. |
base64_sha256 | Optional | Expected SHA-256 hex digest of the decoded payload for integrity verification. |
return_upload_url | Optional | Return a Google resumable-upload URL the client PUTs the bytes to directly, so large or binary files skip the server and model context. Offered only when WORKSPACE_MCP_DISABLE_LOCAL_FILES is set. |
get_drive_shareable_link
CoreGenerate shareable links for files.
| Parameter | Required | Description |
|---|---|---|
file_id | Required | The ID of the file or folder to get the shareable link for. |
list_drive_items
ExtendedList folder contents or shared drives.
| Parameter | Required | Description |
|---|---|---|
folder_id | Optional | The ID of the Google Drive folder. Defaults to 'root'. |
page_size | Optional | The maximum number of items to return. Defaults to 100. |
page_token | Optional | Page token for pagination. |
drive_id | Optional | Shared drive ID to list from. |
resource_type | Optional | items (default) or drives to list shared drives. |
file_type | Optional | Restrict results to specific file type. |
copy_drive_file
ExtendedCopy existing Drive files with optional renaming.
| Parameter | Required | Description |
|---|---|---|
file_id | Required | The ID of the file to copy. |
new_name | Optional | New name for the copied file. If not provided, uses "Copy of [original name]". |
parent_folder_id | Optional | The ID of the folder where the copy should be created. Defaults to 'root'. |
update_drive_file
ExtendedUpdate metadata, move files, or replace/append to Google Apps content in place.
| Parameter | Required | Description |
|---|---|---|
file_id | Required | The ID of the file to update. |
name | Optional | New name for the file. |
description | Optional | New description for the file. |
add_parents | Optional | Comma-separated folder IDs to add as parents. |
remove_parents | Optional | Comma-separated folder IDs to remove from parents. |
starred | Optional | Star or unstar the file. |
trashed | Optional | Move the file to or from the trash. |
content | Optional | Replacement text content (Markdown, TXT, HTML), preserving the file ID. |
file_path | Optional | Local file path for binary replacement content (DOCX, ODT, etc.). |
file_url | Optional | Remote URL to fetch replacement content from. |
source_format | Optional | Format hint for replacement content ('md', 'docx', 'txt', 'html', 'rtf', 'odt'). |
mode | Optional | 'replace' (default), 'append', or 'prepend'. Append/prepend splice content onto the existing text server-side, so only the new text has to be sent. |
return_upload_url | Optional | Return a Google resumable-upload URL the client PUTs the bytes to directly, so large or binary files skip the server and model context. Offered only when WORKSPACE_MCP_DISABLE_LOCAL_FILES is set. |
manage_drive_access
ExtendedGrant, update, revoke permissions, and transfer ownership.
| Parameter | Required | Description |
|---|---|---|
file_id | Required | The ID of the file or folder. |
action | Required | The access management action to perform ('grant', 'revoke', 'update', 'transfer_ownership'). |
share_with | Optional | Email address (user/group) or domain name. |
role | Optional | Permission role ('reader', 'writer', 'commenter', 'owner'). |
permission_id | Optional | Permission ID for revoke/update actions. |
set_drive_file_permissions
ExtendedConfigure link sharing and file-level sharing.
| Parameter | Required | Description |
|---|---|---|
file_id | Required | The ID of the file or folder. |
link_sharing | Optional | Control "anyone with the link" access for the file. |
writers_can_share | Optional | Whether editors can change permissions and share. |
get_drive_file_permissions
CompleteGet file metadata, parents, and detailed permission entries.
| Parameter | Required | Description |
|---|---|---|
file_id | Required | The ID of the file to check permissions for. |
check_drive_file_public_access
CompleteCheck whether a file is publicly accessible.
| Parameter | Required | Description |
|---|---|---|
file_name | Required | The name of the file to check. |
Gmail MCP
Message, label, filter, thread, and attachment workflows.
Source: gmail/gmail_tools.py
search_gmail_messages
CoreSearch mail using Gmail query operators.
| Parameter | Required | Description |
|---|---|---|
query | Required | The search query. Supports standard Gmail search operators. |
page_size | Optional | The maximum number of messages to return. Defaults to 10. |
page_token | Optional | Token for retrieving the next page of results. |
include_headers | Optional | If True, also return Subject, From, and Date per result. Costs one metadata fetch per result. Defaults to False. |
get_gmail_message_content
CoreRetrieve message content. With full=True, returns the complete untruncated message via file/URL (or inline when no file storage is available).
| Parameter | Required | Description |
|---|---|---|
message_id | Required | The unique ID of the Gmail message to retrieve. |
body_format | Optional | Body output format: 'text' (default), 'html', or 'raw' (decoded MIME). |
full | Optional | If True, return the complete untruncated message. |
format | Optional | 'full' (default) or 'metadata' for headers only, skipping the body fetch. |
get_gmail_messages_content_batch
CoreBatch fetch message content.
| Parameter | Required | Description |
|---|---|---|
message_ids | Required | List of Gmail message IDs to retrieve (max 25 per batch). |
format | Optional | Message format. "full" includes body, "metadata" only headers. |
send_gmail_message
CoreSend email messages (supports replies, forwards, and attachments). When thread_id is set, threading headers are derived from the thread automatically.
| Parameter | Required | Description |
|---|---|---|
to | Optional | Recipient email address. Optional when replying with reply_all=True, which derives it from the thread. |
subject | Optional | Email subject. Required when sending; optional when forwarding (defaults to "Fwd: <original subject>"). |
body | Optional | Email body content. Required when sending. When forwarding, this is an optional note prepended above the quoted original. |
body_format | Optional | Email body format ('plain' or 'html'). Defaults to 'plain'. With 'html', bare newlines between text become <br> line breaks; well-formed block markup is left untouched. |
cc | Optional | Optional CC email address. |
bcc | Optional | Optional BCC email address. |
thread_id | Optional | Thread ID to reply within. |
reply_all | Optional | Derive reply-all recipients from the thread: To is the sender replied to, Cc the other participants, excluding the authenticated account. Requires thread_id; explicit to/cc win. Defaults to False. |
quote_original | Optional | Include the message being replied to as a quoted original. Only has an effect with thread_id. Defaults to False. |
attachments | Optional | Optional list of attachments (path or base64 content). |
get_gmail_thread_content
ExtendedRetrieve full thread content.
| Parameter | Required | Description |
|---|---|---|
thread_id | Required | The unique ID of the Gmail thread to retrieve. |
get_gmail_attachment_content
ExtendedDownload Gmail attachments to persistent attachment storage.
| Parameter | Required | Description |
|---|---|---|
message_id | Required | The ID of the Gmail message containing the attachment. |
attachment_id | Required | The ID of the attachment to download. |
return_base64 | Optional | If True, also return the attachment content as base64. |
attachment_index | Optional | Zero-based attachment position from the message-content response. Lets the server re-resolve Gmail's refreshed attachment IDs against current metadata before downloading. |
modify_gmail_message_labels
ExtendedAdd/remove labels on a message.
| Parameter | Required | Description |
|---|---|---|
message_id | Required | The ID of the message to modify. |
add_label_ids | Optional | List of label IDs to add to the message. |
remove_label_ids | Optional | List of label IDs to remove from the message. |
list_gmail_labels
ExtendedList account labels.
| Parameter | Required | Description |
|---|---|---|
prefix | Optional | Return only labels whose name starts with this string (case-sensitive). Useful for fetching a single subtree of a hierarchical label structure. |
compact | Optional | When true, returns minimal JSON with just id and name per label, sorted by name. |
include_system | Optional | When false, excludes Gmail system labels from the results. Defaults to true. |
list_gmail_filters
ExtendedList configured Gmail filters.
manage_gmail_label
ExtendedCreate/update/delete labels.
| Parameter | Required | Description |
|---|---|---|
action | Required | Action to perform on the label ('create', 'update', 'delete'). |
name | Optional | Label name. Required for create, optional for update. |
label_id | Optional | Label ID. Required for update and delete operations. |
background_color | Optional | Label background color as a hex string, e.g. #fb4c2f. Must be set together with text_color. Gmail accepts only its own palette, and an unsupported value is rejected before the request is sent. Applies to user labels, not system labels. |
text_color | Optional | Label text color as a hex string, e.g. #ffffff. Must be set together with background_color, from the same palette. On update, omitting both keeps the label's current color. |
clear_color | Optional | On update, remove the label's current color. Cannot be combined with background_color or text_color. |
manage_gmail_filter
ExtendedCreate, update, and delete Gmail filters, or apply one to existing mail.
| Parameter | Required | Description |
|---|---|---|
action | Required | "create", "update", "delete", or "apply". Update recreates the filter (new one first, then the old one is deleted), so its ID changes. |
criteria | Optional | Filter criteria object (required for create; optional for update/apply). |
filter_action | Optional | Filter action object (required for create; optional for update/apply). |
filter_id | Optional | ID of the filter (required for delete and update; optional for apply). |
dry_run | Optional | Apply only: count matching messages without changing anything. |
max_messages | Optional | Apply only: safety cap on messages changed. Defaults to 5000. |
draft_gmail_message
ExtendedCreate Gmail drafts.
| Parameter | Required | Description |
|---|---|---|
subject | Required | Email subject. |
body | Required | Email body content. |
body_format | Optional | Email body format ('plain' or 'html'). Defaults to 'plain'. |
to | Optional | Optional recipient email address. |
cc | Optional | Optional CC email address. |
attachments | Optional | Optional list of attachments. |
get_gmail_threads_content_batch
CompleteBatch fetch thread content.
| Parameter | Required | Description |
|---|---|---|
thread_ids | Required | A list of Gmail thread IDs to retrieve. |
batch_modify_gmail_message_labels
CompleteBatch label modifications.
| Parameter | Required | Description |
|---|---|---|
message_ids | Required | A list of message IDs to modify. |
add_label_ids | Optional | List of label IDs to add to the messages. |
remove_label_ids | Optional | List of label IDs to remove from the messages. |
verify | Optional | Read messages back and report per-ID outcomes. Defaults to true; set to false to avoid one extra batched read per message when an unverified result is acceptable. |
start_google_auth
CompleteLegacy OAuth 2.0 auth helper (disabled with OAuth 2.1).
Google Docs MCP
Document creation, edits, exports, structured updates, and comment management.
Source: gdocs/docs_tools.py
get_doc_content
CoreExtract plain text document content.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the document to retrieve. |
tab_id | Optional | Read a single tab instead of the main document body. Take the ID from inspect_doc_structure. |
preserve_context | Optional | Return a readable plain-text view with link destinations, smart-chip values, table boundaries, headers, footers and footnotes. Off by default, because the default output stays index-aligned for editing. |
create_doc
CoreCreate new documents.
| Parameter | Required | Description |
|---|---|---|
title | Required | The title for the new document. |
content | Optional | Initial text content for the document. |
folder_id | Optional | The ID of the parent folder. Defaults to 'root'. |
modify_doc_text
CoreModify document text with formatting and links.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the document to update. |
start_index | Required | Start position for operation (0-based). |
end_index | Optional | End position for text replacement/formatting (if not provided with text, text is inserted). |
text | Optional | New text to insert or replace with (optional - can format existing text without changing it). |
bold | Optional | Whether to make text bold (True/False/None to leave unchanged). |
italic | Optional | Whether to make text italic (True/False/None to leave unchanged). |
underline | Optional | Whether to underline text (True/False/None to leave unchanged). |
font_size | Optional | Font size in points. |
font_family | Optional | Font family name (e.g., "Arial", "Times New Roman"). |
text_color | Optional | Foreground text color (#RRGGBB). |
background_color | Optional | Background/highlight color (#RRGGBB). |
link_url | Optional | Hyperlink URL (http/https). |
search_docs
ExtendedSearch docs by name.
| Parameter | Required | Description |
|---|---|---|
query | Required | Search query to find documents by name. |
page_size | Optional | Maximum number of results to return. |
page_token | Optional | Page token from a previous response's nextPageToken to fetch the next page. |
corpora | Optional | Corpus to search ("user", "domain", "drive", "allDrives"). Defaults to "drive" when drive_id is set, otherwise "allDrives". |
drive_id | Optional | Shared drive ID to search. |
find_and_replace_doc
ExtendedFind and replace text.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the document to update. |
find_text | Required | Text to search for. |
replace_text | Required | Text to replace with. |
match_case | Optional | Whether to match case exactly. |
list_docs_in_folder
ExtendedList docs in a Drive folder.
| Parameter | Required | Description |
|---|---|---|
folder_id | Optional | The ID of the folder. Defaults to root. |
page_size | Optional | Maximum number of documents to return. |
page_token | Optional | Page token from a previous response's nextPageToken to fetch the next page. |
insert_doc_elements
ExtendedInsert tables, lists, and page breaks.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the document to update. |
element_type | Required | Type of element to insert ("table", "list", "page_break"). |
index | Required | Position to insert element (0-based). |
rows | Optional | Number of rows for table (required for table). |
columns | Optional | Number of columns for table (required for table). |
list_type | Optional | Type of list ("UNORDERED", "ORDERED") (required for list). |
text | Optional | Initial text content for list items. |
update_paragraph_style
ExtendedApply heading and paragraph styles, including nested lists and per-edge borders.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | Document ID to modify. |
start_index | Required | Start position (1-based). |
end_index | Required | End position (exclusive) - should cover the entire paragraph. |
heading_level | Optional | Heading level 0-6 (0 = NORMAL_TEXT, 1 = H1, 2 = H2, etc.). |
alignment | Optional | Text alignment. |
line_spacing | Optional | Line spacing value. |
border_edges | Optional | Border edges to update ('top', 'bottom', 'left', 'right', 'between'). Omit to update all four outer edges. |
border_color | Optional | Border color as #RRGGBB. Defaults to black. |
border_width | Optional | Border width in points. Defaults to 1. |
border_padding | Optional | Border padding in points. Defaults to 4. |
border_dash | Optional | Border dash style ('SOLID', 'DOT', or 'DASH'). Defaults to 'SOLID'. |
list_type | Optional | List type for creating lists. |
list_nesting_level | Optional | Nesting level for lists. |
get_doc_as_markdown
ExtendedExport a document as formatted Markdown.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the Google Doc (or full URL). |
include_comments | Optional | Whether to include comments (default: True). |
comment_mode | Optional | How to display comments. |
include_resolved | Optional | Whether to include resolved comments (default: False). |
tab_id | Optional | Export a single tab instead of the main document body. Take the ID from inspect_doc_structure. |
export_doc_to_pdf
ExtendedExport a doc to PDF.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the Google Doc to export. |
pdf_filename | Optional | Name for the PDF file (optional - if not provided, uses original name + "_PDF"). |
folder_id | Optional | Drive folder ID to save PDF in (optional - if not provided, saves in root). |
list_document_comments
ExtendedList all document comments.
manage_document_comment
ExtendedCreate, reply, or resolve comments.
insert_doc_image
CompleteInsert images from Drive or URLs.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the document to update. |
image_source | Required | Drive file ID or public image URL. |
index | Required | Position to insert image (0-based). |
width | Optional | Image width in points (optional). |
height | Optional | Image height in points (optional). |
update_doc_headers_footers
CompleteUpdate headers and footers.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the document to update. |
section_type | Required | Type of section to update ("header" or "footer"). |
content | Required | Text content for the header/footer. |
header_footer_type | Optional | Type of header/footer ("DEFAULT", "FIRST_PAGE_ONLY", "EVEN_PAGE"). |
batch_update_doc
CompleteExecute multiple doc operations in one call.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the document to update. |
operations | Required | List of operation dictionaries. |
inspect_doc_structure
CompleteInspect structural document elements. Both modes also report paragraph layout stats: empty-paragraph counts, up to 100 paragraph ranges with a truncation flag, and whether the last paragraph is empty or a list item.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the document to inspect. |
detailed | Optional | Whether to return detailed structure information. Detailed output adds list membership and object anchors. |
tab_id | Optional | Inspect a single tab instead of the main document body. |
preview_chars | Optional | Maximum characters of paragraph, header, and footer text preview (default 100). Pass 0 or None for the full text, which you need to locate a token inside a longer paragraph: add its UTF-16 offset to the paragraph's start_index. |
create_table_with_data
CompleteCreate populated tables.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the document to update. |
table_data | Required | 2D list of strings - EXACT format: [["col1", "col2"], ["row1col1", "row1col2"]]. |
index | Required | Document position (get from inspect_doc_structure 'total_length'). |
bold_headers | Optional | Whether to make first row bold (default: true). |
debug_table_structure
CompleteDebug table structures.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the document to inspect. |
table_index | Optional | Which table to debug (0 = first table, 1 = second table, etc.). |
manage_doc_tab
CompleteCreate, rename, delete, or populate document tabs from markdown.
| Parameter | Required | Description |
|---|---|---|
document_id | Required | ID of the document to update. |
action | Required | 'create', 'rename', 'delete', or 'populate_from_markdown'. |
tab_id | Optional | Tab ID (required for rename, delete, and populate). |
title | Optional | Tab title (required for create and rename). |
index | Optional | Position for the new tab. |
parent_tab_id | Optional | Parent tab ID for nested tabs. |
markdown_text | Optional | Markdown content for populate_from_markdown. |
replace_existing | Optional | Whether populate replaces existing tab content (default: True). |
Google Sheets MCP
Spreadsheet reads/writes, formatting, comments, and conditional formatting.
Source: gsheets/sheets_tools.py
read_sheet_values
CoreRead values from ranges.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet. |
range_name | Optional | The range to read (e.g., "Sheet1!A1:D10", "A1:D10"). Defaults to "A1:Z1000". |
include_hyperlinks | Optional | If True, also fetch hyperlink metadata for the range. |
include_smart_chips | Optional | If True, also fetch smart chip metadata (Drive files/folders and People) for the range. |
modify_sheet_values
CoreWrite, update, and clear range values, or insert Drive and People smart chips.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet. |
range_name | Required | The range to modify (e.g., "Sheet1!A1:D10", "A1:D10"). |
values | Optional | 2D array of values to write/update. Can be a JSON string or Python list. Required unless clear_values=True. |
value_input_option | Optional | How to interpret input values ("RAW" or "USER_ENTERED"). Defaults to "USER_ENTERED". |
clear_values | Optional | If True, clears the range instead of writing values. Defaults to False. |
chips | Optional | Smart chips to write instead of values: a Drive URL or email, a list or 2D list of them, or dicts like {"type": "person", "email": "..."}. JSON strings are accepted. |
chip_type | Optional | "drive" (default for URLs/IDs) or "person" (default for emails) when passing raw strings in chips. |
create_spreadsheet
CoreCreate spreadsheets.
| Parameter | Required | Description |
|---|---|---|
title | Required | The title of the new spreadsheet. |
sheet_names | Optional | List of sheet names to create. If not provided, creates one sheet with default name. |
folder_id | Optional | The ID of the parent folder. Defaults to 'root'. |
list_spreadsheets
ExtendedList available spreadsheets.
| Parameter | Required | Description |
|---|---|---|
max_results | Optional | Maximum number of spreadsheets to return. Defaults to 25. |
page_token | Optional | Page token from a previous response's nextPageToken to fetch the next page. |
corpora | Optional | Corpus to search ("user", "domain", "drive", "allDrives"). Defaults to "drive" when drive_id is set, otherwise "allDrives". |
drive_id | Optional | Shared drive ID to search. |
get_spreadsheet_info
ExtendedRead spreadsheet metadata and sheet info.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet to get info for. |
format_sheet_range
ExtendedApply styling and number/text formats to ranges.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet. |
range_name | Required | A1-style range (optionally with sheet name). |
background_color | Optional | Hex background color (e.g., "#FFEECC"). |
text_color | Optional | Hex text color (e.g., "#000000"). |
number_format_type | Optional | Sheets number format type (e.g., "DATE"). |
number_format_pattern | Optional | Custom pattern for the number format. |
wrap_strategy | Optional | Text wrap strategy (WRAP, OVERFLOW_CELL, CLIP). |
horizontal_alignment | Optional | Horizontal alignment. |
vertical_alignment | Optional | Vertical alignment. |
bold | Optional | Whether to make text bold. |
italic | Optional | Whether to make text italic. |
font_size | Optional | Font size. |
list_sheet_tables
ExtendedList structured tables with IDs, names, ranges, and columns.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet. |
create_sheet
CompleteAdd sheets to existing spreadsheets.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet. |
sheet_name | Optional | The name of the new sheet. Defaults to a Google-assigned name when omitted. |
manage_sheet_tab
CompleteManage the lifecycle of an existing tab: rename, delete, hide, unhide, or reorder it. Use create_sheet to add a tab and resize_sheet_dimensions for row and column changes.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet. |
sheet_name | Required | Title of the existing tab to act on. |
action | Required | One of rename, delete, hide, unhide, or reorder. |
new_name | Optional | New title. Required for rename. |
new_index | Optional | New zero-based position. Required for reorder. |
append_table_rows
CompleteAppend rows to a structured table, auto-extending the table range.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet. |
table_id | Required | The ID of the table (from list_sheet_tables). |
values | Required | 2D array of row values to append. |
move_sheet_rows
CompleteMove rows between sheets within a spreadsheet.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet. |
source_sheet | Required | Name of the sheet to move rows from. |
start_row | Required | First row to move (1-based). |
end_row | Required | Last row to move (inclusive). |
destination_sheet | Required | Name of the sheet to move rows to. |
resize_sheet_dimensions
CompleteResize, hide, freeze, insert, or delete rows and columns.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet. |
sheet_name | Optional | Sheet to modify. Defaults to the first sheet. |
column_sizes | Optional | Map of column letters to pixel widths. |
row_sizes | Optional | Map of row numbers to pixel heights. |
auto_resize_columns | Optional | Columns to auto-fit to content. |
frozen_row_count | Optional | Number of frozen header rows. |
frozen_column_count | Optional | Number of frozen columns. |
hide_columns | Optional | Columns to hide (unhide_columns reverses). |
hide_rows | Optional | Rows to hide (unhide_rows reverses). |
insert_rows | Optional | Number of rows to insert (with insert_rows_at). |
insert_columns | Optional | Number of columns to insert (with insert_columns_at). |
delete_rows | Optional | Rows to delete. |
delete_columns | Optional | Columns to delete. |
list_spreadsheet_comments
CompleteList comments on spreadsheets.
manage_spreadsheet_comment
CompleteCreate, reply, and resolve spreadsheet comments.
manage_conditional_formatting
CompleteAdd, update, and remove conditional formatting rules.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet. |
action | Required | The operation to perform ("add", "update", "remove"). |
range_name | Optional | Range to apply conditional formatting to. |
condition_type | Optional | Type of condition. |
condition_values | Optional | Values for the condition. |
background_color | Optional | Background color for formatting. |
text_color | Optional | Text color for formatting. |
rule_index | Optional | Index of rule to update/remove. |
gradient_points | Optional | Gradient points for gradient formatting. |
sheet_name | Optional | Sheet name for the range. |
manage_named_range
CompleteList, create, update, and delete named ranges.
| Parameter | Required | Description |
|---|---|---|
spreadsheet_id | Required | The ID of the spreadsheet. |
action | Required | The operation to perform ("list", "create", "update", "delete"). |
name | Optional | Name of the named range. Required for create; identifies the range for update/delete. |
range_name | Optional | Target range in A1 notation, e.g. "Sheet1!A1:D10". Required for create. |
named_range_id | Optional | ID of the named range to update or delete. |
new_name | Optional | New name for the named range (update). |
new_range | Optional | New A1-style range for the named range (update). |
Google Slides MCP
Presentations, page retrieval, thumbnails, and comment management.
Source: gslides/slides_tools.py
create_presentation
CoreCreate presentations.
| Parameter | Required | Description |
|---|---|---|
title | Optional | The title for the new presentation. Defaults to "Untitled Presentation". |
get_presentation
CoreRetrieve presentation details.
| Parameter | Required | Description |
|---|---|---|
presentation_id | Required | The ID of the presentation to retrieve. |
include_speaker_notes | Optional | Also report each slide's speaker notes and its notes shape ID (needed to edit notes via batch_update_presentation). Defaults to False. |
include_geometry | Optional | Also list each slide's elements with their placement: transform (translate, plus scale/shear when not identity) and intrinsic size, in raw EMU. Set this when adding slides to an existing deck so new elements can match its established margins. Defaults to False. |
include_styles | Optional | Also list each slide's elements with text styling (see get_page). Defaults to False. |
raw | Optional | Return the complete Presentation resource as JSON instead of the summary. Nothing is filtered, so it can be large; prefer get_page with raw=True for one slide. Overrides the other flags. |
batch_update_presentation
ExtendedApply multiple slide updates in one request.
| Parameter | Required | Description |
|---|---|---|
presentation_id | Required | The ID of the presentation to update. |
requests | Required | List of update requests to apply. |
get_page
ExtendedRetrieve a specific page/slide.
| Parameter | Required | Description |
|---|---|---|
presentation_id | Required | The ID of the presentation. |
page_object_id | Required | The object ID of the page/slide to retrieve. |
include_geometry | Optional | Also report each element's placement: transform (translate, plus scale/shear when not identity) and intrinsic size, in raw EMU. This is the only way to discover an existing deck's margins, gutters, and content area before adding elements. Tables also report column widths, row heights, and cell text. Defaults to False. |
include_styles | Optional | Also report paragraph and run text styling, placeholder linkage, autofit, fill, and outline. Only explicitly set values appear. Useful for proofing font, color, and alignment consistency. |
raw | Optional | Return the complete Page resource as JSON instead of the summary. Use when the summary lacks a field you need. Overrides the other flags. |
get_page_thumbnail
ExtendedGenerate slide thumbnails.
| Parameter | Required | Description |
|---|---|---|
presentation_id | Required | The ID of the presentation. |
page_object_id | Required | The object ID of the page/slide. |
thumbnail_size | Optional | Size of thumbnail ("LARGE", "MEDIUM", "SMALL"). Defaults to "MEDIUM". |
inline | Optional | Also return the rendered PNG as image content, for clients that cannot reach the short-lived thumbnail URL. |
list_presentation_comments
CompleteList all presentation comments.
manage_presentation_comment
CompleteCreate, reply, and resolve presentation comments.
Google Forms MCP
Form creation, response retrieval, publish settings, and batch updates.
Source: gforms/forms_tools.py
create_form
CoreCreate forms.
| 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
CoreRetrieve form metadata and URLs.
| Parameter | Required | Description |
|---|---|---|
form_id | Required | The ID of the form to retrieve. |
list_form_responses
ExtendedList responses with pagination.
| Parameter | Required | Description |
|---|---|---|
form_id | Required | The ID of the form. |
page_size | Optional | Maximum number of responses to return. Defaults to 10. |
page_token | Optional | Token for retrieving next page of results. |
set_publish_settings
CompleteConfigure whether a form is published and accepting responses.
| Parameter | Required | Description |
|---|---|---|
form_id | Required | The ID of the form to update publish settings for. |
is_published | Optional | Whether the form is published and visible to responders. Defaults to True. |
is_accepting_responses | Optional | Whether the form accepts responses. Only takes effect when the form is published. Defaults to True. |
get_form_response
CompleteRetrieve an individual response.
| Parameter | Required | Description |
|---|---|---|
form_id | Required | The ID of the form. |
response_id | Required | The ID of the response to retrieve. |
batch_update_form
CompleteApply batch updates to form structure/settings.
| Parameter | Required | Description |
|---|---|---|
form_id | Required | The ID of the form to update. |
requests | Required | List of update requests to apply. |
Google Tasks MCP
Consolidated task and task-list management APIs.
Source: gtasks/tasks_tools.py
list_tasks
CoreList tasks with filters.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The ID of the task list to retrieve tasks from. |
max_results | Optional | Maximum number of tasks to return (default: 20, max: 10000). |
page_token | Optional | Token for pagination. |
show_completed | Optional | Whether to include completed tasks (default: True). |
show_deleted | Optional | Whether to include deleted tasks (default: False). |
show_hidden | Optional | Whether to include hidden tasks (default: False). |
show_assigned | Optional | Whether to include assigned tasks (default: False). |
completed_max | Optional | Upper bound for completion date (RFC 3339 timestamp). |
completed_min | Optional | Lower bound for completion date (RFC 3339 timestamp). |
due_max | Optional | Upper bound for due date (RFC 3339 timestamp). |
due_min | Optional | Lower bound for due date (RFC 3339 timestamp). |
updated_min | Optional | Lower bound for last modification time (RFC 3339 timestamp). |
get_task
CoreRetrieve task details.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The ID of the task list containing the task. |
task_id | Required | The ID of the task to retrieve. |
manage_task
CoreConsolidated create, update, delete, and move task operations.
| Parameter | Required | Description |
|---|---|---|
action | Required | The action to perform ("create", "update", "delete", "move"). |
task_list_id | Required | The ID of the task list. |
task_id | Optional | The ID of the task (required for "update", "delete", and "move"). |
title | Optional | The title of the task (required for "create", optional for "update"). |
notes | Optional | Notes/description for the task. |
status | Optional | Task status ("needsAction" or "completed"). |
due | Optional | Due date in RFC 3339 format. |
parent | Optional | Parent task ID (for subtasks). |
previous | Optional | Previous sibling task ID (for positioning). |
destination_task_list | Optional | Destination task list ID (for moving between lists). |
list_task_lists
CompleteList task lists.
| Parameter | Required | Description |
|---|---|---|
max_results | Optional | Maximum number of task lists to return (default: 1000, max: 1000). |
page_token | Optional | Token for pagination. |
get_task_list
CompleteRetrieve task-list details.
| Parameter | Required | Description |
|---|---|---|
task_list_id | Required | The ID of the task list to retrieve. |
manage_task_list
CompleteConsolidated create/update/delete/clear-completed for task lists.
| Parameter | Required | Description |
|---|---|---|
action | Required | The action to perform ("create", "update", "delete", "clear_completed"). |
task_list_id | Optional | The ID of the task list (required for "update", "delete", and "clear_completed"). |
title | Optional | The title for the task list (required for "create" and "update"). |
Google Contacts MCP
People API contact and group workflows.
Source: gcontacts/contacts_tools.py
search_contacts
CoreSearch by name, email, and phone.
| Parameter | Required | Description |
|---|---|---|
query | Required | Search query string (searches names, emails, phone numbers). |
page_size | Optional | Maximum number of results to return (default: 30, max: 30). |
get_contact
CoreRetrieve detailed contact profiles.
| Parameter | Required | Description |
|---|---|---|
contact_id | Required | The contact ID (e.g., "c1234567890" or full resource name "people/c1234567890"). |
list_contacts
CoreList contacts with pagination.
| Parameter | Required | Description |
|---|---|---|
page_size | Optional | Maximum number of contacts to return (default: 100, max: 1000). |
page_token | Optional | Token for pagination. |
sort_order | Optional | Sort order: "LAST_MODIFIED_ASCENDING", "LAST_MODIFIED_DESCENDING", "FIRST_NAME_ASCENDING", or "LAST_NAME_ASCENDING". |
manage_contact
CoreCreate, update, or delete contacts.
| Parameter | Required | Description |
|---|---|---|
action | Required | The action to perform: "create", "update", or "delete". |
contact_id | Optional | The contact ID (required for "update" and "delete"). |
given_name | Optional | First name (for create/update). |
family_name | Optional | Last name (for create/update). |
email | Optional | Email address (for create/update). |
phone | Optional | Phone number (for create/update). |
organization | Optional | Company/organization name (for create/update). |
job_title | Optional | Job title (for create/update). |
notes | Optional | Additional notes (for create/update). |
list_contact_groups
ExtendedList contact groups.
| Parameter | Required | Description |
|---|---|---|
page_size | Optional | Maximum number of groups to return (default: 100, max: 1000). |
page_token | Optional | Token for pagination. |
get_contact_group
ExtendedRetrieve group details and members.
| Parameter | Required | Description |
|---|---|---|
group_id | Required | The contact group ID. |
max_members | Optional | Maximum number of members to return (default: 100, max: 1000). |
manage_contacts_batch
CompleteBatch create, update, or delete contacts.
| Parameter | Required | Description |
|---|---|---|
action | Required | The action to perform: "create", "update", or "delete". |
contacts | Optional | List of contact dicts for "create" action. |
updates | Optional | List of update dicts for "update" action. |
contact_ids | Optional | List of contact IDs for "delete" action. |
manage_contact_group
CompleteCreate, update, delete groups, and manage membership.
| Parameter | Required | Description |
|---|---|---|
action | Required | The action to perform: "create", "update", "delete", or "modify_members". |
group_id | Optional | The contact group ID (required for "update", "delete", and "modify_members"). |
name | Optional | Group name (required for "create", optional for "update"). |
delete_contacts | Optional | Whether to delete contacts when deleting group. |
add_contact_ids | Optional | Contact IDs to add to group. |
remove_contact_ids | Optional | Contact IDs to remove from group. |
Google Chat MCP
Space messaging, reactions, search, and attachment download.
Source: gchat/chat_tools.py
get_messages
CoreRetrieve messages in a space.
| Parameter | Required | Description |
|---|---|---|
space_id | Required | The ID of the space to retrieve messages from. |
page_size | Optional | Maximum number of messages to return. |
order_by | Optional | How to order the messages. |
send_message
CoreSend messages to spaces, or edit a message already sent.
| Parameter | Required | Description |
|---|---|---|
space_id | Required | The ID of the space to send the message to. |
message_text | Required | The text content of the message. |
thread_key | Optional | Reply in a thread by app-defined key (creates thread if not found). |
thread_name | Optional | Reply in an existing thread by its resource name (e.g. spaces/X/threads/Y). |
message_name | Optional | Edit this message in place instead of sending a new one, given as spaces/X/messages/Y. The message must belong to space_id, and this cannot be combined with thread_key or thread_name. |
search_messages
CoreSearch chat history.
| Parameter | Required | Description |
|---|---|---|
query | Optional | Text to search for. If omitted, only time_filter is applied. |
space_id | Optional | Optional space ID to limit search to. |
page_size | Optional | Maximum number of results to return. |
create_reaction
CoreAdd emoji reactions to messages.
| Parameter | Required | Description |
|---|---|---|
message_id | Required | The message resource name (e.g. spaces/X/messages/Y). |
emoji_unicode | Required | The emoji character to react with (e.g. 👍). |
list_spaces
ExtendedList spaces and DMs. Direct messages and unnamed group chats are labelled after their members.
| Parameter | Required | Description |
|---|---|---|
page_size | Optional | Maximum number of spaces to return. |
space_type | Optional | Filter by space type: "all" (default), "room", or "dm". |
download_chat_attachment
ExtendedDownload chat attachments.
| Parameter | Required | Description |
|---|---|---|
message_id | Required | The message resource name (e.g. spaces/X/messages/Y). |
attachment_index | Optional | Zero-based index of the attachment to download (default 0). |
Google Custom Search MCP
Programmable Search Engine queries and metadata.
Source: gsearch/search_tools.py
search_custom
CoreRun custom search queries with optional site restrictions.
| Parameter | Required | Description |
|---|---|---|
q | Required | The search query. |
num | Optional | Number of results to return (1-10). Defaults to 10. |
start | Optional | The index of the first result to return (1-based). Defaults to 1. |
safe | Optional | Safe search level. Defaults to "off". |
search_type | Optional | Search for images if set to "image". |
site_search | Optional | Restrict search to a specific site/domain. |
site_search_filter | Optional | Exclude ("e") or include ("i") site_search results. |
date_restrict | Optional | Restrict results by date (e.g., "d5" for past 5 days, "m3" for past 3 months). |
file_type | Optional | Filter by file type (e.g., "pdf", "doc"). |
language | Optional | Language code for results (e.g., "lang_en"). |
country | Optional | Country code for results (e.g., "countryUS"). |
sites | Optional | List of sites/domains to restrict search to (e.g., ["example.com", "docs.example.com"]). |
get_search_engine_info
CompleteRetrieve search engine configuration metadata.
Google Apps Script MCP
Create, execute, and manage Apps Script projects and deployments.
Source: gappsscript/apps_script_tools.py
get_script_project
CoreList script projects, or read one project's structure or a single source file.
| Parameter | Required | Description |
|---|---|---|
action | Required | "list" (projects you can access) or "get" (one project). |
script_id | Optional | The script project ID (required for get). |
file_name | Optional | Return this complete source file instead of the project overview (get only). |
page_size | Optional | Number of results per page for list (default: 50). |
page_token | Optional | Token for pagination (list only). |
manage_script_project
CoreCreate standalone or bound script projects, or permanently delete one.
| Parameter | Required | Description |
|---|---|---|
action | Required | "create" or "delete". Delete cannot be undone. |
script_id | Optional | The script project ID (required for delete). |
title | Optional | Project title (required for create). |
parent_id | Optional | Optional Drive folder ID or bound container ID (create only). |
manage_script_content
CoreCreate or update script files.
| Parameter | Required | Description |
|---|---|---|
action | Required | "update". |
script_id | Required | The script project ID. |
files | Optional | List of file objects with name, type, and source (required for update). |
merge | Optional | Overlay files onto the project (default). False replaces the whole file set, deleting any file left out. |
run_script_function
CoreExecute deployed script functions with args.
| Parameter | Required | Description |
|---|---|---|
script_id | Required | The script project ID. |
function_name | Required | Name of function to execute. |
parameters | Optional | Optional list of parameters to pass. |
dev_mode | Optional | Whether to run latest code vs deployed version. |
deployment_id | Optional | API Executable deployment ID; defaults to the highest-versioned one. |
generate_trigger_code
CoreGenerate Apps Script code for time-driven and event triggers.
| Parameter | Required | Description |
|---|---|---|
trigger_type | Required | The kind of trigger to generate code for. |
function_name | Required | Function the trigger should invoke. |
schedule | Optional | Schedule expression for time-driven triggers. |
list_script_deployments
ExtendedList deployments for a project.
| Parameter | Required | Description |
|---|---|---|
script_id | Required | The script project ID. |
manage_deployment
ExtendedCreate, update, or delete deployments.
| Parameter | Required | Description |
|---|---|---|
action | Required | Action to perform - "create", "update", or "delete". |
script_id | Required | The script project ID. |
deployment_id | Optional | The deployment ID (required for update and delete). |
description | Optional | Deployment description (required for create; optional for update when version_number is set). |
version_description | Optional | Optional version description (for create only). |
version_number | Optional | Version to point the deployment at (update only). |
get_script_version
ExtendedList saved versions of a script project, or retrieve one.
| Parameter | Required | Description |
|---|---|---|
action | Required | "list" or "get". |
script_id | Required | The script project ID. |
version_number | Optional | The version number to retrieve (required for get). |
manage_script_version
ExtendedCreate an immutable version from the current project state.
| Parameter | Required | Description |
|---|---|---|
action | Required | "create". |
script_id | Required | The script project ID. |
description | Optional | Optional version description. |
get_script_activity
ExtendedInspect recent executions, or aggregate execution metrics for a script.
| Parameter | Required | Description |
|---|---|---|
action | Required | "processes" (recent runs) or "metrics" (active users, total and failed executions). |
script_id | Optional | Required for metrics. For processes, lists every run of that script visible to you, including runs by other users. |
page_size | Optional | Number of results for processes (default: 50). |
metrics_granularity | Optional | Granularity of metrics data: "DAILY" (default) or "WEEKLY". |
manage_script_trigger
ExtendedList or delete your installable triggers on a project, via a small helper file run through the Execution API.
| Parameter | Required | Description |
|---|---|---|
action | Required | "list" or "delete". |
script_id | Required | The script project ID. |
trigger_id | Optional | Unique ID of one trigger to delete (from list). |
handler_function | Optional | Delete every trigger calling this function. |
dev_mode | Optional | Run against the latest saved code (default; owner only) vs the deployed version. |
deployment_id | Optional | API Executable deployment ID; defaults to the highest-versioned one. |