Skip to main content

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"]
    }
  }
}

Google Account Setup

  1. Sign up for a plain Gmail account (e.g., hermes-yourname@gmail.com)
  2. In Google Cloud Console: create a project, enable the Gmail, Calendar, and Drive APIs
  3. Create an OAuth 2.0 Client ID (type: Desktop application) and download the client secret JSON
  4. Save it as ~/.config/hermes-google/oauth_client.json
  5. Run the setup script:
git clone https://github.com/jimmy-larsson/hermes-google.git
cd hermes-google
./scripts/setup.sh

The 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:

  1. Copy config.toml and oauth_client.json to the host filesystem at ~/.config/hermes-google/
  2. Run the OAuth flow from the host:
    uvx hermes-google-mcp@latest auth login
    
  3. The resulting token.json is 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:

  1. For each sender you want Hermes to handle: create a filter that both labels the email (e.g. hermes-review) and forwards it to hermes-yourname@gmail.com — in a single filter
  2. For replies from Hermes: from:hermes-yourname@gmail.com → apply label hermes

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_id in config.toml.
  • Drive: Share specific files/folders with the Hermes account. Optionally set [drive].default_parent_folder_id in config.toml for 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_archive
  • cal_list_calendars, cal_list_events, cal_create_event, cal_update_event, cal_delete_event
  • drive_search, drive_list, drive_get, drive_upload, drive_update, drive_move, drive_delete
  • auth_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 locally
  • claude mcp remove hermes-google — Hermes loses the tools; Google data untouched
  • Delete the Hermes Google account entirely

Development

conda activate hermes-google
pytest
ruff check src tests

Releasing

# 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-notes

Alternative 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-mcp

Metadata

Release files for hermes-google-mcp 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for hermes-google-mcp 0.3.0
File Size Uploaded Provenance Actions
hermes_google_mcp-0.3.0.tar.gz 60.9 kB With provenance Details for hermes_google_mcp-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for hermes-google-mcp 0.3.0
File Interpreter ABI Platform Actions
hermes_google_mcp-0.3.0-py3-none-any.whl Python 3 none any Details for hermes_google_mcp-0.3.0-py3-none-any.whl

Total release size: 82.9 kB

Release files / hermes_google_mcp-0.3.0.tar.gz

Download URL hermes_google_mcp-0.3.0.tar.gz
Size 60.9 kB
Tags Source
SHA-256 checksum
How to use checksums
07ca34ad632f25996dd884ae95213ccfc98d794d95cf5da0b39c2097967ceda6
BLAKE2b-256 checksum
How to use checksums
b8911c069aeb00e34ab1a7373eac2337871037a8ce6b28ee9765822a84492b1e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 8, 2026.

Transparency log

Release files / hermes_google_mcp-0.3.0-py3-none-any.whl

Download URL hermes_google_mcp-0.3.0-py3-none-any.whl
Size 22.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
91b8403903cb0d1824e3f7c4211c09e4ba5d68663b295593150fb04aadcb9478
BLAKE2b-256 checksum
How to use checksums
b765ac3029fe23a25b34a3936e176f6f9045101344c325bc0b298a89e2d12e88
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 8, 2026.

Transparency log

Security for hermes-google-mcp 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for hermes_google_mcp-0.3.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 8, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page