hermes-google
Hermes-Google is an MCP server that gives an AI assistant (e.g., Claude/Hermes) scoped access to Gmail, Google Calendar, and Google Drive through a dedicated Hermes Google account, keeping it isolated from your personal Google account. All write operations require user confirmation.
Authentication
auth_status— Check whether stored OAuth credentials are valid, expired, and what scopes are granted
Gmail
mail_list_pending— List unread forwarded emails (newest first, up to 100)mail_search— Search emails using Gmail search syntax (e.g.,from:alice,subject:invoice)mail_get— Fetch a single email by ID, including full content, attachments, and threading infomail_send_draft— Send a draft email from Hermes's account, restricted to the user's own inbox only (external recipients blocked)mail_mark_read— Mark a message as readmail_archive— Archive a message (removes INBOX label)
Google Calendar
cal_list_calendars— List all calendars visible to Hermes (own + shared)cal_list_events— List events in a calendar within a time rangecal_create_event— Create a calendar event with title, time, attendees, and descriptioncal_update_event— Patch specific fields of an existing eventcal_delete_event— Delete a calendar event
Google Drive
drive_search— Search Drive files by name, with optional MIME type filterdrive_list— List the contents of a Drive folder by folder IDdrive_get— Download a Drive file to local cache (~/.cache/hermes-google/drive/)drive_upload— Upload a local file to Drive (with optional target folder)drive_update— Replace an existing Drive file's contents with a local filedrive_move— Move a Drive file to a different parent folderdrive_delete— Delete a Drive file
Allows reading and managing emails, including listing pending emails, searching, getting messages, sending drafts, marking read, and archiving.
Allows interacting with Google Calendar, including listing calendars, listing events, and creating, updating, and deleting events.
Allows searching, listing, uploading, updating, moving, and deleting files in Google Drive.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hermes-googlecheck my unread emails"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
hermes-google
MCP server giving Hermes (Claude Code running as a personal assistant) scoped access to Gmail, Google Calendar, and Google Drive through a dedicated Hermes Google account — without granting access to your personal Google account.
See docs/superpowers/specs/2026-04-23-hermes-google-design.md
for the full design.
Quick Start
Add hermes-google to your project's .mcp.json:
{
"mcpServers": {
"hermes-google": {
"type": "stdio",
"command": "uvx",
"args": ["hermes-google-mcp@latest"]
}
}
}Related MCP server: Mariana Google MCP
Google Account Setup
Sign up for a plain Gmail account (e.g.,
hermes-yourname@gmail.com)In Google Cloud Console: create a project, enable the Gmail, Calendar, and Drive APIs
Create an OAuth 2.0 Client ID (type: Desktop application) and download the client secret JSON
Save it as
~/.config/hermes-google/oauth_client.jsonRun the setup script:
git clone https://github.com/jimmy-larsson/hermes-google.git
cd hermes-google
./scripts/setup.shThe setup script creates the config, runs the OAuth flow (saving the token to
~/.config/hermes-google/token.json), and prints the remaining manual steps.
Host-Side OAuth
The OAuth flow opens a browser for consent — it must run on your host machine, not inside a headless container.
If your config and credentials live inside a container (e.g. Docker-mounted
~/.config/hermes-google/), you need to:
Copy
config.tomlandoauth_client.jsonto the host filesystem at~/.config/hermes-google/Run the OAuth flow from the host:
uvx hermes-google-mcp@latest auth loginThe resulting
token.jsonis saved on the host — it will be picked up by the container through the volume mount
Gmail Setup
Create filters in your personal Gmail to route emails to the Hermes account:
For each sender you want Hermes to handle: create a filter that both labels the email (e.g.
hermes-review) and forwards it tohermes-yourname@gmail.com— in a single filterFor replies from Hermes:
from:hermes-yourname@gmail.com→ apply labelhermes
Gotchas
Filters don't chain. Gmail evaluates all filters in a single pass against the original message properties. A label applied by filter A will not trigger filter B that matches on that label. You must combine label + forward into one filter per sender/criteria.
"Apply to existing" skips forwarding. When you click "Also apply filter to matching conversations", Gmail only runs local actions (label, archive, star). Forwarding only fires on new incoming messages.
Calendar & Drive Setup
Calendar: Share your calendar with the Hermes account at "Make changes to events" permission level. Set
[user].calendar_idinconfig.toml.Drive: Share specific files/folders with the Hermes account. Optionally set
[drive].default_parent_folder_idinconfig.tomlfor a default upload folder.
Usage
Once installed, the following tools are available to Hermes in every session:
mail_list_pending,mail_search,mail_get,mail_send_draft,mail_mark_read,mail_archivecal_list_calendars,cal_list_events,cal_create_event,cal_update_event,cal_delete_eventdrive_search,drive_list,drive_get,drive_upload,drive_update,drive_move,drive_deleteauth_status
All write operations require user confirmation. mail_send_draft is
structurally restricted to your own email; it cannot send to external
recipients.
Debug CLI
Same operations via shell:
hermes-google auth status
hermes-google mail list --limit 10
hermes-google mail get <message_id>
hermes-google cal list --start 2026-04-24T00:00:00+09:00 --end 2026-04-25T00:00:00+09:00
hermes-google drive search "Q1 report"Revocation
Any one of these fully cuts an integration surface:
Delete the forwarding filter in your personal Gmail
Unshare your calendar with the Hermes account
Unshare a Drive file or folder
hermes-google auth revoke— removes the refresh token locallyclaude mcp remove hermes-google— Hermes loses the tools; Google data untouchedDelete the Hermes Google account entirely
Development
conda activate hermes-google
pytest
ruff check src testsReleasing
# 1. Bump version in pyproject.toml, commit and push
git commit -am "chore: bump version to X.Y.Z"
git push
# 2. Tag locally and push — triggers the CI pipeline
git tag X.Y.Z
git push origin X.Y.Z
# 3. After CI passes, create the GitHub release
gh release create X.Y.Z --verify-tag --generate-notesAlternative Install Methods
# User scope — available in all your projects
claude mcp add -s user hermes-google -- uvx hermes-google-mcp
# Local scope — private to you in this project only
claude mcp add hermes-google -- uvx hermes-google-mcpMaintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jimmy-larsson/hermes-google'
If you have feedback or need assistance with the MCP directory API, please join our Discord server