Dual-Gmail MCP — Setup Runbook

Wire personal (ztreitel@) into Claude Code alongside business — no forwarding, Mildred never sees personal
Generated: Monday, May 26 2026 · 1:33 PM EDT
I pre-built: ~/.gmail-mcp/ dir · the setup script · this runbook · verified the MCP package (v1.1.11)
You do: ~7 clicks in Google Cloud (Step A) + run one script (Step B). ~15 min total.

The architecture: Business sam@hookstreetcapital.com already runs on the claude.ai Gmail connector (works in every Claude Code session, including remote-control). This adds personal ztreitel@gmail.com as a second, local MCP — a small Gmail MCP server running on your machine, authenticated only to your personal account.

Why this respects your privacy rule: the personal OAuth token lives in C:\Users\ztrei\.gmail-mcp\ — local to this computer, used only by Claude Code. It is completely separate from Mildred's delegate access to the business inbox. Personal mail never enters the business account. No forwarding, no Gmailify, no mixing.

Result: I'll have both inboxes in every session. Business tools = mcp__claude_ai_Gmail__*. Personal tools = mcp__gmail-personal__*.

A Google Cloud — create the OAuth client You · browser · ~10 min

This is the only part I can't do for you (no CLI for the consent screen). Go to console.cloud.google.com — sign in as ztreitel@gmail.com.

  1. Create a project (top bar → project dropdown → New Project). Name: claude-gmail-mcp. Create, then select it.
  2. Enable the Gmail API. Search bar → type "Gmail API" → click it → Enable.
  3. Configure the OAuth consent screen. Left menu → "APIs & Services" → "OAuth consent screen" (newer console: "Google Auth Platform" → "Branding/Audience"). Choose External. Fill:
    App name
    Claude Gmail MCP
    User support email
    ztreitel@gmail.com
    Developer contact
    ztreitel@gmail.com
    Save. You can skip the Scopes screen (click through — the MCP requests its scopes at sign-in).
  4. Add yourself as a Test user. On the consent screen / "Audience" tab → Test users → Add ztreitel@gmail.com. (Keeping it in "Testing" mode means no Google verification needed — fine for personal use.)
  5. Create the OAuth client. Left menu → "Credentials" → "Create Credentials" → "OAuth client ID" → Application type: Desktop app → Name: gmail-mcp-desktop → Create.
  6. Download the JSON. A dialog shows the client — click Download JSON (or the download icon on the credential row).
  7. Save it to exactly this path + filename:
    C:\Users\ztrei\.gmail-mcp\gcp-oauth.keys.json
    (I already created the .gmail-mcp folder. Rename the downloaded file to gcp-oauth.keys.json.)

B Run the setup script You · terminal · ~3 min

Once the keys file is saved, run this from the workspace (PowerShell or via ! in Claude Code):

powershell -File scripts/setup-gmail-personal-mcp.ps1

It will, in order:

  1. Confirm the keys file is in place.
  2. Launch the OAuth consent flow — a browser opens. Sign in as ztreitel@gmail.com and approve. (Token saves to ~/.gmail-mcp/credentials.json.)
  3. Register the MCP server gmail-personal at user scope (available in all your Claude Code sessions; NOT committed to git).
  4. Run claude mcp list to verify it connected.

C Reload + tell me Then I take over

Restart this Claude Code session (or start a new one) so the new MCP loads. Then say "personal gmail is wired" and I'll confirm I can read both inboxes — I'll do a test search on the personal account to prove it.

Security note — personal is the sensitive account

This MCP gets read+write access to your personal Gmail (bank 2FA, password resets live there). The token is local-only and Mildred can't see it — but I will be able to read/search personal mail once it's wired. That's the point (you asked for it), just naming it plainly. If you'd rather I treat personal as read-only in practice, say so and I'll never send/delete/modify on that account — only read + search. Your 2FA stays SMS-to-phone regardless; nothing here touches that.

What this retires

This replaces the ChatGPT↔Claude personal-inbox relay stopgap (the one in docs/ from session 38). Once personal is wired directly, Claude Code reads it natively — no relay, no copy-paste between assistants.

Your meta-ask — "have the system offer things like this on its own"

Noted and real. The durable version: a periodic capability scan — Claude reviews what connectors/MCPs/skills exist vs. the friction points in recent sessions, and proactively surfaces "here's a wiring that would remove this recurring pain." That's a small recurring routine, not a one-off. I'll propose it as its own thing once the Gmail wiring is done so we don't dilute this task — flag it back to me as "do the capability-scan routine" whenever you want it built.