mcp-google
mcp-google
MCP server for Google APIs — Gmail and Calendar tools for LLM agents.
Install
# Run directly with uvx (no install needed)
uvx mcp-google
# Or install with pip
pip install mcp-googleEnvironment Variables
Variable | Description |
| OAuth2 client ID from Google Cloud Console |
| OAuth2 client secret |
| JSON array of account configs (see below) |
GOOGLE_ACCOUNTS_JSON format
[
{"email": "personal@gmail.com", "refresh_token": "1//..."},
{"email": "work@company.com", "refresh_token": "1//..."}
]The first account in the array is used as default when no account parameter is specified.
Tools
Phase 1 — Read-only
Tool | Parameters | Description |
|
| List unread emails (subject, sender, date, snippet) |
|
| Get full email content by ID |
|
| Today's events |
|
| This week's agenda |
Phase 2 — Write
Tool | Parameters | Description |
|
| Send an email |
|
| Create a calendar event |
OAuth Setup
Go to Google Cloud Console
Create a project (or select existing)
Enable Gmail API and Google Calendar API
Go to Credentials > Create Credentials > OAuth 2.0 Client ID
Application type: Desktop app
Note the Client ID and Client Secret
Configure OAuth consent screen with required scopes:
https://www.googleapis.com/auth/gmail.readonlyhttps://www.googleapis.com/auth/gmail.sendhttps://www.googleapis.com/auth/calendar.readonlyhttps://www.googleapis.com/auth/calendar.events
Obtain refresh tokens for each account using the OAuth2 flow
Set environment variables (copy
.env.exampleto.envand fill in values)
Obtaining Refresh Tokens
Use the Google OAuth Playground or run a local OAuth flow:
# Quick method via oauth2l
pip install google-auth-oauthlib
python -c "
from google_auth_oauthlib.flow import InstalledAppFlow
flow = InstalledAppFlow.from_client_config(
{'installed': {'client_id': 'YOUR_CLIENT_ID', 'client_secret': 'YOUR_SECRET', 'auth_uri': 'https://accounts.google.com/o/oauth2/auth', 'token_uri': 'https://oauth2.googleapis.com/token'}},
scopes=['https://www.googleapis.com/auth/gmail.readonly', 'https://www.googleapis.com/auth/gmail.send', 'https://www.googleapis.com/auth/calendar.readonly', 'https://www.googleapis.com/auth/calendar.events']
)
creds = flow.run_local_server(port=0)
print(f'Refresh token: {creds.refresh_token}')
"Running
# As MCP server (stdio transport)
mcp-google
# Or directly
python -m mcp_google.serverClaude Desktop config
{
"mcpServers": {
"google": {
"command": "mcp-google",
"env": {
"GOOGLE_CLIENT_ID": "...",
"GOOGLE_CLIENT_SECRET": "...",
"GOOGLE_ACCOUNTS_JSON": "[{\"email\": \"me@gmail.com\", \"refresh_token\": \"...\"}]"
}
}
}
}License
MIT