A Model Context Protocol server that enables full management of Gmail accounts.
gmail-mcp
A Gmail MCP server using OAuth2 bearer token auth via the Dedalus MCP framework.
Tools
Messages
gmail_list_messages- List messages with search queriesgmail_get_message- Get a specific message by IDgmail_send_message- Send an emailgmail_trash_message- Move message to trashgmail_untrash_message- Remove message from trashgmail_modify_message- Add/remove labels on a message
Threads
gmail_list_threads- List email threads (conversations)gmail_get_thread- Get a thread with all messagesgmail_trash_thread- Move thread to trash
Labels
gmail_list_labels- List all labelsgmail_get_label- Get label detailsgmail_create_label- Create a new labelgmail_delete_label- Delete a user label
Drafts
gmail_list_drafts- List draft emailsgmail_get_draft- Get a draft by IDgmail_create_draft- Create a draftgmail_send_draft- Send a draftgmail_delete_draft- Delete a draft
Profile
gmail_get_profile- Get user's Gmail profile
Authentication
Gmail API requires OAuth2. The access token is provided at runtime via Dedalus credential exchange.
Required OAuth scopes (depending on operations):
https://www.googleapis.com/auth/gmail.readonly- Read-only accesshttps://www.googleapis.com/auth/gmail.send- Send emailshttps://www.googleapis.com/auth/gmail.modify- Modify messages/labelshttps://www.googleapis.com/auth/gmail.compose- Create drafts
Local Development
cd gmail-mcp
uv sync
uv run python src/main.py
API Reference
Tools (7)
gmail_list_messagesList messages with search queriesgmail_get_messageGet a specific message by IDgmail_send_messageSend an emailgmail_list_threadsList email threads (conversations)gmail_get_threadGet a thread with all messagesgmail_create_draftCreate a draftgmail_send_draftSend a draftEnvironment Variables
OAUTH_TOKENrequiredOAuth2 access token provided via Dedalus credential exchangeConfiguration
{"mcpServers": {"gmail": {"command": "uv", "args": ["run", "src/main.py"], "cwd": "/path/to/gmail-mcp"}}}