Atlas / MCP servers / nabheet / google-services-mcp

google-services-mcpCAUTION

mcp/nabheet/google-services-mcp

Gmail MCP server for AI agents — Google Workspace MCP with 100+ tools: Calendar, Drive, Gmail, Docs, Sheets, Meet, multi-account OAuth.

Verdict
CAUTION
Grade
B
Trust score
89 /100
Exposed tools
134 58r · 56w · 20d
Transport
stdio
License
MIT
Stars
1
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

MCP (Model Context Protocol) server that gives AI agents direct access to your Google services — Gmail, Calendar, Google Meet, Drive, Contacts, Tasks, Sheets, Docs, Slides, YouTube, and Forms — with multi-account OAuth support.

Add one account, wire the server into any MCP-compatible AI client, and your agent can read and send email, manage your calendar, find files in Drive, create documents and spreadsheets, and more — using your real Google data.

npm install -g google-services-mcp     # or run without installing: npx -y google-services-mcp

Google Workspace MCP

One MCP server for your Google Workspace apps — Gmail, Calendar, Google Meet, Drive, Contacts, Tasks, Sheets, Docs, Slides, YouTube, and Forms — with multi-account OAuth. Every tool is prefixed google_ (e.g. google_gmail_list, google_calendar_list_events), so agents can combine services freely: read email, then create a Calendar event from it, or attach a Drive file to a draft.

Features

  • Gmail — full Gmail access: send, draft, reply, list, read, search,

label, and manage attachments

  • Calendar — Google Calendar events: list calendars,

create/read/update/delete events, create Google Meet links

  • Drive — list, read, upload, update, delete, and share files
  • Contacts — list, search, and create contacts
  • Tasks — list task lists, create/complete/delete tasks
  • Sheets — create spreadsheets, read/write/append cell ranges, batch update
  • Docs — create documents, read text, insert/replace text, batch update
  • Slides — create presentations, add/delete slides, find-and-replace text
  • YouTube — search videos, manage uploads/playlists/subscriptions
  • Forms — create forms, add questions, read responses
  • Multi-account — connect several Google accounts, set a default, or pass

an account argument to any tool

  • OAuth 2.0 — one-time browser authorization; tokens are stored locally and refreshed automatically
Read from source at commit f970aa66f36cOBSERVED · 2026-10-11
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add google-services-mcp --env GOOGLE_MCP_CLIENT_SECRET=${GOOGLE_MCP_CLIENT_SECRET} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "google-services-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "GOOGLE_MCP_CLIENT_SECRET": "${GOOGLE_MCP_CLIENT_SECRET}"
      }
    }
  }
}
03

Exposed tools (134)

58 read · 56 write · 20 destructive. Blast radius: 20 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
google_account_addwrite
google_account_listread
google_account_removedestructive
google_account_set_defaultwrite
google_account_statusread
google_calendar_createwrite
google_calendar_create_eventwrite
google_calendar_create_meetwrite
google_calendar_deletedestructive
google_calendar_delete_eventdestructive
google_calendar_free_busyread
google_calendar_get_eventread
google_calendar_list_calendarsread
google_calendar_list_eventsread
google_calendar_respondread
google_calendar_updatewrite
google_calendar_update_eventwrite
google_contacts_createwrite
google_contacts_deletedestructive
google_contacts_getread
google_contacts_listread
google_contacts_searchread
google_contacts_updatewrite
google_docs_batch_updatewrite
google_docs_createwrite
google_docs_delete_rangedestructive
google_docs_getread
google_docs_insert_inline_imagewrite
google_docs_insert_tablewrite
google_docs_insert_textwrite
google_docs_readread
google_docs_replace_textread
google_drive_copyread
google_drive_create_folderwrite
google_drive_deletedestructive
google_drive_delete_permissiondestructive
google_drive_downloadread
google_drive_exportread
google_drive_getread
google_drive_listread
google_drive_list_permissionsread
google_drive_movewrite
google_drive_restoreread
google_drive_shareread
google_drive_trashread
google_drive_updatewrite
google_drive_uploadwrite
google_forms_add_questionwrite
google_forms_createwrite
google_forms_deletedestructive
google_forms_delete_questiondestructive
google_forms_export_responsesread
google_forms_getread
google_forms_move_questionwrite
google_forms_renamewrite
google_forms_responsesread
google_forms_update_questionwrite
google_gmail_deletedestructive
google_gmail_drafts_createwrite
google_gmail_drafts_deletedestructive
google_gmail_drafts_getread
google_gmail_drafts_listread
google_gmail_drafts_sendwrite
google_gmail_drafts_updatewrite
google_gmail_filters_createwrite
google_gmail_filters_deletedestructive
google_gmail_filters_listread
google_gmail_getread
google_gmail_get_attachmentread
google_gmail_labels_createwrite
google_gmail_labels_deletedestructive
google_gmail_labels_listread
google_gmail_labels_updatewrite
google_gmail_listread
google_gmail_list_attachmentsread
google_gmail_modifywrite
google_gmail_replyread
google_gmail_sendwrite
google_gmail_sendas_createwrite
google_gmail_sendas_listread
google_gmail_threads_getread
google_gmail_threads_listread
google_gmail_trashread
google_gmail_untrashread
google_gmail_vacation_getread
google_gmail_vacation_updatewrite
google_sheets_add_sheetwrite
google_sheets_appendread
google_sheets_batch_updatewrite
google_sheets_createwrite
google_sheets_delete_rowsdestructive
google_sheets_delete_sheetdestructive
google_sheets_getread
google_sheets_get_named_rangesread
google_sheets_insert_rowswrite
google_sheets_readread
google_sheets_rename_sheetwrite
google_sheets_set_named_rangewrite
google_sheets_writewrite
google_slides_add_slidewrite
google_slides_batch_updatewrite
google_slides_createwrite
google_slides_create_imagewrite
google_slides_create_textboxwrite
google_slides_delete_slidedestructive
google_slides_duplicate_slideread
google_slides_getread
google_slides_get_pageread
google_slides_move_slidewrite
google_slides_replace_textread
google_tasks_completeread
google_tasks_createwrite
google_tasks_create_listwrite
google_tasks_deletedestructive
google_tasks_delete_listdestructive
google_tasks_listread
google_tasks_list_listsread
google_tasks_updatewrite
google_tasks_update_listwrite
google_youtube_add_to_playlistwrite
google_youtube_create_playlistwrite
google_youtube_delete_playlistdestructive
google_youtube_get_videoread
google_youtube_insert_commentwrite
google_youtube_list_commentsread
google_youtube_list_playlistsread
google_youtube_mark_comment_spamread
google_youtube_my_videosread
google_youtube_remove_from_playlistdestructive
google_youtube_searchread
google_youtube_set_comment_moderationwrite
google_youtube_subscriptionsread
google_youtube_update_videowrite
google_youtube_uploadwrite
04

Trust audit

CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
declared (3 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
none-found

Findings (13)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/auth/oauth.ts:32
return `http://127.0.0.1:${port}`;
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
google_account_remove, google_calendar_delete, google_calendar_delete_event, google_contacts_delete, google_docs_delete_range, google_drive_delete, google_drive_delete_permission, google_forms_delete,
Why it matters. 20 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWInventory / provenance · inv.hidden_file · CWE-1104
.markdownlint-cli2.jsonc
.markdownlint-cli2.jsonc
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/auth/config.test.ts:19
} from "../../src/auth/config.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/auth/manager.test.ts:5
import { authManager } from "../../src/auth/manager.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/auth/manager.test.ts:6
import { type StoredAccount, saveAccount } from "../../src/auth/store.js";
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/auth/manager.test.ts:8
const oauth = await import("../../src/auth/oauth.js");
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
test/auth/manager.test.ts:14
vi.mock("../../src/auth/oauth.js", () => ({
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
README.md:224
# GOOGLE_MCP_REDIRECT_URI=http://127.0.0.1:8787/oauth2callback
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
test/auth/config.test.ts:109
redirectUri: "http://127.0.0.1:9191/oauth2callback",
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
test/auth/config.test.ts:119
expect(config.redirectUri).toBe("http://127.0.0.1:9191/oauth2callback");
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
test/auth/config.test.ts:129
vi.stubEnv("GOOGLE_MCP_REDIRECT_URI", "http://127.0.0.1:4321/cb");
LOWSupply chain · supply.unpinned · CWE-829, CWE-1357
package.json
@modelcontextprotocol/sdk, googleapis, zod, @biomejs/biome, @types/node, markdownlint-cli2, nock, tsx
Why it matters. 10 dependency range(s) float
Fix. pin exact versions or ship a lockfile

Gates applied: no_behavioural_pass.

Audited 2026-10-11 · audit v0.4.1 · source sha f970aa66f36cfull audit observations/trust-audit/mcp-server/nabheet__google-services-mcp.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-11f970aa66f36cCAUTIONB89first audit
06

Questions

What is the google-services-mcp MCP server?

Gmail MCP server for AI agents — Google Workspace MCP with 100+ tools: Calendar, Drive, Gmail, Docs, Sheets, Meet, multi-account OAuth.

What tools does google-services-mcp expose?

134 in total: 58 read-only, 56 that write, and 20 that can delete or overwrite (google_account_remove, google_calendar_delete, google_calendar_delete_event, google_contacts_delete, google_docs_delete_range). Every one is listed on this page with its risk.

Is google-services-mcp safe to connect to an agent?

With care. The audit graded it B (89/100) and found 13 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 20 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does google-services-mcp need?

It reads GOOGLE_MCP_CLIENT_SECRET from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does google-services-mcp run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as google-services-mcp at 0.1.0.

How current is this page?

The grade is for one exact copy of the source (f970aa66f36c), read on 2026-10-11. The repository is watched and re-audited when it changes.

Advertisement