loading…
Search for a command to run...
loading…
Enables Claude to manage Gmail, Google Calendar, and Google Contacts through a safety-first interface with soft-delete protections and draft-only email capabili
Enables Claude to manage Gmail, Google Calendar, and Google Contacts through a safety-first interface with soft-delete protections and draft-only email capabilities. Supports multiple Google accounts with comprehensive mutation logging and mandatory manual confirmation for destructive actions.
A custom MCP (Model Context Protocol) server that gives Claude Code access to Gmail, Google Calendar, and Google Contacts — with safety-first defaults.
This server is built for an operator who wants AI to help manage their Google workspace without risk of accidental damage:
git clone https://github.com/marianasmall/mariana-google-mcp.git
cd mariana-google-mcp
npm install
npm run build
Add this to your ~/.claude.json under mcpServers:
{
"mcpServers": {
"mariana-google-mcp": {
"type": "stdio",
"command": "node",
"args": ["/path/to/mariana-google-mcp/dist/index.js"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_CLIENT_SECRET": "your-client-secret"
}
}
}
}
Replace /path/to/ with the actual path to your clone, and fill in your OAuth credentials.
After restarting Claude Code, run the google_auth tool. It will open a browser window for OAuth consent. Once authorized, your token is stored locally and refreshed automatically.
| Tool | Description |
|---|---|
google_auth |
Authenticate a Google account via OAuth browser flow |
google_status |
Check connection health for all configured accounts |
| Tool | Description |
|---|---|
gmail_search |
Search messages using Gmail query syntax |
gmail_read |
Read a specific message by ID (full content) |
gmail_list_labels |
List all Gmail labels/folders |
gmail_draft |
Create a draft email (does NOT send) |
gmail_create_label |
Create a new label (supports nesting with /) |
gmail_apply_label |
Apply a label to one or more messages |
gmail_remove_label |
Remove a label from one or more messages |
gmail_create_filter |
Create a filter rule (match criteria → actions) |
gmail_move_to_delete |
Soft-delete: move messages to a "To Be Deleted" label |
| Tool | Description |
|---|---|
calendar_list |
List upcoming calendar events |
calendar_search |
Search events by keyword |
calendar_get |
Get full details of a specific event |
calendar_create |
Create an event (does NOT send invites by default) |
calendar_update |
Modify an existing event (does NOT notify attendees by default) |
calendar_flag_delete |
Soft-delete: prepend "DELETE - " to event title |
calendar_availability |
Check free/busy status for a date range |
| Tool | Description |
|---|---|
contacts_search |
Search contacts by name, email, or phone |
contacts_list |
List contacts, optionally filtered by group |
You can authenticate multiple Google accounts with friendly names:
google_auth account_name: "primary"
google_auth account_name: "newsletters"
google_auth account_name: "work"
Most tools accept an optional account parameter. If omitted, they use the default account. Use google_status to see all configured accounts and their health.
All configuration is stored in ~/.config/mariana-google-mcp/:
| File | Purpose |
|---|---|
config.json |
Account registry (names, email hashes, defaults) |
tokens/<hash>.json |
OAuth tokens per account (auto-refreshed) |
actions.jsonl |
Append-only log of all mutations |
Tokens are stored by email hash, not plaintext email, for a layer of indirection.
Every write operation (drafts, calendar creates/updates, soft-deletes) is logged to ~/.config/mariana-google-mcp/actions.jsonl in this format:
{"timestamp":"2026-04-03T10:30:00.000Z","tool":"gmail_draft","account":"primary","summary":"Draft created: subject='Meeting follow-up'"}
The log is append-only and never modified by the server. Review it anytime to audit what Claude has done.
To use this with your own Google account:
dist/index.jsgoogle_auth to authenticateNo code changes needed — all account-specific data lives in config files and environment variables.
@modelcontextprotocol/sdk — MCP protocol implementationgoogleapis — Google API clientgoogle-auth-library — OAuth2 token managementzod — Input validationMIT
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"mariana-google-mcp": {
"command": "npx",
"args": []
}
}
}