Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Google Workspace

NPM · @AARONSB/GOOGLE-WORKSPACE-MCP

Give AI agents access to Gmail, Calendar, Drive, and more — multi-account, manifest-driven

0 this week 94 Trust /100

Last scanned (1 hour ago)

Scores higher than 97% of npm servers

Category Productivity and Notes

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 33 of 109 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency100
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to aaronsb/google-workspace-mcp). View diagnostics → Pass
  • Clear OSI-approved license (Apache-2.0).Pass
  • Actively maintained (last published 19 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability72
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 7965 tokens (~468/item across 17 items; 13 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 13 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 28 Oct 26 0
    • Stability: 0.97 → pass security
  • 27 Oct 26 0
    • Stability: pass → 0.97 functional
  • 16 Oct 26 0
    • Stability: pass → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Schema quality: 417 → 468 ▼ functional
    • Schema quality: 417 → 459 ▼ functional
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
    • Schema quality: good → excellent functional
    • Stability: pass → 0.83 functional
    • Package version: 4.6.1 → 4.8.0 functional
    • Package version: 4.6.1 → 4.7.0 functional
  • 15 Oct 26 0
    • Stability: 0.97 → pass security
  • 14 Oct 26 +1
    • Stability: 0.93 → unverified ▼ security
    • Tool safety: pass → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • Schema quality: 100 → unverified ▼ functional
    • Package version: 4.6.0 → 4.6.1 functional
  • 12 Oct 26 +1
    • Security disclosure: unverified → pass ▲ functional
  • 11 Oct 26 −2
    • Security disclosure: pass → unverified ▼ functional
    • Stability: pass → 0.87 functional
  • 8 Oct 26 +1
    • Stability: 0.87 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed npm/@aaronsb/google-workspace-mcp@4.8.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo aaronsb/google-workspace-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/aaronsb/google-workspace-mcp/.github/workflows/npm-publish.yml@refs/tags/v4.8.0
Rekor log index 3282282607
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:8822aacdcfd34404fc6af8e39faf503c1e5ed9673482ac1182a4bd225add95bb6ec15dd8366ad7b29c32d140e72ddf7bc27a83d36c4837681f508d060

Background: How many MCP packages publish verified provenance →

Dependencies 109 packages
Packages resolved 109
Stale 33
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 13 exposed · ~7,900 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
bulk_operations ~335

Do many things in one call, two ways. mode:'queue' (default) runs different operations in sequence, chaining results with $N.field — works for every tool. mode:'batch' does ONE operation across many resources in a single Google request — far fewer round trips, but only where Google publishes a batch method.

NameTypeReqDescription
detailstring–summary: one-line status per operation (default) | full: include complete output from each operation
emailstring–batch only — the account to act as.
itemsarray–batch only — one entry per resource. A bare id string is enough when that is all that differs, e.g. ['people/c1', 'people/c2']; use objects when items carry more, e.g. [{name: 'Ada Lovelace', contact…
modestring–queue (default): N operations, N API calls, in order, with $N.field references between them. batch: ONE operation across many resources in a single API call — no $N references, because there is no 'b…
operationstring–batch only — the operation to apply to every item, e.g. 'delete'. Ask for one that cannot batch and the error names the ones that can.
operationsarray–Operations to execute sequentially
toolstring–batch only — the tool to call, e.g. 'manage_contacts'.

No output schema declared.

No examples provided.

manage_accounts ~278

Manage Google Workspace account lifecycle: list, authenticate, check status, refresh credentials, update scopes, or remove accounts.

NameTypeReqDescription
accessstring–How much this account may do. 'readwrite' (default) is full access. 'read' asks Google for read-only permissions instead, so the account can look things up but cannot send, edit or delete. Some servi…
categorystring–For authenticate (default: personal)
confirmWriteAccessboolean–Set true to go ahead when 'read' was asked for but some services can only be granted full access. Only needed after a first call has told you which ones.
descriptionstring–For authenticate — optional label
emailstring–Required for remove, status, refresh, scopes
operationstringyeslist: show all accounts | authenticate: add new account (opens browser) | remove: delete account and credentials | status: check token validity and scopes | refresh: renew credentials | scopes: re-au…
servicesstring–For scopes — comma-separated service names (e.g. gmail,drive,calendar,sheets)

No output schema declared.

No examples provided.

manage_calendar ~850

List events, view agenda, check availability, or manage calendar events.

NameTypeReqDescription
allDayboolean–Whether the event is all-day. When true, start and end are DATES (YYYY-MM-DD — an ISO datetime's date part is used) and end, if given, is the INCLUSIVE last day; the exclusive end date the Calendar A…
attendeesstring–Comma-separated email addresses. On `update`, whatever you pass REPLACES the existing list — addresses you leave out are removed, and an empty string clears everyone. OMIT the parameter to leave the…
calendarIdstring–Calendar ID. Use the `calendars` operation to list available IDs; required for events on shared calendars. Defaults to 'primary' on the event operations (`list`, `get`, `create`, `quickAdd`, `update`…
daysnumber–Number of days ahead to show (default: today only)
descriptionstring–Event description or notes
emailstringyesAccount email address
endstring–End time (ISO 8601) — or, when allDay is true, a DATE (YYYY-MM-DD) that is the INCLUSIVE last day; the exclusive end date the Calendar API requires is computed for you. Optional for all-day events: a…
eventIdstring–Event ID
locationstring–Event location
maxResultsnumber–Max events (default: 10, max: 50)
meetboolean–Add a Google Meet video conference link. On `update`, true adds a link and false REMOVES an existing one; omit it to leave the link as it is.
operationstringyeslist: upcoming events — defaults to primary calendar, use calendarId to target a specific calendar (use 'calendars' operation to discover IDs) | agenda: today's schedule at a glance (all calendars).…
querystring–Free-text search terms to filter events
startstring–Start time (ISO 8601) — or a DATE (YYYY-MM-DD) when allDay is true
summarystring–Event title
textstring–Natural language event description
timeMaxstring–End of range (ISO 8601)
timeMinstring–Start of range (ISO 8601). On `list`, defaults to today.
tomorrowboolean–Show tomorrow's events instead of today
weekboolean–Show this week's events

No output schema declared.

No examples provided.

manage_contacts ~529

Search, read, create, update and delete Google Contacts: your saved contacts, the addresses you have corresponded with but never saved, and your organization's directory.

NameTypeReqDescription
companystring–Organization name
contactEmailstring–The contact's email address. (`email` is the account making the call, not the person being saved.) On `update` this REPLACES every address the contact has — pass an empty string to clear them.
contactIdstring–Person id as `list` or `search` printed it (e.g. `people/c1234567890`). A bare id without the `people/` prefix is accepted.
emailstringyesAccount email address
jobTitlestring–Job title within the organization
maxResultsnumber–Max people to return (default 25). Capped per operation: 30 for `search` and `searchOther`, 100 for everything else.
namestring–Full name, e.g. `Ada Lovelace`. Split into given and family name on the way in; a single word becomes the given name.
notesstring–Free-text note stored on the contact
operationstringyeslist: list your saved contacts | search: search your saved contacts by name, email, nickname or phone | get: get one person in full — addresses, birthday, notes, relations | create: create a new cont…
pageTokenstring–Continue from where a previous page stopped — pass the token that response printed
phonestring–Phone number, in whatever form you have it — Google normalizes it. On `update` this REPLACES every number the contact has — pass an empty string to clear them.
querystring–Text to match against names, email addresses, nicknames and phone numbers. Matching is by PREFIX: `ann` finds Anna, `nna` finds nobody.
sortOrderstring–Order for `list` — by first name, by last name, or most recently changed first

No output schema declared.

No examples provided.

manage_docs ~268

Read, write, insert, and find-replace text in Google Docs documents.

NameTypeReqDescription
documentIdstring–Document ID
emailstringyesAccount email address
findTextstring–Text to find
indexnumber–Character index to insert at (1 = start of the tab's body)
matchCaseboolean–Case-sensitive match (default: true)
operationstringyesget: get document content and metadata | create: create a new document | write: append text to the end of a document | insertText: insert text at a specific position in a document | replaceText: find…
replaceWithstring–Replacement text
tabIdstring–Tab to act on — a tabId from a previous get's tabIndex. Scopes the read on get; targets the edit on write/insertText/replaceText, which act on the FIRST tab when it is omitted (replaceText spans ever…
textstring–Text to write (plain text) — appended to the end by write, inserted at `index` by insertText
titlestring–Document title (default: 'Untitled document')

No output schema declared.

No examples provided.

manage_drive ~994

Search, upload, download, share, comment on, or manage files in Google Drive.

NameTypeReqDescription
addParentsstring–Comma-separated folder ID(s) to add as parents (move into a folder)
commentIdstring–Comment ID
contentstring–Comment text. On `replyToComment`, the reply text.
domainstring–Domain name (required when type is 'domain').
emailstringyesAccount email address
fileIdstring–File ID
filePathstring–Local file path to upload
folderIdstring–Folder ID (pass the id returned by createFolder or search)
includeDeletedboolean–Include deleted comments (default: false)
maxDepthnumber–How many folder levels to descend (default 10). The tree is labelled partial when this limit stops the walk.
maxResultsnumber–Max results (default: 10, max: 50)
mimeTypestring–Target format (e.g. application/pdf, text/csv, text/plain, application/vnd.openxmlformats-officedocument.wordprocessingml.document)
namestring–File name in Drive. On `upload`, defaults to the local file's name. On `copy`, the name for the copy — without it Drive names it 'Copy of <original>'. On `update`, the new name (a rename). On `create…
operationstringyessearch: find files by query | get: get file metadata | upload: upload a local file to Drive | viewImage: view an image file inline without saving to workspace (png, jpg, gif, webp). Use for quick pre…
outputPathstring–Local path to save the file
parentFolderIdstring–Destination folder ID. On `upload`, places the file in this folder. On `copy`, defaults to the source file's folder. On `createFolder`, nests the new folder under this parent.
permissionIdstring–Permission ID to remove (from listPermissions)
querystring–Drive search query (e.g. "name contains 'budget'" or "mimeType='application/pdf'")
quotedTextstring–Text to anchor the comment to (optional — if provided, comment is anchored to first occurrence)
removeParentsstring–Comma-separated folder ID(s) to remove as parents (move out of a folder)
resolvedboolean–true to resolve, false to reopen
rolestring–Permission level. On `share`, the level to grant — defaults to `reader`. On `setRole`, the new level, and it is REQUIRED there: with no default to fall back on, an omitted role would silently demote…
shareEmailstring–Email address of the collaborator. On `share`, required when type is 'user' or 'group'; omit for 'domain' (use the `domain` param) or 'anyone'. On `setRole`, the existing collaborator whose role to c…
typestring–Permission type (default: 'user'). Use 'group' for Google Groups, 'domain' to share with an entire G Suite domain, 'anyone' for public links.

No output schema declared.

No examples provided.

manage_email ~1,912

Search, read, send, forward, or manage emails in a Google Workspace account. Supports Gmail search syntax.

NameTypeReqDescription
addLabelIdsstring–Comma-separated label IDs to add (e.g. STARRED, IMPORTANT, Label_123). On modify, to this message; on the filter operations, to each matching message as it arrives; on the *ModifyMatching operations,…
attachmentsstring–Workspace filenames to attach, comma-separated (files must exist in workspace via manage_workspace). Creates draft when present.
bccstring–BCC email(s), comma-separated
bodystring–Email body text. On `forward`, an optional note prepended ABOVE the forwarded message.
bodyFormatstring–How to render the message body. 'plain' (default) returns text/plain or a crude HTML-strip fallback. 'html' returns the text/html part sanitized — useful when the plain-text part is empty/stub.
ccstring–CC email(s), comma-separated. On `replyAll` these are ADDITIONAL — they do not replace the recipients already on the thread.
draftboolean–Save as draft instead of sending (default: false, forced true when attachments present)
draftIdstring–Draft id as returned by listDrafts (an r… id, not the message id)
emailstringyesAccount email address
filenamestring–Attachment filename, exactly as it appears in the `read` response (e.g. 'invoice_template.md')
filterIdstring–Filter id, as listed by `filters`. On previewFilter, the filter a change would replace; leave it out to preview a new filter.
forwardTostring–Filter action: forward each match to this address. It must already be a verified forwarding address in Gmail settings.
fromstring–Sender email or RFC 2822 mailbox for a verified Gmail Send As alias
htmlboolean–Treat body as HTML content (default: plain text)
idsOnlyboolean–On `search`: return only message ids, up to 500 per page, without fetching each message's headers. For counting a large result or collecting ids to pass to bulk_operations batch mode (e.g. modify).
labelListVisibilitystring–Whether the label appears in the label list: labelShow (default), labelShowIfUnread, or labelHide
matchExcludeChatsboolean–Filter criterion: leave chat messages out
matchFromstring–Filter criterion: sender, e.g. billing@vendor.com or @vendor.com
matchHasAttachmentboolean–Filter criterion: only messages with an attachment
matchNegatedQuerystring–Filter criterion: a Gmail search query the message must NOT match
matchQuerystring–Filter criterion: any Gmail search query the message must match, same syntax as search
matchSizenumber–Filter criterion: size in bytes; requires matchSizeComparison
matchSizeComparisonstring–Filter criterion: whether matches are larger or smaller than matchSize
matchSubjectstring–Filter criterion: words in the subject
matchTostring–Filter criterion: recipient, e.g. a list or alias address
maxResultsnumber–Max results per page (default 10, max 50). On `search` with idsOnly, default and max 500.
messageIdstring–Email message ID
messageListVisibilitystring–Whether the label appears on messages in the message list: show (default) or hide
namestring–Label name, e.g. 'REC/Receipt'. Nested labels use a slash; create the parent first if Gmail shows nesting.
operationstringyessearch: find emails by query. Says when more results exist than the page shows; continue with pageToken, or pass idsOnly to collect up to 500 ids per page for bulk_operations. | read: get full email…
outputPathstring–Local path to save the markdown file (workspace-relative; defaults to a slug from the message date and subject)
pageTokenstring–Continue a list from where the previous page stopped: pass the pageToken its response gave. Absent from a response means that response was the last page.
previewTokenstring–The token the preview returned for this exact change: previewFilter for createFilter and updateFilter, previewModifyMatching for modifyMatching. Required: the write runs only after its preview has be…
querystring–Gmail search query (e.g. "from:alice subject:meeting has:attachment")
removeLabelIdsstring–Comma-separated label IDs to remove (e.g. UNREAD to mark read, INBOX to archive). On modify, from this message; on the filter operations, from each matching message as it arrives; on the *ModifyMatch…
subjectstring–Email subject line
threadIdstring–Thread ID to retrieve
tostring–Recipient email(s), comma-separated

No output schema declared.

No examples provided.

manage_meet ~646

Browse past Google Meet conferences, participants, transcripts, recordings, and AI-generated smart notes. Requires Workspace Business Standard+ for transcripts/recordings.

NameTypeReqDescription
accessTypestring–Who can join without knocking. OPEN: anyone with the link. TRUSTED (default): people in your organization, plus invited guests. RESTRICTED: invited guests only.
conferenceIdstring–Conference record ID (from `listConferences`)
emailstringyesAccount email address
filterstring–EBNF filter. On `listConferences`, e.g. 'space.meeting_code = "abc-mnop-xyz"' or 'start_time>="2026-01-01T00:00:00Z"'. On `listParticipants`, e.g. 'latest_end_time IS NULL' for active participants.
maxResultsnumber–Max results per page, as default/ceiling. Differs by operation: `listConferences` 25/100, `listParticipants` 100/250, `listTranscriptEntries` 100/100. (Google's own default for transcript entries is…
moderationboolean–Turn on host controls — the host admits guests and manages who can present or chat.
operationstringyeslistConferences: list recent meeting conferences (default: descending by start time) | getConference: get details of a specific conference | listParticipants: list who attended a conference | listTra…
pageTokenstring–Page token from a previous getFullTranscript call to continue reading
recordingNamestring–Recording resource name (from listRecordings)
smartNoteNamestring–Smart note resource name (from listSmartNotes)
spacestring–Meeting code (the abc-mnop-xyz part of a Meet link) or a full spaces/... resource name
transcriptNamestring–Transcript resource name (from `listTranscripts`, e.g. conferenceRecords/.../transcripts/...)

No output schema declared.

No examples provided.

manage_scratchpad ~601

Compose, edit, and deliver text content. Use for any multi-line content: emails, documents, descriptions. Compose in the scratchpad, edit by line or JSON path, attach files, then send to any target. For short one-liners, use the service tool directly instead.

NameTypeReqDescription
afterLinenumber–Insert after this line number (0 = prepend). For insert_lines, copy_lines, attach.
contentstring–Text content. For create (pre-fill), insert_lines, append_lines, replace_lines.
emailstring–For attach (drive source): account that can read the Drive file
endLinenumber–End of line range (inclusive). For replace_lines, remove_lines, copy_lines, view.
fileIdstring–For attach (drive source): Drive file ID. The file is downloaded into the workspace at attach time.
filenamestring–For attach (workspace source): filename in workspace
formatstring–For create: content format (default: text). Controls validation and addressing mode.
fromScratchpadIdstring–For copy_lines: source scratchpad ID
keepboolean–For send: keep scratchpad after successful send (default: true)
labelstring–For create: optional human-readable label
operationstringyescreate: new buffer | view: show content | discard: free buffer | list: show all | insert_lines/append_lines/replace_lines/remove_lines: line editing | copy_lines: copy from another scratchpad | json_…
pathstring–For json_* ops: JSON path (e.g., $.config.name, $.items[0].value)
refIdstring–For detach: attachment reference ID (att-1, att-2, etc.)
scratchpadIdstring–Scratchpad ID (sp-XXXX). Required for all operations except create and list.
sourcestring–For attach: file source (workspace or drive). For import: resource type (doc, email, sheet, drive_file).
sourceParamsobject–For import: source-specific parameters (e.g., { documentId, mode } for doc, { messageId } for email)
startLinenumber–Start of line range (1-based). For replace_lines, remove_lines, copy_lines, view.
targetstring–For send: delivery target
targetParamsobject–For send: target-specific parameters (e.g., { email, to, subject } for email, { filename } for workspace)
value––For json_set, json_insert: value to set or insert (any JSON type)

No output schema declared.

No examples provided.

manage_sheets ~609

Read, write, and manage Google Sheets spreadsheets.

NameTypeReqDescription
columnCountnumber–Initial column count (default 26)
destinationSpreadsheetIdstring–Destination spreadsheet ID
emailstringyesAccount email address
indexnumber–Position among tabs (0-based). Appended at the end if omitted.
jsonValuesstring–JSON 2D array of rows (e.g. '[["a","b"],["c","d"]]'). Use for bulk and multi-row writes.
operationstringyesget: get spreadsheet metadata and sheet names | create: create a new spreadsheet (optionally with a title) | read: read cell values from a range; rendered rows are prefixed with their sheet row numbe…
rangestring–A1 notation range (e.g. 'Sheet1!A1:D10', or just 'Sheet1' for a whole tab). On `append`, the target tab — defaults to 'Sheet1'; use 'MyTab' or 'MyTab!A:Z' to append to a specific one.
rowCountnumber–Initial row count (default 1000)
sheetIdnumber–Sheet ID of the tab, from `manage_sheets get`. On `duplicateSheet` and `copySheetTo`, the SOURCE tab to copy.
spreadsheetIdstring–Spreadsheet ID. On `copySheetTo`, the SOURCE spreadsheet.
titlestring–On `create`, the spreadsheet title (defaults to 'Untitled spreadsheet'); on `renameSpreadsheet`, its new title. On `addSheet`, the name of the new TAB; on `renameSheet`, that tab's new title; on `dup…
valueInputOptionstring–How input is interpreted: USER_ENTERED (default, parses formulas/types) or RAW
valuesstring–Comma-separated values for a single row (e.g. 'Alice,100,true')

No output schema declared.

No examples provided.

manage_tasks ~291

Manage task lists and tasks in Google Tasks.

NameTypeReqDescription
duestring–Due date (RFC 3339, e.g. 2026-07-20T00:00:00.000Z — Google stores the date, not the time)
emailstringyesAccount email address
maxResultsnumber–Max tasks to return (default: 20, max: 100)
notesstring–Task notes / details
operationstringyeslistTaskLists: list all task lists | getTaskList: get a task list by ID | createTaskList: create a new task list | deleteTaskList: delete a task list and all its tasks | list: list tasks in a task li…
showCompletedboolean–Include completed tasks (default: true)
statusstring–Task status
taskIdstring–Task ID
taskListIdstring–Task list ID (use `listTaskLists` to find)
titlestring–On `createTaskList`, the task list name. On `create` and `update`, the task title.

No output schema declared.

No examples provided.

manage_workspace ~225

Manage files and directories in the workspace sandbox. Supports nested paths (e.g. "reports/q1/summary.csv"). The workspace is the exchange point for file operations (attachments, downloads, exports).

NameTypeReqDescription
contentstring–File content to write (for write)
destinationstring–Destination path (for move, compress, decompress). Defaults to filename.gz for compress, strips .gz for decompress.
filenamestring–File path, may include directories (for read, write, delete, compress, decompress). E.g. "reports/q1/summary.csv"
operationstringyeslist: show files (recursive) | read: get file content | write: save content to file | delete: remove file or directory | move: move or rename a file/directory | mkdir: create a directory | compress:…
pathstring–Directory path (for list: scope to subdirectory, for mkdir: directory to create)
sourcestring–Source path (for move)

No output schema declared.

No examples provided.

queue_operations ~362

RENAMED to `bulk_operations`, which does the same thing. This name still works and will be removed in a future release. Do many things in one call, two ways. mode:'queue' (default) runs different operations in sequence, chaining results with $N.field — works for every tool. mode:'batch' does ONE operation across many resources in a single Google request — far fewer round trips, but only where Google publishes a batch method.

NameTypeReqDescription
detailstring–summary: one-line status per operation (default) | full: include complete output from each operation
emailstring–batch only — the account to act as.
itemsarray–batch only — one entry per resource. A bare id string is enough when that is all that differs, e.g. ['people/c1', 'people/c2']; use objects when items carry more, e.g. [{name: 'Ada Lovelace', contact…
modestring–queue (default): N operations, N API calls, in order, with $N.field references between them. batch: ONE operation across many resources in a single API call — no $N references, because there is no 'b…
operationstring–batch only — the operation to apply to every item, e.g. 'delete'. Ask for one that cannot batch and the error names the ones that can.
operationsarray–Operations to execute sequentially
toolstring–batch only — the tool to call, e.g. 'manage_contacts'.

No output schema declared.

No examples provided.

Install

How do I install the Google Workspace MCP server?

Google Workspace runs locally as an npm package, launched with npx -y @aaronsb/google-workspace-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @aaronsb/google-workspace-mcp

# add to Claude Code
claude mcp add aaronsb-google-workspace -- npx -y @aaronsb/google-workspace-mcp
Common questions

What is the Google Workspace MCP server?

Google Workspace is an MCP server listed in the public MCP registry as io.github.aaronsb/google-workspace. Give AI agents access to Gmail, Calendar, Drive, and more, multi-account, manifest-driven. This page covers its npm package (@aaronsb/google-workspace-mcp).

Is the Google Workspace MCP server safe to use?

Google Workspace scores 94 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Google Workspace MCP server expose?

Google Workspace exposes 13 tools: manage_accounts, manage_workspace, manage_scratchpad, bulk_operations, queue_operations, and 8 more. Their descriptions and schemas cost roughly 7,900 tokens of context every time the server is loaded.

Is the Google Workspace MCP server still maintained?

Google Workspace is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Google Workspace MCP server under?

Google Workspace declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.