Allows querying emails with advanced search, reading full email content and attachments, creating and managing drafts, replying to emails, archiving emails, handling attachments, and bulk operations support
Allows listing available calendars, viewing calendar events, creating new events, deleting events, supporting multiple calendars, and custom timezone support
MCP Google Workspace Server
A Model Context Protocol server for Google Workspace services. This server provides tools to interact with Gmail and Google Calendar through the MCP protocol.
Features
Multiple Google Account Support
Use and switch between multiple Google accounts
Each account can have custom metadata and descriptions
Gmail Integration
Query emails with advanced search
Read full email content and attachments
Create and manage drafts
Reply to emails
Archive emails
Handle attachments
Bulk operations support
Calendar Integration
List available calendars
View calendar events
Create new events
Delete events
Support for multiple calendars
Custom timezone support
Example Prompts
Try these example prompts with your AI assistant:
Gmail
"Retrieve my latest unread messages"
"Search my emails from the Scrum Master"
"Retrieve all emails from accounting"
"Take the email about ABC and summarize it"
"Write a nice response to Alice's last email and upload a draft"
"Reply to Bob's email with a Thank you note. Store it as draft"
Calendar
"What do I have on my agenda tomorrow?"
"Check my private account's Family agenda for next week"
"I need to plan an event with Tim for 2hrs next week. Suggest some time slots"
Prerequisites
Node.js >= 18
A Google Cloud project with Gmail and Calendar APIs enabled
OAuth 2.0 credentials for Google APIs
Installation
Clone the repository:
git clone https://github.com/j3k0/mcp-google-workspace.git cd mcp-google-workspaceInstall dependencies:
npm installBuild the TypeScript code:
npm run build
Configuration
OAuth 2.0 Setup
Google Workspace (G Suite) APIs require OAuth2 authorization. Follow these steps to set up authentication:
Create OAuth2 Credentials:
Go to the Google Cloud Console
Create a new project or select an existing one
Enable the Gmail API and Google Calendar API for your project
Go to "Credentials" → "Create Credentials" → "OAuth client ID"
Select "Desktop app" or "Web application" as the application type
Configure the OAuth consent screen with required information
Add authorized redirect URIs (include
http://localhost:4100/code
for local development)
Required OAuth2 Scopes:
[ "openid", "https://mail.google.com/", "https://www.googleapis.com/auth/calendar", "https://www.googleapis.com/auth/userinfo.email" ]Create a
.gauth.json
file in the project root with your Google OAuth 2.0 credentials:{ "installed": { "client_id": "your_client_id", "project_id": "your_project_id", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_secret": "your_client_secret", "redirect_uris": ["http://localhost:4100/code"] } }Create a
.accounts.json
file to specify which Google accounts can use the server:{ "accounts": [ { "email": "your.email@gmail.com", "account_type": "personal", "extra_info": "Primary account with Family Calendar" } ] }You can specify multiple accounts. Make sure they have access in your Google Auth app. The
extra_info
field is especially useful as you can add information here that you want to tell the AI about the account (e.g., whether it has a specific calendar).
Claude Desktop Configuration
Configure Claude Desktop to use the mcp-google-workspace server:
On MacOS: Edit ~/Library/Application\ Support/Claude/claude_desktop_config.json
On Windows: Edit %APPDATA%/Claude/claude_desktop_config.json
Usage
Start the server:
npm startOptional arguments:
--gauth-file
: Path to the OAuth2 credentials file (default: ./.gauth.json)--accounts-file
: Path to the accounts configuration file (default: ./.accounts.json)--credentials-dir
: Directory to store OAuth credentials (default: current directory)
The server will start and listen for MCP commands via stdin/stdout.
On first run for each account, it will:
Open a browser window for OAuth2 authentication
Listen on port 4100 for the OAuth2 callback
Store the credentials for future use in a file named
.oauth2.{email}.json
Available Tools
Account Management
gmail_list_accounts
/calendar_list_accounts
List all configured Google accounts
View account metadata and descriptions
No user_id required
Gmail Tools
gmail_query_emails
Search emails with Gmail's query syntax (e.g., 'is:unread', 'from:example@gmail.com', 'newer_than:2d', 'has:attachment')
Returns emails in reverse chronological order
Includes metadata and content summary
gmail_get_email
Retrieve complete email content by ID
Includes full message body and attachment info
gmail_bulk_get_emails
Retrieve multiple emails by ID in a single request
Efficient for batch processing
gmail_create_draft
Create new email drafts
Support for CC recipients
gmail_delete_draft
Delete draft emails by ID
gmail_reply
Reply to existing emails
Option to send immediately or save as draft
Support for "Reply All" via CC
gmail_get_attachment
Download email attachments
Save to disk or return as embedded resource
gmail_bulk_save_attachments
Save multiple attachments in a single operation
gmail_archive
/gmail_bulk_archive
Move emails out of inbox
Support for individual or bulk operations
Calendar Tools
calendar_list
List all accessible calendars
Includes calendar metadata, access roles, and timezone information
calendar_get_events
Retrieve events in a date range
Support for multiple calendars
Filter options (deleted events, max results)
Timezone customization
calendar_create_event
Create new calendar events
Support for attendees and notifications
Location and description fields
Timezone handling
calendar_delete_event
Delete events by ID
Option for cancellation notifications
Development
Source code is in TypeScript under the
src/
directoryBuild output goes to
dist/
directoryUses ES modules for better modularity
Follows Google API best practices
Project Structure
Development Commands
npm run build
: Build TypeScript codenpm start
: Start the servernpm run dev
: Start in development mode with auto-reload
Contributing
Fork the repository
Create a feature branch
Commit your changes
Push to the branch
Create a Pull Request
License
MIT License - see LICENSE file for details
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Enables interaction with Gmail and Google Calendar using the MCP protocol, supporting multiple Google accounts, email management, and calendar operations through natural language.
- Features
- Example Prompts
- Prerequisites
- Installation
- Configuration
- Usage
- Available Tools
- Development
- Contributing
- License
Related Resources
Related MCP Servers
- AsecurityAlicenseAqualityProvides tools for interacting with Gmail and Calendar APIs. This server enables you to manage your emails and calendar events programmatically through the MCP interface.Last updated -26MIT License
- -securityAlicense-qualityIntegrates with Gmail to enable sending, reading, drafting, and managing emails via the Model Context Protocol (MCP), allowing users to interact with email tasks through automated client prompts.Last updated -2GPL 3.0
- -securityAlicense-qualityMCP server that integrates with Gmail to enable sending, reading, and managing emails through tools like send-email, trash-email, get-unread-emails, and read-email.Last updated -60GPL 3.0