Gmail API coverage for drafting, sending, searching and organizing email, including labels and threads.
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add gmail --env CLIENT_ID='<CLIENT_ID>' --env CLIENT_SECRET='<CLIENT_SECRET>' --env REFRESH_TOKEN='<REFRESH_TOKEN>' -- npx @shinzolabs/gmail-mcp~/.codex/config.toml
[mcp_servers.gmail]
command = "npx"
args = ["@shinzolabs/gmail-mcp"]
env = { CLIENT_ID = "<CLIENT_ID>", CLIENT_SECRET = "<CLIENT_SECRET>", REFRESH_TOKEN = "<REFRESH_TOKEN>" }
# codex mcp add gmail --env CLIENT_ID='<CLIENT_ID>' --env CLIENT_SECRET='<CLIENT_SECRET>' --env REFRESH_TOKEN='<REFRESH_TOKEN>' -- npx @shinzolabs/gmail-mcp~/.cursor/mcp.json
{
"mcpServers": {
"gmail": {
"command": "npx",
"args": [
"@shinzolabs/gmail-mcp"
],
"env": {
"CLIENT_ID": "<CLIENT_ID>",
"CLIENT_SECRET": "<CLIENT_SECRET>",
"REFRESH_TOKEN": "<REFRESH_TOKEN>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"gmail": {
"type": "stdio",
"command": "npx",
"args": [
"@shinzolabs/gmail-mcp"
],
"env": {
"CLIENT_ID": "<CLIENT_ID>",
"CLIENT_SECRET": "<CLIENT_SECRET>",
"REFRESH_TOKEN": "<REFRESH_TOKEN>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"gmail": {
"command": "npx",
"args": [
"@shinzolabs/gmail-mcp"
],
"env": {
"CLIENT_ID": "<CLIENT_ID>",
"CLIENT_SECRET": "<CLIENT_SECRET>",
"REFRESH_TOKEN": "<REFRESH_TOKEN>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"gmail": {
"command": "npx",
"args": [
"@shinzolabs/gmail-mcp"
],
"env": {
"CLIENT_ID": "<CLIENT_ID>",
"CLIENT_SECRET": "<CLIENT_SECRET>",
"REFRESH_TOKEN": "<REFRESH_TOKEN>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"gmail": {
"command": "npx",
"args": [
"@shinzolabs/gmail-mcp"
],
"env": {
"CLIENT_ID": "<CLIENT_ID>",
"CLIENT_SECRET": "<CLIENT_SECRET>",
"REFRESH_TOKEN": "<REFRESH_TOKEN>"
}
}
}
}Environment variables
CLIENT_IDCLIENT_SECRETREFRESH_TOKEN
Replace the placeholders with your own credentials and keep them out of version control.