Give Claude access to your Gmail, Drive, and Calendar. Set up in one command. Runs locally on your machine — your data never leaves your computer.
No Google Cloud project needed. Install, connect your account, done.
claude mcp add proGoogleMCP -- npx -y @procedure-tech/mcp-google
{
"mcpServers": {
"proGoogleMCP": {
"command": "npx",
"args": ["-y", "@procedure-tech/mcp-google"]
}
}
}
Then use the google_add_account tool to connect your Google account.
Full access to Gmail, Drive, and Calendar with safety gates built in.
Search, read, draft, send, and bulk-download attachments. Emails are always drafted first — nothing sends without your explicit confirmation.
Search files by name or content, preview documents without context overload, download to disk, upload from disk, and manage sharing. Read reviewer comments on a Doc — who said what, and the exact text they highlighted — or export to .docx or .pdf to keep comments and formatting intact.
Check your schedule, find free slots, create events, and RSVP — across all your calendars and accounts.
Connect work, personal, and shared Google accounts. Name them with aliases like "work" or "personal" and add descriptions — no UUIDs to remember.
Runs 100% on your machine. Tokens stored locally. Every API call goes directly from your computer to Google — no middleman, no analytics, no telemetry.
Grant read, compose, or manage access to mail, Drive, and calendar independently — pick a preset like read-only, or choose exactly the capabilities you need. You control what the AI can do.
One command. No Google Cloud project, no API keys, no config files. Just npx and go.
OAuth opens in your browser. Authorize your Google account. Tokens stay on your machine.
Ask Claude to read emails, search Drive, check your calendar. It just works.
Latest updates and improvements.
calendar_get_event, calendar_list_events and calendar_search_events return hangoutLink and the full conference details — the Meet URL, dial-in numbers and PIN. A meeting created in Google Calendar with a Meet link previously arrived through this server with no way to join it; Google had been sending the link all alongaddMeet: true to calendar_create_event or calendar_update_event and a new conference is generated and attached. No re-authorisation needed — the existing calendar permission already covers itmeetingCode, taking either a code like abc-defg-hij or a full Meet URL — the same thing as editing the meeting ID in the Calendar UI. It asks for confirmation first, because a reused conference keeps its access tied to the original event's guest list: people from that meeting may reach this one's recordings and chat. calendar_update_event also takes removeConferencing to drop a call from an eventcalendar_list_calendars now says which calendars you can actually write to, with a canEdit flag alongside the raw access role — so a shared calendar you can only read is no longer indistinguishable from one you can schedule on. It also shows your own name for a shared calendar, and pages properly: accounts subscribed to more than 100 calendars were silently losing the restcalendar_list_calendars returns an object with a calendars array rather than a bare array, so that paging is possible. Anything reading the result directly as a list needs to read .calendars insteadgmail_get_message, gmail_get_thread and gmail_get_messages_batch now return cc, bcc, replyTo, messageId and inReplyTo alongside the sender, recipient, subject and date they already returned. Those headers were being fetched from Gmail and then thrown away, at every format — so a message copied to five people came back looking like a private note to onegmail_get_draft returned the Cc on a draft while every other tool dropped it from the same messagemetadataHeaders parameter on those three tools. With format: "metadata" it limits Gmail to the headers you name and hands them back verbatim, so headers outside the standard set — List-Unsubscribe, References, Authentication-Results — are reachable for the first timemultipart/alternative — your text untouched, alongside a generated HTML version — so line breaks survive and paragraphs still reflow to the windowbodyFormat tool description never mentioned that line breaks were being discarded, so the workaround was to tell every agent to pass bodyFormat: "html". That is no longer needed: "text" is correct for almost every case, and "html" is only for callers writing their own markupbodyFormat: "html" with <pre> if you need it127.0.0.1 instead of a fixed localhost:8089. Nothing to configure, and "port 8089 already in use" is gone — but a firewall or proxy rule pinned to port 8089 or to the hostname localhost no longer appliesAccountStore.startAddAccount and startReauthAccount now return promises and must be awaited. No MCP tool signature or response changedgcloud and the GitHub CLI. It is intentional and was not rotated. Your credentials were never exposed and no action is required. See SECURITY.mddrive:appfiles as well as drive:read; mail:modify now implies mail:compose; gmail_list_labels no longer demands write accessread-only, inbox-assistant, scheduler — for one-step account setup instead of picking every capability individuallyconfirm: true, mirroring the existing confirmation for narrowingdrive:appfiles-only account carry a coverage note when the view is partial instead of failing silently incompletedrive_search_files, drive_list_files, file content/download, upload, and permission tools now find and act on Shared Drive items (previously returned empty results or "File not found")drive_list_shared_drives tool to discover the Shared Drives an account is a member ofdriveId parameter on drive_search_files to scope a search to a single Shared Drivegoogle_reauth_account tool — re-run OAuth on an existing account when a refresh token is invalidated, or to upgrade scope tiers, without losing the account ID, alias, description, or labelsâ€"bodyFormat: "text" | "html" parameter on gmail_create_draft, gmail_update_draft, gmail_create_draft_with_attachment, and gmail_reply_in_thread for HTML-formatted emaildrive_get_file_content now returns truncated content (default 10k chars) to protect AI context windows from overloaddrive_get_full_file_content tool for when you genuinely need the complete filedrive_download_file tool — download files from Drive directly to local diskcontent:keyword in drive_search_files to search inside file contentsgmail_get_attachment now saves files directly to disk instead of returning binary data in the responsegmail_bulk_save_attachments no longer fails due to the same stale ID issuenpx startup times