MCP server unifying 169 Google Workspace tools across Drive, Docs, Sheets, Slides, Gmail, Calendar, and Forms behind a single OAuth 2.0 flow. Read-before-edit guards, lazy auth, multi-account profiles, no telemetry.
- capability exposure inferred + 35
- tool safety inferred + 12
inferred
The A–E grade is our heuristic synthesis — a "review this" prompt, not a verdict. Each factor is tagged by what backs it: attested (a verifiable record), reported (a third party's claim), or inferred (our own heuristic, e.g. permissions). See methodology.
grade last moved 1w ago · see ecosystem CVEs →
- C · 37 → C · 47
- A · 0 → C · 37
No known CVEs for this server.
- high dangerous code
dynamic exec: new Function() · credential logged in 1 file(s)
analyzed commit 9b3ea0b · analyzer v33 · 1w ago
skills & prompt files 1
danger signals7
- dynamic code execution new Function() karthikcsq-google-tools-mcp-9b3ea0b/tests/errorsAndLogger.test.js :308
const tagged = new Function(`return "${secret}";`); - over-broad OAuth scope https://www.googleapis.com/auth/documents
expected for this server's purpose
karthikcsq-google-tools-mcp-9b3ea0b/dist/auth.js :36
'https://www.googleapis.com/auth/documents', - over-broad OAuth scope https://www.googleapis.com/auth/drive
expected for this server's purpose
karthikcsq-google-tools-mcp-9b3ea0b/dist/auth.js :37
'https://www.googleapis.com/auth/drive', - over-broad OAuth scope https://www.googleapis.com/auth/spreadsheets
expected for this server's purpose
karthikcsq-google-tools-mcp-9b3ea0b/dist/auth.js :38
'https://www.googleapis.com/auth/spreadsheets', - over-broad OAuth scope gmail.modify karthikcsq-google-tools-mcp-9b3ea0b/dist/auth.js :41
'https://www.googleapis.com/auth/gmail.modify', - over-broad OAuth scope https://www.googleapis.com/auth/drive
expected for this server's purpose
karthikcsq-google-tools-mcp-9b3ea0b/tests/authConcurrency.test.js :26
SCOPES: ['https://www.googleapis.com/auth/drive'], - credential in logs credential in log karthikcsq-google-tools-mcp-9b3ea0b/tests/errorsAndLogger.test.js :373
logger.debug('debug keeps its level', { refresh_token: secretValues[2] });
Heuristic, inferred signals — false positives (legitimately powerful tools, forks, language ports) are expected. Treat each as "review this", not a verdict. See the ecosystem-wide picture on the security hub, or the fleet security of karthikcsq.