Google Workspace Hybrid MCP Server
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Google Workspace Hybrid MCP Server
High-performance, vendor-neutral Model Context Protocol (MCP) server for Google Workspace. It combines non-destructive IMAP email inspection and CalDAV multi-calendar querying with native operating system biometric gates (Touch ID on macOS and Windows Hello on Windows).
Architecture Overview
The system separates the low-level MCP communication engine from higher-level agent reasoning:
┌────────────────────────────────────────────────────────┐
│ Agentic AI Client (Antigravity / Claude / Cursor) │
└───────────────────────────┬────────────────────────────┘
│
Stdio MCP Protocol (JSON-RPC)
│
┌───────────────────────────▼────────────────────────────┐
│ Google Workspace Hybrid MCP Server │
│ (Neutral Protocol Engine, Zero-Password Keychain) │
├───────────────────────────┬────────────────────────────┤
│ Read Operations │ Write Operations │
│ • IMAP PEEK (BODY.PEEK) │ • SMTP SSL Email Dispatch │
│ • CalDAV Multi-Calendar │ • CalDAV Event Creation │
│ • Zero state mutation │ • CalDAV Event Deletion │
│ • No read status changes │ • Biometric Presence Gate │
└─────────────┬─────────────┴─────────────┬──────────────┘
│ │
│ Hardware Prompt │
│ (Touch ID / Windows Hello)
▼ ▼
┌───────────────────────────┐ ┌──────────────────────────┐
│ Google Workspace Endpoints│ │ Native Hardware Security │
│ • imap.gmail.com:993 │ │ • macOS LAContext │
│ • smtp.gmail.com:465 │ │ • Windows Hello │
│ • calendar.google.com/dav │ │ • LocalAuthentication │
└───────────────────────────┘ └──────────────────────────┘Core Security Principles
Zero-Password Leakage: Credentials load securely from the OS Keychain or environment variables. Passwords never appear in logs, error payloads, or tool schemas.
Non-Destructive Reads (
BODY.PEEK[]): IMAP queries always useBODY.PEEK[]. Reading or searching emails never marks them as seen or read on the server.Hardware Biometric Presence Gate: All state mutations (
send_email,create_calendar_event,delete_calendar_event) require explicit user confirmation (confirm=true) and trigger a native hardware biometric prompt before connecting.RFC 4791 CalDAV Multi-Calendar Architecture: Automatically discovers primary and secondary calendars (such as client or organization calendars). Queries use standard WebDAV
REPORTXML withVCALENDAR/VEVENTfiltering.
Related MCP server: mail-calendar-mcp
Separation of Concerns: Agentic Skills vs. MCP Core
This MCP server acts as a strictly neutral and generic execution engine. It contains no hardcoded user identities, email addresses, personal signatures, or proprietary customer business logic.
To achieve tailored workflows, agents use a local agentic skill (such as gmail-reader-searcher or calendar-reader-searcher) on top of this server:
Responsibility | MCP Server Core ( | Local Agentic Skill (Workspace Layer) |
Data Access | Connects to IMAP, SMTP, and CalDAV | Prompts the user and interprets queries |
Credential Storage | Resolves credentials from OS Keychain | Refers to configured account profile |
Safety Gate | Enforces Touch ID / Windows Hello presence | Obtains user intent and parameters |
Email Templates | Generic MIME constructor | Domain-specific Dutch/English wording |
Signatures & Brand | Neutral sender formatting | Specific company branding and disclaimers |
Client Code Lookups | None (parameter-agnostic) | Project ID mapping (UPID/CID routing) |
Available MCP Tools
The server registers 8 tools across diagnostics, email, and calendar management:
Tool Name | Type | Biometric Gate | Description |
| Read | No | Tests IMAP, SMTP, and CalDAV credentials and connection health. |
| Read | No | Searches inbox by query, subject, sender, or unread status ( |
| Read | No | Retrieves full email metadata, body, and attachments by ID. |
| Write | Yes | Sends email via SMTP SSL. Requires |
| Read | No | Discovers accessible primary, secondary, and team calendars. |
| Read | No | Queries calendar events with text search and calendar filtering. |
| Write | Yes | Creates a new calendar event. Requires |
| Write | Yes | Deletes a calendar event by UID. Requires |
Configuration & Environment Variables
The server resolves credentials in the following order:
Environment variables.
Configuration file path (
WORKSPACE_CONFIG_PATHorconfig.json).OS Keychain (macOS Keychain service
grobler_gmailor custom service name).
Environment Variables
Variable | Default | Purpose |
| (None) | Workspace email address. |
| (None) | App-specific password for IMAP/SMTP/CalDAV. |
| (None) | Display name for outgoing emails. |
|
| OS Keychain service name. |
|
| IMAP server hostname. |
|
| IMAP SSL port. |
|
| SMTP server hostname. |
|
| SMTP SSL port. |
|
| CalDAV discovery URL. |
|
| Set to |
|
| Set to |
|
| Server logging level. |
Installation & Setup
1. Requirements
Python 3.10+ (Python 3.13 recommended)
macOS (Touch ID) or Windows (Windows Hello)
Google account with an App Password configured
2. Virtual Environment Setup
# Clone the repository
git clone https://github.com/hemelbesem90s/Google-Workspace-MCP.git
cd Google-Workspace-MCP
# Create virtual environment and install dependencies
uv venv --python 3.13
source .venv/bin/activate
uv pip install -e ".[dev]"3. Store Credentials in OS Keychain
You can store your App Password in the macOS Keychain without touching plain-text files:
# Store email and app password
python3 -c "import keyring; keyring.set_password('grobler_gmail', 'email', 'user@example.com')"
python3 -c "import keyring; keyring.set_password('grobler_gmail', 'app_password', 'xxxx-xxxx-xxxx-xxxx')"4. Verify Connection
workspace-mcp --test-connectionMCP Registration
Add the server to your MCP configuration file (e.g. ~/.gemini/config/mcp_config.json or Claude Desktop config):
{
"mcpServers": {
"google-workspace": {
"command": "/absolute/path/to/Google-Workspace-MCP/.venv/bin/workspace-mcp",
"args": [],
"env": {
"PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin",
"WORKSPACE_MCP_ENABLE_WRITE_TOOLS": "true",
"WORKSPACE_MCP_REQUIRE_BIOMETRIC": "true",
"WORKSPACE_MCP_LOG_LEVEL": "INFO"
}
}
}
}Development & Verification
Run the full verification suite using make:
make check # Runs linter (ruff), type checker (mypy), and test suite (pytest)
make test # Runs pytest with coverage (must pass >= 85%)
make lint # Runs ruff code formatting checks
make typecheck # Runs mypy static type analysis
make schemas # Regenerates lazy MCP tool schemasLicense
This project is licensed under the MIT License.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read, send, file and search email in any Gmail, Microsoft 365 or IMAP mailbox, plus its calendar.
Read, send, organize, watch email on any IMAP mailbox: Gmail, iCloud, OVH, Zoho, Fastmail + CalDAV.
Hosted email MCP for your own Gmail, Outlook.com, Microsoft 365, iCloud or IMAP inbox: read, search, draft, reply in thread, forward and file mail. It moves or flags up to 500 messages in one call, and a send leaves exactly one copy in Sent. A calendar is a separate connection, and connecting one adds diary and scheduling tools.
Let your agent into iCloud Mail, calendar and contacts. It gets actions, never your password.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables email management via IMAP and SMTP with multi-account support, safe sending with confirmation, and read-only modes.MIT
- FlicenseAqualityDmaintenanceEnables full read/write control over Apple Mail.app and Calendar.app on macOS, exposing all configured accounts without per-provider setup.511-
- AlicenseAqualityBmaintenanceEnables searching and reading email across permitted accounts and mailboxes on macOS, plus optionally saving drafts for review, without sending or deleting messages.5MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI clients to read, search, compose, organize, and act on emails, plus manage calendars, contacts, reminders, folders, rules, signatures, aliases, and account preferences through a local bridge.48 npmMIT