A complete technical guide to wiring three Gmail accounts into Claude via MCP — OAuth setup, workspace-mcp binary, per-account voice skills, cron at 06:00, and routing to Linear and Notion.
This guide is reviewed for clarity, service accuracy, and AI-search readability. The next quarterly content review is tracked internally before unsupported metrics or client proof are added.
What This Builds
A real inbox agent — not a chatbot that reads email when you open Claude. A scheduled system: multiple Gmail accounts wired in side by side, fifteen MCP tools per account, voice rules per audience tier, running on a 06:00 cron, with outputs routed to Linear and Notion.
When done you'll have:
- Three Gmail accounts connected through separate MCP servers
- Five voice skills (one per audience tier)
- Allow-list send policy (auto-send trusted / queue unknown)
- Daily 6:00 AM digest in your inbox
- Routing to Linear, Notion, and your task list
Prerequisites: Google Workspace, Claude Code or Claude Desktop, terminal access.
Recommended Account Structure
| Account | Purpose | Notes |
|---|---|---|
| Account 1 | Client comms | Active clients, scope, billing |
| Account 2 | Internal ops | Vendors, scheduling, team |
| Account 3 | Outbound automation | Cold replies, sales, leads + aliases |
Part 1 — Google Workspace Setup
In Google Workspace Admin (admin.google.com) → Directory → Users, add one user per account named by function. For the outbound account, add aliases under User information → Add alternate emails.
Part 2 — Google Cloud Console and OAuth
bash# 1. Create project at console.cloud.google.com # 2. Enable APIs: # APIs & Services → Library → "Gmail API" → Enable # Repeat for "Admin SDK API" # 3. Create OAuth consent screen → Internal → add scopes: # gmail.modify, gmail.send, gmail.readonly # 4. Create OAuth client: # Credentials → Create Credentials → OAuth client ID → Desktop app # Download JSON — one per Gmail account
Part 3 — Install and Register MCP Servers
bash# Install uv curl -LsSf https://astral.sh/uv/install.sh | sh # Configure and register account 1 export GOOGLE_OAUTH_CLIENT_ID="your-client-id-1" export GOOGLE_OAUTH_CLIENT_SECRET="your-client-secret-1" uvx workspace-mcp --tool-tier core claude mcp add gmail-account1 uvx workspace-mcp --tool-tier core # Repeat for accounts 2 and 3 with separate credentials claude mcp add gmail-account2 uvx workspace-mcp --tool-tier core claude mcp add gmail-account3 uvx workspace-mcp --tool-tier core # Verify: ask Claude "list my 5 most recent threads from gmail-account1"
Part 4 — Five Voice Skills
Create .claude/skills/ folder with one SKILL.md per audience tier:
- Tier 1 — Active clients: formal, outcome-first, reference project name in first sentence
- Tier 2 — Warm prospects: confident, one ask per email, under 80 words
- Tier 3 — Cold outreach replies: human and specific, match their energy, no corporate phrases
- Tier 4 — Vendors: direct and transactional, state what you need and by when
- Tier 5 — Internal team: casual, bullets over paragraphs, zero formality
Part 5 — Allow-List Policy and Routing
Define in your agent prompt or a shared skill file:
promptSend policy: - Allow-list (auto-send): [your domain], [known clients], [trusted vendors] - Everything else: queue as draft for review Routing: - Email mentions a task or deadline → create Linear issue - Email references a project document → create/update Notion page - Email needs follow-up in 3+ days → add to task list
Part 6 — Cron and Daily Digest
bash# Run manually first to test: claude -p 'Run the inbox agent: triage new emails since yesterday, draft responses, apply routing rules, and send the daily digest.' --no-interactive # Schedule at 06:00 daily: crontab -e # Add: 0 6 * * * /path/to/claude -p 'Run inbox agent' >> /var/log/inbox-agent.log 2>&1
Daily digest format: three sections — auto-sent, queued for review, routed to external tools.
Part 7 — Testing Each Layer
Test independently before running the full pipeline:
- MCP: "List my 5 most recent threads from gmail-account1" → real threads = connected
- Voice skills: draft a test reply using Tier 1 → review tone and length
- Allow-list: run against 3 test emails → confirm only the allow-list email auto-sends
- Routing: email with a task → confirm the Linear issue appears
- Cron dry run: run manually, review the digest output before enabling the schedule
Frequently Asked Questions
- Can I build this with one Gmail account? Yes — skip the multi-account sections. Voice skills, routing, and the digest still work.
- What if I don't have Google Workspace? Use personal Gmail with External OAuth consent — requires Google app verification.
- How do I prevent unwanted sends? Start with an empty allow-list. Run in queue-only mode for a week and expand auto-send only after reviewing a week of drafts.
- What VPS works for headless running? A $4–6/month Hetzner or DigitalOcean Ubuntu instance is plenty.
