Skip to main content
Glama
hjerkic

gmail-mcp-server

by hjerkic

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TOKEN_ENCRYPTION_KEYYesKey used to encrypt token storage. Generate with: python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"

Instructions

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

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

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

Tools

Functions exposed to the LLM to take actions

NameDescription
gmail_searchA

Search messages using Gmail's search syntax (e.g. "from:boss is:unread").

Returns compact metadata (id, thread_id, from, subject, date, snippet, labels) — no message bodies. Use gmail_read_message for a full body.

gmail_read_messageB

Fetch one message in full, including its plain-text body.

gmail_list_recentA

Fast, compact fetch of recent inbox messages for periodic triage.

Intentionally returns metadata + snippet only (no bodies) so it's cheap to call on a schedule. This tool does not decide what's "urgent" — it hands back enough signal (subject, sender, snippet, labels like IMPORTANT/STARRED/UNREAD) for the caller to make that judgment.

gmail_create_draftA

Create a draft email. This never sends anything.

Pass thread_id to draft a reply within an existing thread (the draft will pick up proper In-Reply-To/References headers automatically).

gmail_send_draftA

Send a previously created draft. This is a real, irreversible send.

There is no tool to send arbitrary text directly — a draft must be created first via gmail_create_draft.

gmail_apply_labelA

Attach a custom label to a message (creating it first if needed).

Only user-created labels can be applied through this tool — system labels (TRASH, SPAM, INBOX, UNREAD, IMPORTANT, ...) are rejected, so this tool cannot be used to trash, spam, or archive a message. Returns the label id that was applied.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation4/5

Tools are mostly distinct: read/list/search handle retrieval with clear differences in scope, create_draft/send_draft separate drafting from sending, and apply_label handles labeling. One slight overlap exists between gmail_list_recent and gmail_search (both return compact metadata + snippets), though their intended use cases differ enough to disambiguate.

Naming Consistency5/5

All tools follow a consistent gmail_verb_noun pattern (gmail_read_message, gmail_list_recent, gmail_create_draft, gmail_send_draft, gmail_apply_label, gmail_search). Naming is uniform, clear, and predictable throughout.

Tool Count5/5

Six tools are well-scoped for a Gmail integration server. Each tool covers a distinct core Gmail operation (read, list, draft, send, label, search) without bloat or overlap, falling comfortably within the ideal 3-15 range.

Completeness3/5

Core read, list, search, draft, send, and label workflows are covered, but there are notable gaps: no update/modify message tools (trash, archive, mark read/unread), no delete draft tool, and no task to list or manage threads as a whole. The label tool explicitly rejects system labels, meaning agents cannot archive or trash messages at all, which is a significant dead end for common email workflows.

Maintenance

ActivitySlowing
ResponsivenessNo issues