Skip to main content
Glama
eitan3

Gmail + Calendar MCP Server

by eitan3

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PASSWORDSNoOptional per-account passwords in format `selector=password` pairs separated by semicolons or newlines
GMAIL_CLIENTYesGoogle OAuth client ID and secret in format `client_id|client_secret`
GMAIL_ACCOUNTSYesAccount refresh tokens in format `selector=refresh_token` pairs separated by semicolons or newlines

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
send_emailC

Send a new email.

to/cc/bcc: recipient address lists. attachments: file paths on the server host. sender: optional explicit From (defaults to the account's primary send-as address). Provide body_text and/or body_html. password: the account's password — required when password protection is enabled.

reply_to_messageB

Reply to a message, keeping it in the same thread.

reply_all=True also copies the original To/Cc recipients (minus yourself).

forward_messageB

Forward a message to new recipients, optionally re-attaching its attachments.

body_text is prepended before the quoted original. Starts a new thread.

create_draftC

Create a draft. thread_id attaches it to an existing thread (e.g. a reply draft).

list_draftsB

List drafts with subject/recipient summaries and next_page_token.

send_draftC

Send an existing draft.

update_draftA

Replace a draft's contents (Gmail replaces the whole message — pass all fields you want).

delete_draftA

Permanently delete a draft (the draft only — not a sent message).

get_profileA

Get the Gmail profile (email address, message/thread totals, historyId).

account: which configured account to use (alias or email). Optional when only one account is configured. password: the account's password — required when password protection is enabled.

get_messageB

Get a single message fully decoded: headers, snippet, text/HTML body, attachment list.

search_messagesA

Search messages using Gmail query syntax (e.g. 'is:unread from:alice newer_than:7d').

Returns message summaries plus next_page_token for pagination.

search_threadsB

Search threads using Gmail query syntax. Returns thread stubs + next_page_token.

get_threadC

Get a full thread with every message decoded.

get_message_attachmentsB

List a message's attachments (filename, mimeType, size, attachmentId).

download_attachmentB

Download an attachment to save_path on the server host.

Get attachment_id from get_message_attachments or get_message.

trash_messageA

Move a message to Trash (recoverable; not a permanent delete).

untrash_messageC

Restore a message from Trash.

trash_threadC

Move an entire thread to Trash.

untrash_threadC

Restore an entire thread from Trash.

list_labelsC

List all labels (system and user) with their ids.

create_labelB

Create a label. Use '/' in name for nesting (e.g. 'Clients/Acme').

update_labelC

Rename or change visibility of a label (identified by name or id).

delete_labelC

Delete a label (identified by name or id).

label_messageC

Add one or more labels to a message.

unlabel_messageC

Remove one or more labels from a message.

label_threadC

Add one or more labels to every message in a thread.

unlabel_threadA

Remove one or more labels from every message in a thread.

list_filtersC

List all filters with their ids, criteria, and actions.

create_filterB

Create a filter.

Criteria: from_address, to_address, subject, query (Gmail search syntax), negated_query, has_attachment, exclude_chats, size + size_comparison ('larger'/'smaller'). Actions: add_labels/remove_labels (names or ids), forward_to, and the booleans mark_read, archive (skip Inbox), star, mark_important, never_mark_important, never_spam, trash.

delete_filterA

Delete a filter by id (get ids from list_filters).

get_signatureB

Get the HTML signature for a send-as address (defaults to the primary address).

update_signatureB

Set the HTML signature for a send-as address (defaults to the primary address).

get_vacation_responderC

Get the vacation responder (auto-reply) settings.

set_vacation_responderB

Enable or disable the vacation responder.

start_time/end_time are epoch-milliseconds strings (omit for no bound). restrict_to_contacts/restrict_to_domain limit who receives the auto-reply.

mark_readC

Mark a message as read (removes the UNREAD label).

mark_unreadC

Mark a message as unread (adds the UNREAD label).

starC

Star a message.

unstarC

Remove the star from a message.

archiveC

Archive a message (removes it from the Inbox).

move_to_inboxC

Move a message back to the Inbox.

mark_importantC

Mark a message as important.

mark_not_importantC

Mark a message as not important.

batch_modify_messagesB

Add and/or remove labels across many messages in one call.

add_labels/remove_labels accept label names or ids.

batch_trashB

Move many messages to Trash in one call.

batch_untrashC

Restore many messages from Trash in one call.

list_eventsA

List/search events on a calendar.

time_min/time_max are RFC3339 (e.g. '2026-06-15T00:00:00Z'). query is free-text search. single_events=True expands recurring events into instances (required for order_by='startTime'). Returns rendered events + next_page_token.

get_eventC

Get a single event.

create_eventA

Create an event.

Time: pass start/end as RFC3339 dateTimes with time_zone (IANA), or all_day=true with 'YYYY-MM-DD'. recurrence is a list of RRULE strings. attendees/optional_attendees are email lists. add_meet=true attaches a Google Meet link. reminders is a list of {method:'popup'|'email', minutes:int}. send_updates ∈ all/externalOnly/none. extra_fields merges any other Calendar event fields.

update_eventB

Update an event (patch — only the fields you pass are changed).

delete_eventC

Delete an event. send_updates ∈ all/externalOnly/none notifies attendees.

quick_add_eventA

Create an event from natural language (e.g. 'Lunch with Sam tomorrow 1pm').

move_eventC

Move an event from one calendar to another.

list_event_instancesC

List the individual instances of a recurring event.

respond_to_eventB

RSVP to an event you're invited to. response ∈ accepted/declined/tentative.

import_eventC

Import an event (adds a copy carrying an existing iCalUID, e.g. from an .ics).

list_calendarsB

List the calendars in this account (with access role, color, primary/selected flags).

min_access_role ∈ freeBusyReader/reader/writer/owner filters the list.

get_calendarB

Get a calendar's metadata (summary, description, timeZone, location).

create_calendarC

Create a new secondary calendar.

update_calendarC

Update a calendar's metadata (patch).

delete_calendarA

Delete a secondary calendar (cannot delete the primary calendar).

clear_calendarB

Delete ALL events from a primary calendar (only works on a primary calendar).

subscribe_calendarC

Add an existing calendar (by id) to this account's calendar list.

unsubscribe_calendarB

Remove a calendar from this account's calendar list (does not delete the calendar).

update_calendar_subscriptionC

Change how a calendar appears in your list: color, selected, hidden, name override, reminders.

list_aclC

List the access-control rules (who the calendar is shared with) and their ruleIds.

share_calendarC

Share a calendar.

role ∈ reader/writer/owner/freeBusyReader. scope_type ∈ user/group/domain/default; scope_value is the email/domain (omit for 'default' = public).

update_aclB

Change the role of an existing share (get ruleId from list_acl).

unshare_calendarB

Remove a share / access rule (get ruleId from list_acl).

get_freebusyB

Query busy time ranges across one or more calendars between time_min and time_max (RFC3339).

calendar_ids defaults to ['primary']. Returns busy slots per calendar.

list_settingsA

List all user calendar settings (timezone, week start, default reminders, etc.).

get_settingB

Get a single user calendar setting by id (e.g. 'timezone', 'weekStart').

get_colorsB

Get the calendar and event color palettes (colorId -> hex values).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/eitan3/Gmail_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server