mcp-google
Provides tools for searching emails, creating drafts, sending emails, and modifying labels. Supports multi-account configuration with OAuth2 authentication.
Provides tools for listing calendars and events, creating/updating/deleting events, and querying free/busy schedules across multiple calendars. Supports multi-account configuration with OAuth2 authentication.
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., "@mcp-googlelist my upcoming calendar events for today"
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.
Modular Context | Karpathy LLM Knowledge Base + Gmail & G-Cal

Your Obsidian vault as LLM-native knowledge base + multi-account Google Workspace (Gmail, Calendar, Drive, Docs, Sheets, Slides) exposed as 25 MCP tools for Claude Code. Local-first, encrypted, no telemetry.
What is this?
Two things in one plugin:
LLM Knowledge Base — Your Obsidian vault structured as Sources → Wiki → Schema (Karpathy-aligned framing). Multi-terminal Claude Code + Codex with skills sidebar, agent tracking, session glyphs. Your second brain seen by LLMs as a first-class context.
G-Suite MCP Server — Multi-account Google Workspace (Gmail, Calendar, Drive, Docs, Sheets, Slides) exposed as 25 native tools for Claude Code (
gmail_search,drive_list_files,docs_create_doc,sheets_append_row,slides_read_presentation, …). OAuth 2.0 + PKCE desktop flow, tokens encrypted via ElectronsafeStorage(OS keychain), no telemetry, no cloud.
One install, one onboarding, two productivity frontiers.
Architecture
🦀 LLM KNOWLEDGE BASE
┌────────────────────────┐
│ Sources · Wiki · │
│ Schema (vault) │
└───────┬────────▲───────┘
│ │
feed every │ │ write digest /
new session│ │ synthesise back
▼ │
╔═════════════════════════╧════════════════════╗
║ 🦀 CLAUDE CODE (sessions · terminals) ║
║ ║
║ ⟲ inbox digest loop ║
║ ⟲ meeting prep loop ║
║ ⟲ synthesise-files loop ║
╚═══════════╦════════════════════╦═════════════╝
│ │
pulls │ │ pushes
▼ ▼
┌──────────────────────────────────────────┐
│ 🦀 mcp-google (stdio · Node) │
└───────────┬──────────────────────┬───────┘
▼ ▼
🦀 GOOGLE WORKSPACE (multi-account · 25 tools)
├─ Gmail ✓ 4 ← search → send/draft/labels
├─ GCal ✓ 6 ← list → create/update/delete/freebusy
├─ Drive ✓ 4 ← list/search → download/upload
├─ Docs ✓ 3 ← read → create/update
├─ Sheets ✓ 5 ← read → write/append/create
└─ Slides ✓ 3 ← read → create/add-slide
── configured by ──▶ 🦀 Modular Context Plugin
(infra · OAuth · sidecar)Architecture decisions (full ADRs in docs/adrs/):
ADR-001 — Hybrid OAuth: Quick Connect (shared client) + BYO (user-provided client)
ADR-002 — Electron
safeStoragetoken storage (OS keychain)ADR-003 + addendum — MCP server stdio lifecycle + plaintext credentials sidecar
ADR-005 — Multi-account storage model (per-account folder + index)
Features
LLM Knowledge Base
Multi-terminal split layouts — single, side-by-side, stacked, 2×2, 2×3, 2×4. Up to 8 sessions.
Claude Code + Codex — toggle AI provider in settings; auto-launch on new terminal.
Skills sidebar — 3 primary skills (full-width), rest in secondary grid. One-click launches.
Agent tracker — Working / To Review / Standby states per session.
Session glyphs — unique geometric shape per terminal. Skills inherit their icon.
Compact mode — 48px icon-only sidebar, maximum terminal real estate.
Fullscreen overlay — terminal fills Obsidian; sidebar docks right.
Escto exit.Real PTY — zsh in a pseudo-terminal, not a basic runner.
Wiki-link autocomplete —
[[inside terminal searches vault notes.Drag-and-drop — Finder / Obsidian → terminal as shell-escaped paths.
Session persistence — tab names, glyphs, layouts survive restarts.
Smart Session Restore — on reopen, picker modal classifies saved sessions (Needs attention / Idle / Archive) instead of silent auto-resume. You choose what materializes — no accidental skill re-runs.
Auto-onboarding — first install triggers a setup agent that scaffolds your vault.
G-Suite MCP Server (v2.1 — 25 tools)
Multi-account — unlimited Google accounts in parallel (Testing mode: up to 100 test users per account)
25 tools for Claude Code across 6 Workspace products (Gmail ×4, Calendar ×6, Drive ×4, Docs ×3, Sheets ×5, Slides ×3 — see table below)
Zero telemetry — no metrics, no crash reports, no external calls beyond OAuth + Google API
Local-first — tokens encrypted via OS keychain (macOS Keychain / Windows DPAPI / Linux libsecret via
libsecret)Auto-refresh — 50-minute timer per account, 5-minute expiry buffer
Error taxonomy —
TOKEN_EXPIRED,ACCOUNT_NOT_FOUND,SCOPE_OUTDATED,RATE_LIMITED,PERMISSION_DENIED,QUOTA_EXCEEDED,NETWORK_ERRORHot reload — server re-reads credentials per tool call, zero-downtime refresh
3 primary skills (post-onboarding)
Skill | Purpose | Uses |
Synthesise Files | Turn raw files (transcripts, notes, backlog) into vault modules — categorize, tag, update, reweave neighbors | Your vault, optional |
WhatsApp Digest | Analyze WhatsApp groups for action items, blindspots, staleness vs vault | macOS WhatsApp.app |
Gmail + G-Suite | Inbox sweep, stale follow-ups, calendar gap analysis, meeting prep, doc extraction, sheet logging, deck prep | MCP tools below |
All three write artifacts to _workspace/{YYYY-MM}/w{N}/. Secondary skills (Pulse, Brief, Log, Reweave, Graph, Graduate, Ideas, Vault-Audit) available in sidebar grid.
25 MCP tools
Gmail (4)
Tool | Purpose |
| Query with Gmail syntax ( |
| Create draft — not sent. User opens |
| Send immediately. Skip draft for trusted, scripted sends. |
| Add/remove labels — system presets ( |
Calendar (6)
Tool | Purpose |
| Enumerate all calendars user has access to. |
| Events in time range. |
| Create event ( |
| Patch existing (only provided fields changed). |
| Delete. |
| Query busy windows across multiple calendars — ideal for "find time to meet". |
Drive (4)
Tool | Purpose |
| List with Drive query syntax filter, pagination, ordering. |
| Full-text search across file content + names. Optional |
| Get file content. Google-native files auto-exported as text; binary returned as base64. |
| Create file with content + optional |
Docs (3)
Tool | Purpose |
| Plain-text extraction from doc body (walks paragraphs + tables). |
| New doc with title + optional |
|
|
Sheets (5)
Tool | Purpose |
| Spreadsheet metadata + list of sheet tabs. |
| Read A1-notation range. Supports |
| Overwrite values at range. |
| Append row(s) to data region end. |
| New spreadsheet with optional initial sheet titles. |
Slides (3)
Tool | Purpose |
| Metadata + plain-text summary per slide. |
| New presentation with title. |
| Insert slide with layout (BLANK / TITLE / TITLE_AND_BODY / SECTION_HEADER / TITLE_AND_TWO_COLUMNS / CAPTION_ONLY). |
Every tool accepts optional account param (email, case-insensitive). Omit → primary account. Unknown email → ACCOUNT_NOT_FOUND error.
OAuth scopes required (10 total): gmail.modify, calendar, drive.file, drive.metadata.readonly, documents, spreadsheets, presentations, plus OIDC openid email profile.
Google Cloud setup: Enable 6 APIs in your OAuth project — Gmail, Calendar, Drive, Docs, Sheets, Slides. Missing API returns PERMISSION_DENIED with direct enable link.
Install
Plugin
Requires Obsidian ≥ 0.15 and macOS (Linux + Windows may work; untested).
Via BRAT (Beta Reviewer plugin, recommended for now):
Install BRAT from Community Plugins
Cmd+P→ "BRAT: Add a beta plugin" →klemensgc/modular-context-obsidian-pluginEnable in Settings → Community plugins
Manual:
Download
main.js,manifest.json,styles.css,mcp-server.jsfrom latest releaseCopy to
<vault>/.obsidian/plugins/modular-context/Enable plugin in Settings → Community plugins → Modular Context
MCP server
Auto-installed on first Google Workspace: Connect. Plugin copies bundled binary to ~/.modular-context/mcp-google/dist/index.js (~100 MB one-time).
Repo structure
Monorepo with three packages:
modular-context-obsidian-plugin/
├── packages/
│ ├── plugin/ ← Obsidian plugin (main.ts, manifest, features + MCP client glue)
│ ├── mcp-google/ ← standalone MCP server (25 Google Workspace tools, Node)
│ ├── shared/ ← portable types + AgentTracker + PTY helper + UI primitives
│ └── app/ ← experimental standalone Electron app (WIP, not shipped)
├── README.md ← you are here
├── banner.png
└── package.json ← monorepo scripts (build:shared → build:mcp-google → build:plugin)packages/plugin/CHANGELOG.md — user-facing release notes (v1.0 → v2.0)
packages/plugin/RELEASE-v2.0.0.md — v2.0 release highlights
packages/mcp-google/README.md — MCP server docs (25 tools, accounts, env contract)
packages/mcp-google/CHANGELOG.md — MCP server version history
Skill library: separate repo klemensgc/modular-context-skills — plugin auto-syncs
Connect Google Workspace
Two paths:
Quick Connect (no GCP setup) — use the shared OAuth client bundled with the pre-built release. Comment your email on #3 — Quick Connect: request test-user access to be added as a test user (usually within 24h). Then skip to step 5 below.
BYO (your own GCP project) — full control, no test-user limit. Follow all 6 steps below.
6 steps (BYO path)
Create GCP OAuth Client
Google Cloud Console → new project (e.g.
modular-context-gcp)Enable APIs: Gmail API, Google Calendar API
OAuth consent screen → External, Testing mode → add scopes:
gmail.modify,calendar, plusopenid,email,profileAdd yourself as test user
Create credentials → OAuth 2.0 Client ID → Desktop app
Copy Client ID + Client Secret
Fill
.env.localin the plugin's build folder:GOOGLE_OAUTH_CLIENT_ID=... GOOGLE_OAUTH_CLIENT_SECRET=...Rebuild (
npm run buildinpackages/plugin) if self-building. Pre-built release uses the shared Quick Connect client.Reload plugin —
Cmd+P→ "Reload app without saving"Connect —
Cmd+P→ "Google Workspace: Connect (or add account)" → browser OAuth → authorize → doneAdd more accounts — "Google Workspace: Add another account" any time
The plugin writes .mcp.json to your vault root + per-account sidecars to ~/.modular-context/mcp-google/accounts/{filename}/. Restart Claude Code session to pick up the MCP server.
Plugin commands
Command | Purpose |
| Launch OAuth flow for new/additional account |
| Alias for above — clearer intent |
| Nuke tokens, re-auth all accounts with current scope set |
| Remove all credentials + |
| List connected accounts, expiry times, scope status |
| Open |
Plus 5+ non-Google commands for terminal / skill management. See Command Palette.
Security
Tokens encrypted via Electron
safeStorage(OS keychain). Never leave disk in plaintext.Credentials sidecar for MCP server: plaintext JSON at
0600perms in user-scope folder (comparable to~/.aws/credentials,~/.config/gcloud/). Plugin may re-encrypt in v2.1 (see ADR-003 addendum).No telemetry. No crash reports. No metrics. Zero phone-home.
Logs scrub tokens, emails, subjects via regex on every line.
Multi-account isolation. Each account has separate credentials; MCP server honors
accountparam strictly.
Full threat model in docs/adrs/ADR-003-addendum-shared-state.md.
What's new in v2.0
3 primary skills reorganization —
Synthesise Files(was "Ingest Data"),WhatsApp Digest,Gmail + CalendarNew
gsuite-analysisskill — orchestrates 10 MCP tools with 4 playbook patternsGraduated v1.5 / v1.6 / v1.7 beta milestones: OAuth + storage + MCP server + multi-account + full control
OAuth scope upgrade:
gmail.modify+calendarfull (replacesgmail.readonly,gmail.send,calendar.events)mcp-google-workspace@ 1.1.0 stable (from 1.1.0-beta.1)New tools:
gmail_send,gmail_modify_labels,calendar_list_calendars,calendar_update_event,calendar_delete_event,calendar_freebusySmart Session Restore Picker — replaces silent auto-resume on plugin reopen. Modal classifies saved sessions into Needs attention / Idle / Archive buckets; you pick what materializes. No accidental skill re-runs, no hidden respawns.
Full list in packages/plugin/CHANGELOG.md.
Troubleshooting
Issue | Fix |
Notice: "Reconnect required for {email}" |
|
| User revoked access or refresh token rotated — |
| Account not connected — |
MCP server not visible in Claude Code | Restart Claude Code session. |
Plugin reloaded but old behavior | Hard reload: |
Server logs empty | Normal — server only runs when Claude Code calls a tool. Not a daemon. |
Contributing
Plugin: modular-context-obsidian-plugin
Skills library: modular-context-skills (separate repo, auto-synced)
PRs welcome. Issues welcome. No support contract, but I read everything.
License
MIT © klemensgc / receptionOS
This server cannot be installed
Maintenance
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
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/klemensgc/modular-context-obsidian-plugin'
If you have feedback or need assistance with the MCP directory API, please join our Discord server