gogcli-mcp-gmail

Use when the user asks to read, organize, draft, forward, autoreply, or otherwise work with Gmail in depth. Triggers for requests involving threads, labels, drafts, attachments, bu…

chrischall

@chrischall

Install

$ openclaw skills install @chrischall/gogcli-mcp-gmail

gogcli-mcp-gmail

Extended Gmail MCP server via gogcli — 61 tools: 8 auth + 4 base Gmail + 49 extra dedicated Gmail tools.

Requirements

  • gogcli installed and authenticated
  • Node.js 18 or later

Setup

{
  "mcpServers": {
    "gogcli-gmail": {
      "command": "npx",
      "args": ["-y", "gogcli-mcp-gmail"],
      "env": {
        "GOG_ACCOUNT": "you@gmail.com"
      }
    }
  }
}

Extra Gmail Tools

Read

ToolWhat it does
gog_gmail_rawRaw Gmail API JSON for a message
gog_gmail_attachmentDownload an attachment by attachmentIndex (or legacy attachmentId) and deliver its contents — inline when within inlineMaxBytes (3 MiB default), else uploaded to Drive with a link (deliver: auto/inline/drive/off)
gog_gmail_urlPrint web URLs for threads
gog_gmail_historyList history events since a historyId
gog_gmail_messages_searchSearch individual messages, not threads — one row per message

Threads

ToolWhat it does
gog_gmail_thread_getGet a thread with all messages
gog_gmail_thread_modifyModify labels on a thread
gog_gmail_thread_attachmentsList/download all attachments in a thread

Labels

ToolWhat it does
gog_gmail_labels_listList all labels
gog_gmail_labels_getGet a label's details and counts
gog_gmail_labels_createCreate a new label
gog_gmail_labels_renameRename a label
gog_gmail_labels_deleteDelete a label
gog_gmail_labels_modifyModify labels on one or more threads
gog_gmail_labels_styleChange a label's color or visibility

Bulk operations

ToolWhat it does
gog_gmail_archiveArchive by IDs or query
gog_gmail_mark_readMark read by IDs or query
gog_gmail_mark_unreadMark unread by IDs or query
gog_gmail_trashTrash by IDs or query
gog_gmail_message_modifyModify labels on a single message
gog_gmail_batch_deletePermanently delete multiple messages
gog_gmail_batch_modifyModify labels on multiple messages

Drafts

ToolWhat it does
gog_gmail_drafts_listList drafts (+ free origin/rootsOwnThread)
gog_gmail_drafts_getGet a draft
gog_gmail_drafts_createCreate a draft
gog_gmail_drafts_updateUpdate a draft; replyToThreadId re-threads it in place (same id) + threadingVerification; forkSiblingDraftId blocks a body overwrite that would drop the other copy's text
gog_gmail_drafts_deleteDelete a draft
gog_gmail_drafts_sendSend a draft (404 → DRAFT_FORKED, or GOOGLE_404_NOT_THE_DRAFT if the draft is still listed)
gog_gmail_drafts_diffDiff two drafts (body divergence, threading loss, fork verdict)
gog_gmail_drafts_replySave a reply as a draft — inherited recipients, subject and quote; never sends
gog_gmail_drafts_reply_allSave a reply-all as a draft; never sends
gog_gmail_drafts_forwardSave a forward as a draft; recipients optional, so it can be staged without any

A draft edited in a mail client is replaced, not updated: the old id 404s. drafts_update / drafts_send answer that 404 with a DRAFT_FORKED report (what happened, the drafts that exist, what to do) instead of a bare notFound, at a bounded cost of ≤2 extra gog calls. It never names a replacement — the 404'd draft cannot be fetched, so no lineage signal can exist; use drafts_diff on a named pair for that. The 404 is attributed first: replyToThreadId and replyToMessageId resolve their own entities and 404 identically, so if the draft id is still in the listing the answer is GOOGLE_404_NOT_THE_DRAFT — no fork claimed, reply target named. That listing is capped at 20, so listingEvidence says what it can carry: only a complete-listing (the window came back short, i.e. it covered the folder) claims the draft is gone; capped-listing and listing-unavailable say in words that they establish nothing. A reply target, when one was passed, is echoed and explained first.

drafts_diff confirms a pairing only on a link from the candidate to the original (its Message-Id in the candidate's In-Reply-To/References) or on agreement over text neither draft quoted and neither client generated — the salutation, closing formula, name and signature block are excluded alongside quoting, because a client writes them identically on every message (Hi Jennifer, + Thanks, + Chris + Sent from my iPhone is 4 lines and 43 characters of pure apparatus). A shared reply root is corroboration only — every reply in a thread has one — and none means no evidence was found, not "unrelated". To adopt the survivor back onto the thread, call drafts_update with replyToThreadId: same draft id, gog resolves the reply headers, threadingVerification reports whether it worked. It rewrites the whole body, so diff and merge first.

gog requires a body on every update, so there is no header-only edit and every adoption overwrites the body. Pass forkSiblingDraftId (the other copy's id) and the update reads that draft first — one extra gog call, zero when the param is absent — and refuses to write (DRAFT_CONTENT_LOSS, nothing changed) if your body drops a line the sibling holds, naming the lines; acceptContentLoss: true overrides, and contentLossCheck.written then reports whether the write it authorised actually succeeded — a failed write says so and says nothing was saved. A check that could not run refuses too (DRAFT_CONTENT_LOSS_UNCHECKED). It compares text only and never claims one draft replaced another — that is drafts_diff's job.

Write

ToolWhat it does
gog_gmail_importImport an RFC822/EML message into the mailbox (keeps its headers/date; does not send)
gog_gmail_forwardForward a message
gog_gmail_replyReply to the original sender
gog_gmail_reply_allReply to sender plus every To/Cc recipient
gog_gmail_autoreplyReply once to all messages matching a query

Settings

ToolWhat it does
gog_gmail_vacation_getGet the vacation responder settings
gog_gmail_vacation_updateEnable/disable the vacation responder
gog_gmail_filters_listList all filters
gog_gmail_filters_getGet a filter by ID
gog_gmail_filters_createCreate a filter
gog_gmail_filters_deleteDelete a filter
gog_gmail_sendas_listList send-as aliases
gog_gmail_sendas_getGet one send-as alias
gog_gmail_sendas_createCreate a send-as alias
gog_gmail_sendas_updateUpdate a send-as alias
gog_gmail_sendas_deleteDelete a send-as alias
gog_gmail_sendas_verifyResend an alias verification email

Plus 8 auth tools and 4 base Gmail tools (search, get, send, run). Use gog_gmail_run for the settings with no dedicated tool (delegates, forwarding, watch) and email tracking (track).

Top skills in this category

gmail

@byungkyu

Gmail API integration with managed OAuth. Read, send, and manage emails, threads, labels, and drafts. Use this skill when users want to interact with Gmail. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the `maton` CLI with OAuth login; default to read and list calls, and confirm every write or new connection with the user.

7539k

WeChat MP CN

@guohongbin-git

微信公众号监控 - 文章监控、阅读量追踪、舆情分析(WeChat Official Account)

4714k

Wechat Article Search

@wuchubuzai2018

搜索微信公众号文章技能。通过微信搜索获取文章列表,覆盖科技/AI、社会热点、财经、教育、职场等各类中文资讯;可按关键词检索并返回标题、概要、发布时间、来源公众号与链接。当用户需要查找微信公众号文章、整理参考资料或快速获取文章信息时使用此技能。

3317k

Wechat Publisher

@0731coderlee-sudo

一键发布 Markdown 到微信公众号草稿箱。基于 wenyan-cli,支持多主题、代码高亮、图片自动上传。

399.4k

google-meet

@byungkyu

Google Meet API integration with managed OAuth. Create meeting spaces, list conference records, and manage meeting participants. Use this skill when users want to interact with Google Meet. For other third party apps, use the api-gateway skill (https://clawhub.ai/byungkyu/api-gateway). Calls run through the `maton` CLI with OAuth login; default to read and list calls, and confirm every write or new connection with the user.

1518k