google-workspace-mcp
Provides tools for sending and reading emails, managing labels and filters, handling drafts, attachments, and vacation responders.
Provides tools for creating, reading, and editing Google Docs, including text insertion, formatting, tables, images, and bullet lists.
Provides tools for creating and managing meeting spaces, retrieving artifacts like recordings and transcripts, and listing participants.
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., "@google-workspace-mcpSearch my Gmail for emails from John last week"
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.
Google Workspace MCP Server
Your own MCP server for full Google Workspace access from Claude Desktop or Claude Code.
Gmail (send + read) · Drive · Calendar · Docs · Sheets · Slides · Forms · Tasks · Contacts
Built with FastMCP. Uses your own Google Cloud OAuth credentials. You own everything.
Setup
1. Google Cloud Console (you do this in your browser)
Go to https://console.cloud.google.com → Create a new project
Enable these APIs (APIs & Services → Library):
Gmail, Calendar, Drive, Docs, Sheets, Slides, Forms, Tasks, People, Google Meet
Set up OAuth consent screen (APIs & Services → OAuth consent screen):
Choose External, add your email as test user
Add all workspace scopes
Create OAuth credentials (APIs & Services → Credentials → Create → OAuth Client ID → Desktop Application)
Copy the Client ID and Client Secret
2. Install & Run
# Set your credentials
export GOOGLE_OAUTH_CLIENT_ID="your-client-id-here"
export GOOGLE_OAUTH_CLIENT_SECRET="your-client-secret-here"
# Run with uv (no install needed)
cd google-workspace-mcp
uv run server.py3. Connect to Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"google_workspace": {
"command": "uv",
"args": ["run", "--directory", "/path/to/google-workspace-mcp", "server.py"],
"env": {
"GOOGLE_OAUTH_CLIENT_ID": "your-client-id",
"GOOGLE_OAUTH_CLIENT_SECRET": "your-client-secret"
}
}
}
}4. Connect to Claude Code
claude mcp add google_workspace -- uv run --directory /path/to/google-workspace-mcp server.py5. First authentication
First time you use any tool, a browser window opens for Google OAuth. Sign in, approve the permissions, done. Token is saved to ~/.gw-mcp/token.json and auto-refreshes.
Related MCP server: google-workspace-mcp-server
Tools (108 total)
Gmail (18)
gmail_search— search with Gmail query syntaxgmail_read_message— read full message contentgmail_read_thread— read all messages in a threadgmail_send— send emails (plain text or HTML, CC/BCC, threading)gmail_draft— create draftsgmail_send_draft— send an existing draftgmail_list_labels— list all labelsgmail_create_label— create new labelsgmail_delete_label— delete labelsgmail_modify_labels— archive, mark read/unread, star, etcgmail_get_attachment— download attachmentsgmail_trash— move to trashgmail_untrash— restore from trashgmail_list_filters— list email filtersgmail_create_filter— create filter rulesgmail_delete_filter— delete filtersgmail_get_vacation— get vacation responder settingsgmail_set_vacation— set vacation responder
Calendar (8)
calendar_list_calendars— list all calendarscalendar_get_events— get events with time range and searchcalendar_create_event— create events with attendees + Google Meet linkscalendar_update_event— update existing eventscalendar_delete_event— delete eventscalendar_freebusy— query free/busy availabilitycalendar_list_recurring_instances— list instances of recurring eventscalendar_quick_add— create event from text string
Meet (7)
meet_create_space— create a meeting spacemeet_get_space— get meeting space by namemeet_list_participants— list participantsmeet_get_artifacts— get recordings, transcripts, and transcript entriesmeet_end_conference— end an active conferencemeet_list_conference_records— list past meetingsmeet_list_participant_sessions— list participant sessions
Drive (15)
drive_search— search filesdrive_read_file— read file content (Docs, Sheets, text files)drive_create_file— create files (plain text or Google Docs)drive_list_folder— list folder contentsdrive_share_file— share files with usersdrive_create_folder— create foldersdrive_copy_file— copy filesdrive_export— export to format (PDF, CSV, etc)drive_add_comment— add comments to filesdrive_list_comments— list file commentsdrive_list_revisions— list file version historydrive_list_permissions— list file permissionsdrive_delete_permission— revoke file accessdrive_trash— move to trashdrive_untrash— restore from trash
Docs (9)
docs_create— create new docsdocs_read— read doc contentdocs_insert_text— insert text at positiondocs_find_replace— find and replacedocs_append_text— append to enddocs_insert_table— insert tablesdocs_insert_image— insert imagesdocs_format_text— format text (bold, italic, color, font)docs_insert_bullets— insert bullet listsdocs_insert_page_break— insert page breaks
Sheets (12)
sheets_read— read cell rangessheets_write— write valuessheets_append— append rowssheets_create— create spreadsheetssheets_clear— clear rangessheets_get_info— get spreadsheet metadatasheets_batch_update— batch update cellssheets_add_sheet— add new sheet/tabsheets_delete_sheet— delete sheet/tabsheets_merge_cells— merge cellssheets_add_chart— add chartssheets_add_conditional_format— add conditional formattingsheets_add_named_range— add named ranges
Tasks (8)
tasks_list_tasklists— list task liststasks_list— list taskstasks_create— create tasks (with subtask support)tasks_update— update taskstasks_delete— delete taskstasks_create_tasklist— create task liststasks_move— move/reorder taskstasks_clear_completed— clear completed tasks
Contacts (11)
contacts_search— search by name/email/phonecontacts_list— list all contactscontacts_create— create contactscontacts_update— update contactscontacts_delete— delete contactscontacts_list_groups— list contact groupscontacts_create_group— create contact groupcontacts_modify_group_members— add/remove group memberscontacts_batch_create— batch create contactscontacts_batch_delete— batch delete contactscontacts_get_photo— get contact photo
Slides (10)
slides_create— create presentationsslides_read— read slide contentslides_add_slide— add slides with layoutsslides_add_text— add text to slidesslides_insert_shape— insert shapesslides_insert_image— insert imagesslides_insert_table— insert tablesslides_insert_video— insert videosslides_format_text— format textslides_get_thumbnail— get slide thumbnail
Forms (8)
forms_create— create formsforms_read— read form structureforms_list_responses— list form responsesforms_add_question— add questionsforms_update_question— update questionsforms_delete_question— delete questionsforms_move_question— reorder questionsforms_update_settings— update form settings
Build It Yourself Prompt
Want to rebuild this from scratch using Claude? Paste this into Claude Code Desktop:
Build me a Python MCP server using FastMCP at ~/Desktop/google-workspace-mcp/. It should give me full access to Google Workspace with these tools:
Gmail (18): search, read message, read thread, send (with CC/BCC, HTML, threading for replies), create draft, send draft, list labels, create label, delete label, modify labels (archive, star, mark read/unread), get attachment, trash, untrash, list filters, create filter, delete filter, get vacation responder, set vacation responder
Calendar (8): list calendars, get events (with time range + search), create event (with attendees, timezone, Google Meet link generation), update event, delete event, query free/busy, list recurring event instances, quick add from text string
Meet (7): create meeting space, get meeting space, list participants, get artifacts (recordings + transcripts), end active conference, list conference records, list participant sessions
Drive (15): search files, read file content (export Google Docs/Sheets/Slides to text), create file (plain text or Google Doc), list folder, share file, create folder, copy file, export to format, add comment, list comments, list revisions, list permissions, delete permission, trash, untrash
Docs (9): create, read, insert text at position, find and replace, append text, insert table, insert image, format text (bold/italic/color/font), insert bullet list, insert page break
Sheets (12): read ranges, write values, append rows, create spreadsheet, clear ranges, get spreadsheet metadata, batch update cells, add sheet/tab, delete sheet/tab, merge cells, add chart, add conditional formatting, add named range
Tasks (8): list task lists, list tasks, create task (with subtask support), update task, delete task, create task list, move/reorder task, clear completed tasks
Contacts (11): search by name/email/phone, list all, create, update, delete, list contact groups, create group, modify group members, batch create, batch delete, get contact photo
Slides (10): create presentation, read slide content, add slide with layout, add text to slide, insert shape, insert image, insert table, insert video, format text, get slide thumbnail
Forms (8): create form, read form structure, list responses, add question, update question, delete question, move/reorder question, update form settings
Requirements:
Separate file per service (tools_gmail.py, tools_calendar.py, tools_meet.py, tools_drive.py, tools_docs.py, tools_sheets.py, tools_tasks.py, tools_contacts.py, tools_slides.py, tools_forms.py) plus auth.py and server.py
auth.py handles Google OAuth2: reads GOOGLE_OAUTH_CLIENT_ID and GOOGLE_OAUTH_CLIENT_SECRET from env vars, opens browser on first use, saves token to ~/.gw-mcp/token.json, auto-refreshes
Use google-api-python-client and google-auth-oauthlib
pyproject.toml with uv, entry point gw-mcp = "server:main"
.gitignore for .venv, pycache, .env, token.json, credentials.json
README with setup instructions for Google Cloud Console, running with uv, and adding to Claude Desktop + Claude Code configs
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
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/shanebrady77/google-workspace-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server