Google Cloud Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Google Cloud Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server that connects AI agents to Google Workspace: Gmail, Calendar, Drive, Docs, Sheets, and Slides. Built with FastMCP.
# Install and run — that's it
uvx gg-mcp📖 [Detailed guide →](GUIDE.md#step-1-get-your-google-oauth-credentials)
export GOOGLE_CLIENT_ID="your-client-id.apps.googleusercontent.com"
export GOOGLE_CLIENT_SECRET="your-client-secret"
uvx gg-mcpYou'll see:
============================================================
🔐 GOOGLE ACCOUNT AUTHENTICATION
📱 Open your browser: http://localhost:3838
============================================================Open http://localhost:3838 → "Authorize with Google" → Grant permissions ✅
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"gg-mcp": {
"command": "uvx",
"args": ["gg-mcp"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_CLIENT_SECRET": "your-client-secret"
}
}
}
}Restart Claude Desktop and the tools are ready to use! 🎉
📖 [25+ client configs →](MCP_CLIENTS.md)
get_account_info - Get the email of the authenticated Google accountsend_email - Send an email (to, subject, body)create_gmail_label - Create a new Gmail labellist_gmail_labels - List all user-created labelslist_calendar_events - List upcoming events (max_results, days_back)create_calendar_event - Create an event (summary, start_time, end_time)list_drive_folders - List all folders in Google Drive (root or specific parent)search_drive - Search files by query stringcreate_document - Create a new document with optional textget_document - Get the full text content of a documentappend_to_document - Append text to document endsearch_documents - Search for documents in Driveexport_document - Export document (text, html, pdf, docx)create_spreadsheet - Create a new spreadsheetread_spreadsheet - Read data from a rangeupdate_spreadsheet - Update cells with JSON 2D arrayappend_to_spreadsheet - Append rows to spreadsheetsearch_spreadsheets - Search for spreadsheets in Driveget_spreadsheet_info - Get metadata and dimensionsclear_spreadsheet_range - Clear all values in a rangebatch_update_spreadsheet - Batch update multiple rangesadd_sheet - Add a new sheet/tabexport_spreadsheet - Export (csv, xlsx, pdf, tsv)create_presentation - Create a new presentationget_presentation - Get slide metadata and contentadd_slide - Add a new slide with layout selectionadd_text_to_slide - Add a text box to slidesearch_presentations - Search for presentationsdelete_slide - Delete a slide by indexexport_presentation - Export (pdf, pptx, txt)📖 [Detailed guide →](GUIDE.md#step-1-get-your-google-oauth-credentials)
export GOOGLE_CLIENT_ID="your-client-id.apps.googleusercontent.com"
export GOOGLE_CLIENT_SECRET="your-client-secret"
uvx gg-mcpYou'll see:
============================================================
🔐 GOOGLE ACCOUNT AUTHENTICATION
📱 Open your browser: http://localhost:3838
============================================================Open http://localhost:3838 → "Authorize with Google" → Grant permissions ✅
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"gg-mcp": {
"command": "uvx",
"args": ["gg-mcp"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id.apps.googleusercontent.com",
"GOOGLE_CLIENT_SECRET": "your-client-secret"
}
}
}
}📖 [25+ client configs →](MCP_CLIENTS.md)
Option A: PyPI (Recommended)
pip install gg-mcp
export GOOGLE_CLIENT_ID="..."
export GOOGLE_CLIENT_SECRET="..."
gg-mcpOption B: From Source
git clone https://github.com/tannht/google-cloud-mcp.git
cd google-cloud-mcp
uv sync
export GOOGLE_CLIENT_ID="..."
export GOOGLE_CLIENT_SECRET="..."
uv run main.pyOption C: Docker
git clone https://github.com/tannht/google-cloud-mcp.git
cd google-cloud-mcp
docker-compose up -d --build| Variable | Required | Default | Purpose |
|---|---|---|---|
GOOGLE_CLIENT_ID | Yes | — | OAuth 2.0 Client ID |
GOOGLE_CLIENT_SECRET | Yes | — | OAuth 2.0 Client Secret |
GOOGLE_TOKEN_PATH | No | .token.json | Token file path |
GOOGLE_TOKEN_JSON | No | — | Token as JSON string |
AUTH_PORT | No | 3838 | Auth portal port |
| Problem | Solution |
|---|---|
403: access_denied | Add your email to Test users in OAuth consent screen |
401: Invalid credentials | Verify GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET |
Token expired | Delete .token.json and re-authenticate |
| Can't access http://localhost:3838 | Port 3838 in use. Try AUTH_PORT=8080 |
403: API not enabled | Enable APIs in Google Cloud Console |
📖 [Full troubleshooting →](GUIDE.md#troubleshooting)
git clone https://github.com/tannht/google-cloud-mcp.git
cd google-cloud-mcp
uv sync --group dev
uv run pytest -v # Run tests📖 [Dev setup →](GUIDE.md#for-developers---setup)
MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.