Skip to main content

Headless Google Workspace automation for AI - Apps Script, Gmail, Drive, Sheets, Calendar, Docs, Tasks, Forms

Project description

Google Automation MCP

PyPI Tests

Google Workspace APIs for AI agents — no GCP project required.

Uses clasp for authentication. No GCP console, no OAuth consent screen, no client secrets. Just authenticate and go.

Quick Start

uvx google-automation-mcp        # Run server
uvx google-automation-mcp auth   # Authenticate (one-time browser sign-in)

That's it. No GCP project setup. Tokens auto-refresh after initial auth.

Tip: Use the short alias gmcp after installing.

Why No GCP Project?

Traditional Google API setup requires:

  1. Create GCP project
  2. Enable APIs
  3. Configure OAuth consent screen
  4. Add test users
  5. Create OAuth credentials
  6. Download client_secret.json

This MCP uses clasp (Google's official Apps Script CLI) which handles OAuth without a GCP project. Same Google authentication, zero configuration.

Security: AI Never Sees Credentials

Direct API This MCP
Credentials AI handles tokens directly AI never sees tokens
API access Any endpoint 50 curated tools only
Audit Build your own Every tool call logged

The MCP acts as a security boundary. Your AI agent calls tools; the MCP handles authentication internally.

MCP Client Configuration

Claude Desktop (One-Click Install):

Download google-automation-mcp.dxt and open it. Claude Desktop will install automatically.

Claude Code (~/.mcp.json):

{
  "mcpServers": {
    "google": {
      "type": "stdio",
      "command": "uvx",
      "args": ["google-automation-mcp"]
    }
  }
}

Claude Desktop (Manual) (claude_desktop_config.json):

{
  "mcpServers": {
    "google": {
      "command": "uvx",
      "args": ["google-automation-mcp"]
    }
  }
}

Gemini CLI:

gemini extensions install github:sam-ent/google-automation-mcp

Available Tools (50)

Gmail (5)

search_gmail_messages · get_gmail_message · send_gmail_message · list_gmail_labels · modify_gmail_labels

Drive (10)

search_drive_files · list_drive_items · get_drive_file_content · create_drive_file · create_drive_folder · delete_drive_file · trash_drive_file · share_drive_file · list_drive_permissions · remove_drive_permission

Sheets (6)

list_spreadsheets · get_sheet_values · update_sheet_values · append_sheet_values · create_spreadsheet · get_spreadsheet_metadata

Calendar (5)

list_calendars · get_events · create_event · update_event · delete_event

Docs (5)

get_doc_content · search_docs · create_doc · modify_doc_text · append_doc_text

Apps Script (17)

list_script_projects · get_script_project · get_script_content · create_script_project · update_script_content · delete_script_project · run_script_function · create_deployment · list_deployments · update_deployment · delete_deployment · list_versions · create_version · get_version · list_script_processes · get_script_metrics · generate_trigger_code

Auth (2)

start_google_auth · complete_google_auth

Multi-User Support

All tools accept user_google_email for per-user credential isolation:

search_gmail_messages(user_google_email="alice@example.com", query="is:unread")
search_gmail_messages(user_google_email="bob@example.com", query="is:unread")

Credentials stored separately: ~/.secrets/google-automation-mcp/credentials/{email}.json

Apps Script: Extending Google Workspace

Apps Script tools let you deploy code that runs inside Google apps — things REST APIs cannot do:

Capability Example
Custom spreadsheet functions =VALIDATE_EMAIL(A1) in cells
Real-time triggers onEdit, onOpen
Custom menus Add menu items to Sheets/Docs
Webhooks doGet/doPost handlers
# Create a bound script with custom function
create_script_project(title="Validator", parent_id="SPREADSHEET_ID")
update_script_content(script_id="...", files=[{
    "name": "Code",
    "type": "SERVER_JS",
    "source": "function VALIDATE_EMAIL(e) { return /^[^@]+@[^@]+\\.[^@]+$/.test(e); }"
}])

Limitations

run_script_function requires one-time setup per script: Open script at script.google.com → Project Settings → Change GCP project → Deploy as API Executable. Once configured, functions can be called repeatedly. All other tools work without this setup.

API quotas: Google enforces rate limits.

Production: OAuth 2.1

For multi-user deployments requiring your own OAuth credentials:

export GOOGLE_OAUTH_CLIENT_ID='...'
export GOOGLE_OAUTH_CLIENT_SECRET='...'
gmcp auth --oauth21

CLI Reference

Short alias: gmcp (or full name: google-automation-mcp)

gmcp                 # Run server
gmcp setup           # Interactive setup wizard
gmcp auth            # Authenticate with clasp
gmcp auth --oauth21  # OAuth 2.1 for production
gmcp status          # Check auth status
gmcp version         # Show version

Development

git clone https://github.com/sam-ent/google-automation-mcp.git
cd google-automation-mcp
uv sync
uv run pytest tests/ -v  # 45 tests

Acknowledgments

Built on google_workspace_mcp by Taylor Wilsdon (MIT License).

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

google_automation_mcp-0.6.0.tar.gz (56.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

google_automation_mcp-0.6.0-py3-none-any.whl (62.8 kB view details)

Uploaded Python 3

File details

Details for the file google_automation_mcp-0.6.0.tar.gz.

File metadata

  • Download URL: google_automation_mcp-0.6.0.tar.gz
  • Upload date:
  • Size: 56.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for google_automation_mcp-0.6.0.tar.gz
Algorithm Hash digest
SHA256 9c50d6190d848e29ee85906d40b3af5b6b6e0e8a93b6d46f08e48cdeb585dcca
MD5 fa01a91fbef9471a2d3aeb2104b253ad
BLAKE2b-256 4a125731a9e8f351ff10165fb65e08967c7dbf93540f55585974ec272870343d

See more details on using hashes here.

File details

Details for the file google_automation_mcp-0.6.0-py3-none-any.whl.

File metadata

File hashes

Hashes for google_automation_mcp-0.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4ea8d1b4def672ff68eed93cdf762e33f1129fdd91dc1f1bec1103d0040a8637
MD5 444d75ad1643cf5695ef6afcbb560b5f
BLAKE2b-256 c71bbf94804810be41b2785ddb7014ffd2b8ab30b644ec6a61d7b0672706c166

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page