manor-os/manor-ai/mcp-gmail
Claude Code and agent skill by manor-os/manor-ai
- community
Checking that the SKILL.md file is still in the repository.
Operate the user's connected Gmail account through the Gmail MCP. Use when the user asks to read, search, summarize, send, reply to, draft, label, archive, or triage email on their Gmail / Google Mail account.
Install
npx vskill@latest install manor-os/manor-ai/mcp-gmailSKILL.md
Gmail Runtime Skill
Use this skill to operate the user's connected Gmail account through the Gmail MCP (mcp__gmail__*). Do not use web_search, web_fetch, or a browser to read or send mail when this account is connected — these tools are the source of truth for the user's inbox.
When To Use
Use Gmail when the user names Gmail / Google Mail, or asks to read, search, summarize, triage, send, reply, draft, label, or archive email and a Gmail integration is connected. For non-Gmail IMAP/SMTP accounts use the email MCP; for Outlook use the outlook MCP — the tool surfaces differ, do not mix them.
Connection
If a tool returns an auth error (token expired, insufficient scope, account not connected), stop and tell the user to reconnect Gmail in Integrations. Do not fall back to scraping mail through a browser. mcp__gmail__get_profile is a cheap way to confirm the connected address before acting on "my email".
Core Tools
Read / search:
list_messages— search with Gmail query syntax (required:query, e.g.is:unread newer_than:7d,from:x@y.com). Returns IDs only.get_message— full headers + body bymessage_id.list_threads/get_thread— work at thread granularity for conversations.download_attachment— fetch an attachment by message + attachment id.list_labels/get_profile— labels and the connected address.
Write / send (high-impact — see Guardrails):
send_message— required:to,subject,body; optionalcc,bcc,reply_to_message_id.reply_to_message— required:message_id,body(replies in-thread).list_drafts/get_draft,create_draft/update_draft/delete_draft, thensend_draft— inspect and stage mail before sending; preferred when the user should review first.
Triage:
mark_read/mark_unread,archive_message,trash_message(reversible ~30d viauntrash_message),mark_spam.trash_thread— move a whole conversation to Trash after confirming the thread.batch_modify— add/remove labels across up to 1000message_idsin one call; use for bulk triage instead of looping single calls.create_label/delete_label,add_label/remove_label— manage custom labels and apply them to messages.
Common Recipes
Summarize unread inbox
list_messageswithquery: "is:unread in:inbox newer_than:7d".get_message(formatmetadataorfull) for each returned ID.- Summarize; do not mark read unless the user asked.
Reply to a specific email
list_messagesto locate it (e.g.from:... subject:...), thenget_messageto read full context.- Draft the reply text, show it to the user, and get confirmation (see Guardrails).
reply_to_messagewith thatmessage_idandbody— keeps the thread.
Bulk triage / clean up
list_messageswith a precise query (e.g.from:newsletter@x.com older_than:30d).- Confirm the count and the action with the user.
batch_modify(e.g. addTRASH/ removeINBOX) over the collected IDs — one call.
Guardrails
- Never send or reply without explicit user confirmation of the recipient(s) and the body. Default to
create_draftand show the draft when intent is ambiguous; onlysend_message/send_draftafter the user approves. - Verify recipients before sending — re-read
to/cc/bcc; do not invent addresses. Usebccfor multi-recipient external sends to avoid leaking address lists. - Bulk operations (
batch_modify, mass trash) require an explicit count + confirmation. Preferarchive_message/trash_message(reversible) overmark_spamor hard deletes. - Privacy: only read messages relevant to the task. Do not dump full inbox contents into other tools or external channels.
Edge Cases & Errors
list_messagesreturns IDs only — you mustget_messageto read content; don't assume the query result has bodies.- Empty result ≠ error: report "no matching messages" rather than retrying with broader queries unprompted.
- Pagination: use the returned
page_tokento continue; don't raisemax_resultspast 100. trash_messageis reversible (~30 days) viauntrash_message; there is no separate permanent-delete tool here — say so if the user expects hard deletion.- Auth / scope errors → stop and ask the user to reconnect; do not work around with a browser.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingpackages/core/ai/skills/mcp_gmail/SKILL.md
Popularity
- Repository stars
- 164
- Repository forks
- 52
- 7-day trend score
- 26
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/manor-os/manor-ai/mcp-gmail)