Google Workspace MCP (Docs read/edit, Sheets, Drive for Claude CLI)
An MCP server that gives Claude CLI sessions direct access to Google Docs, Sheets and Drive — nineteen tools that run as a subprocess alongside the CLI, so the agent reads, searches and edits documents mid-session without Omniscio mediating each call.
RETIRED FROM COMPOSITION (2026-09-19). No AMC-built MCP server is composed into a session's
.mcp.jsonany more, so this server no longer reaches sessions and its Enable Google Workspace Tools toggle is gone from Settings. The server source and its entry builder stay in the tree, unwired — restoring it is a revert. Google access is unaffected: it runs through the gws/gog CLI backend and the composedgoogle-driveMCP server. The rest of this page is the tool reference for the day it returns.
What it is
An MCP server that gives Claude CLI sessions direct access to Google Docs, Sheets, and Drive — 19 tools total. Unlike Omniscio's built-in Google integrations (which work through Omniscio's AI service loop), this server runs as a subprocess alongside the Claude CLI, so the agent can read, search, and edit Google Workspace documents mid-session without Omniscio mediating each call.
The primary use case is document workflows: searching for SOPs by name, reading their full contents, making batch edits (e.g. find-and-replace across sections), and working with spreadsheets — all from within a regular Claude Code session.
Where to find it
How to enable it
- Connect Google (if not already). Settings → Google → Connect Google. One OAuth consent covers Gmail, Calendar, Drive, Sheets, and Docs.
- Enable the toggle. (Retired 2026-09-19 — the toggle no longer exists.) It used to register the
google-workspaceserver in every new session's curated.mcp.json— a private per-session file under Omniscio's data dir, never your project folder (so it could not collide with or shadow agoogle-workspaceserver you wired into your own~/.claude.json). - GCP prerequisite. The Google Cloud project behind Omniscio's OAuth credentials must have the Google Docs API and Google Sheets API enabled. Drive API is already on. Without the Docs/Sheets APIs enabled, search and list operations work but read/edit operations return an API-not-enabled error. This is a one-time toggle in the GCP Console.
What the user sees
When you ask the agent something like "find the SOP about uploading listings and show me what's in it," the agent:
- Calls
search_documentsbehind the scenes (tool call collapses in the chat) - Finds matching documents with title, owner, doc ID, and last-modified date
- Calls
read_documentto pull up the full contents - Presents the document text in clean markdown in the session chat
The user doesn't see raw API calls — just the formatted results. MCP tool invocations appear as collapsible activity blocks in the session transcript (same as any other Claude Code tool call like Read, Grep, or Bash).
How it behaves
Available tools (19)
| Category | Tool | Description |
|---|---|---|
| Auth | authenticate |
Authenticate with Google Workspace |
check_auth_status |
Check current auth status | |
| Docs — read | read_document |
Read a full Google Doc |
read_document_section |
Read a specific section | |
list_document_tabs |
List tabs in a document | |
search_documents |
Search across Google Docs | |
| Docs — edit | edit_section |
Edit a section in place |
batch_edit_section |
Edit multiple sections in one call | |
insert_section |
Add a new section | |
remove_section |
Delete a section | |
find_and_replace |
Find and replace text in a doc | |
batch_find_and_replace |
Multiple find-and-replace in one call | |
| Docs — create | create_document |
Create a new Google Doc with optional initial content |
| Sheets | create_spreadsheet |
Create a new Google Sheet with optional tabs and headers |
read_sheet |
Read spreadsheet data | |
update_sheet_cells |
Update cells in a sheet | |
| Drive | list_folder_contents |
List files in a Drive folder |
| Jobs | get_job_status |
Check status of a batch job |
get_job_results |
Get results of a completed batch job | |
list_jobs |
List all pending/completed jobs |
Differences from built-in Google integrations
| Built-in Google (Calendar/Drive/Sheets) | Google Workspace MCP | |
|---|---|---|
| How it runs | Omniscio's AI service loop (IPC-mediated) | Claude CLI subprocess (MCP protocol) |
| When it's available | In Omniscio's chat UI | In any Claude CLI session |
| Document editing | No (Drive: file-level ops; Sheets: cell-level) | Yes (section-level Docs editing, find-and-replace) |
| Batch operations | No | Yes (batch edit, batch find-and-replace with job tracking) |
| Enable toggle | driveEnabled, calendarEnabled, sheetsEnabled |
(retired 2026-09-19 — no per-session toggle) |
For agents
How it works
There is exactly one curated .mcp.json per session — written to a private per-session path (<userData>/session-mcp/<sessionId>.mcp.json, never the project folder) by a single owner: the shared mcp-config-orchestrator.ts. At spawn time the orchestrator composes one entry per enabled MCP server into that one file, and Omniscio hands it to the CLI by absolute path via --mcp-config (see backend-spawn-contract.md §12). Writing it out of the project tree avoids a name collision with the user's own ~/.claude.json servers and keeps any plaintext secrets in an entry's env out of a shared/git-tracked folder. Google Workspace used to contribute an entry through a pure builder, buildGoogleWorkspaceServerEntry(), plus an Electron-aware deps resolver, resolveGoogleWorkspaceMcpDeps(), both in mcp-config-writer.ts — both stay in the tree, unwired, since 2026-09-19. It is not a live path: the out/mcp/google-workspace-server.js bundle it names is no longer built, so anything that started composing this entry again would spawn a missing file. It is kept deliberately as the written-down shape a revival would have to restore, and says so in its own comment. The retirement itself is documented on McpOrchestratorOpts in /src/main/services/mcp/mcp-compose.ts; the feature keeps its own routes and settings, it simply no longer composes a per-session MCP process. If no server is enabled at all the orchestrator removes any stale .mcp.json.
The server itself lives at src/main/services/google-workspace-mcp-server/ and is built to out/mcp/google-workspace-server.js during the standard npm run build step. It receives the Google OAuth refresh token, client ID/secret, and an encryption key via environment variables — credentials never touch disk in plaintext.
The server uses its own SQLite database at <userData>/google-workspace-mcp/workspace.db for caching document metadata, batch job tracking, and credential storage. Batch operations (like batch_find_and_replace across a large document) run as background jobs with status polling via the get_job_status/get_job_results tools.
Path resolution to the bundled google-workspace-server.js uses app.isPackaged ? resolve(app.getAppPath(), …) : resolve(__dirname, '../../out/mcp/…') so it works correctly in dev, sandbox (out-sandbox/), and packaged builds — mirroring getMcpServerScriptPath() in mcp-registry.ts, since app.getAppPath() alone resolves to the wrong root under sandbox mode.
Related
- google-integrations.md — the IPC-based Calendar/Drive/Sheets integrations (same OAuth)
- drive-integration.md — the existing Drive MCP server (5 read-only tools)
- sheets-integration.md — rich Sheets formatting and Trusted Sheets
- mempalace-memory.md — another MCP server composed into the same
.mcp.jsonby the shared orchestrator
Last verified 2026-10-06