Skip to main content
Glama
draft-only-google

draft-only-google

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DRAFT_ONLY_GOOGLE_ACCOUNTNoMakes login refuse any other Google account. Also the Keychain account name; without it the name is default.
DRAFT_ONLY_GOOGLE_TIME_ZONENoThe default time zone for calendar events.UTC
DRAFT_ONLY_GOOGLE_SERVER_NAMENoThe name the MCP server reports.draft-only-google
DRAFT_ONLY_GOOGLE_ATTACHMENT_DIRNoWhere download_attachment saves files.~/Downloads/draft-only-google-mcp
DRAFT_ONLY_GOOGLE_ALLOW_ATTENDEESNoSet to 1, true, yes or on to let create_event and update_event set guests.off
DRAFT_ONLY_GOOGLE_ATTACHMENT_ROOTSNoFolders create_draft may attach from, separated by ':'. Defaults to the attachment folder. Links are followed first, and a draft's attachments are capped at 25 MB in total.
DRAFT_ONLY_GOOGLE_KEYCHAIN_SERVICENoThe Keychain service name.draft-only-google-mcp

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

Gmail and Google Calendar for the signed-in Google account. Email can only be drafted here, never sent: a person reviews and sends each draft.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

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

Tools

Functions exposed to the LLM to take actions

NameDescription
search_threadsA

Search Gmail threads with Gmail search syntax (from:, to:, subject:, newer_than:7d, is:unread, in:sent, label:...). Returns each thread's latest message summary. Use get_thread for full bodies.

get_threadB

Get every message in a Gmail thread with headers, plain-text body and attachment list.

get_messageB

Get one Gmail message with headers, plain-text body and attachment list.

download_attachmentB

Save an attachment to the attachment folder under a new unique name and return the local path.

list_labelsA

List Gmail labels with their ids.

modify_thread_labelsA

Add or remove label ids on a thread. Archive = remove INBOX. Mark read = remove UNREAD.

create_draftA

Create a draft in the mailbox (it is NOT sent). For a reply, pass reply_to_message_id and leave subject empty to get "Re: " threaded correctly. Write each paragraph as one line; lines wrapped by hand are joined so the email fills the reader's window. attachments: absolute paths of local files to attach. Each must be a regular file inside the attachment folder or DRAFT_ONLY_GOOGLE_ATTACHMENT_ROOTS, and together they must fit in 25 MB.

update_draftC

Replace the contents of an existing draft.

list_draftsC

List drafts in the mailbox, including any Bcc recipients.

list_calendarsB

List calendars visible to the account.

list_eventsA

List calendar events between two RFC 3339 times (e.g. 2026-01-15T00:00:00+01:00). Recurring events are expanded into single instances, ordered by start time.

get_eventC

Get one calendar event.

create_eventB

Create a calendar event. start/end are RFC 3339 datetimes or YYYY-MM-DD for all-day. attendees is refused unless DRAFT_ONLY_GOOGLE_ALLOW_ATTENDEES is on. This server asks Google not to notify guests, but the event may still appear on their calendars and Google may still email them, so treat adding a guest as a visible action.

update_eventA

Change fields on a calendar event; omitted fields stay as they are. attendees replaces the whole list and is refused unless DRAFT_ONLY_GOOGLE_ALLOW_ATTENDEES is on. This server asks Google not to notify guests, but Google may still email them about a change.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.5/5.0

Scored across 14 tools

Disambiguation4/5

Each tool targets a distinct resource+action pair (thread vs message vs draft vs event), and the descriptions explicitly cross-reference each other (search_threads points to get_thread for full bodies). The only borderline pair is get_thread vs get_message, which requires the agent to know Gmail's thread/message model, but the descriptions make the split workable.

Naming Consistency5/5

All 14 tools follow a strict snake_case verb_noun pattern (list_/get_/search_/create_/update_/modify_/download_). No mixed conventions or vague verbs anywhere in the set.

Tool Count5/5

14 tools is well within a comfortable range and each maps to a concrete Gmail or Calendar operation. The split across threads, messages, attachments, labels, drafts, events, and calendars is proportionate to the two-API scope.

Completeness3/5

Read/create/update lifecycle is covered for drafts and events, and send is intentionally excluded by design (draft-only). However, there is no delete_draft, no delete_event, no get_draft, and no way to modify labels on individual messages rather than threads, leaving dead ends for cleanup workflows.

Maintenance

ActivityMaintained
ResponsivenessSyncing