gmail-mcp-oauth-proxy

Configures a local gmail-mcp OAuth proxy to give Hermes Gmail access.

Updated Aug 21, 2026
One-click install
npx skills add https://github.com/TylerSimons1127/vibe --skill gmail-mcp-oauth-proxy-tylersimons1127
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: gmail-mcp-oauth-proxy
Source: https://github.com/TylerSimons1127/vibe/tree/main/skills/integrations/gmail-mcp-oauth-proxy
Command: npx skills add https://github.com/TylerSimons1127/vibe --skill gmail-mcp-oauth-proxy-tylersimons1127

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires gmail-mcp, and includes scripts (resource) and references (resource) components.

What problem does it solve? The official remote Gmail MCP endpoint lacks the OAuth discovery metadata Hermes's MCP client requires, so remote login fails with errors like "no OAuth token obtained" or invalid_state. This Skill sets up a local gmail-mcp server on 127.0.0.1:8080 that brokers the Google OAuth consent flow back to Hermes. ## Core Features & Use Cases - Local OAuth Proxy Setup: Installs and configures domdomegg/gmail-mcp with Google OAuth client credentials, correct redirect URIs, and Hermes profile config via hermes config set. - invalid_state Patch: Applies a mandatory patch replacing in-URL state with a file-backed server-side session store, including empty-session guards and exact-match callback validation. - Self-Contained Orchestrator: Runs scripts/oauth_orchestrate.py to register the session, open Chrome on the real Google consent URL, receive the callback code, and write the Hermes token file. - Use Case: When hermes mcp login gmail hangs or fails with State parameter mismatch, use this Skill to complete the Gmail OAuth flow and verify the token at mcp-tokens/gmail.json. ## Quick Start Set up Gmail access for my Hermes agent using the local gmail-mcp OAuth proxy and walk me through the consent flow.

Frequently Asked Questions about gmail-mcp-oauth-proxy

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I give Hermes access to Gmail via MCP?▼

Run domdomegg/gmail-mcp locally on 127.0.0.1:8080 as an OAuth proxy holding your Google client credentials, then register it in your Hermes profile with hermes config set and complete login via hermes mcp login gmail or the orchestrator script.

Why does hermes mcp login gmail fail with invalid_state?▼

Stock gmail-mcp encodes redirect_uri and state in the OAuth state param, but Google sometimes drops state on redirect, so the callback cannot decode it. The fix patches gmail-mcp to use a file-backed server-side session store keyed by a random session id.

What redirect URI should the Google OAuth client use for gmail-mcp?▼

The Google Cloud OAuth client (Web app type) must use exactly http://127.0.0.1:8080/callback, which is what gmail-mcp sends to Google. You must also add the Gmail user as a test user under the OAuth consent screen in Testing mode.

Why does Hermes report no OAuth token obtained for Gmail?▼

Hermes picks a random ephemeral callback port unless you pin redirect_port 8080 and redirect_host 127.0.0.1 in the MCP server config, so the token exchange never matches Google's registered redirect URI. Set both values with hermes config set.

How do I verify the Gmail MCP token actually works?▼

Check that a non-empty token exists at the profile's mcp-tokens/gmail.json path, then call the Gmail API directly with the Bearer token against users/me/profile, and run an MCP initialize plus tools/list handshake against the proxy.

Why does the Gmail OAuth flow fail with State parameter mismatch after patching?▼

A stale browser tab from an earlier attempt completed an old flow and hit the live callback port. Kill all Chrome and node processes, delete the session file, restart the server, and start a brand-new login in a fresh incognito window.