Treat a Google Doc like a local file: content editing, tracked-changes review, comments, tables.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
An MCP server that lets an AI agent (like Claude Code) treat a Google Doc like a local file β read it, edit it by content, review and resolve suggestions, manage comments, and work across tabs and multiple Google accounts.
Status: beta. The tool surface is complete and every change is verified against the live API, not just unit tests. Markdown code blocks are the one construct still to render (see Roadmap).
Most Google Docs MCP servers treat a doc as flat text. This one fills the gap nobody else does:
list_suggestions shows pending tracked-changes as before β after; apply_suggestions accepts/rejects one or more cleanly. read_doc can render them inline as <ins>/<del>.edit_doc matches a unique snippet of text (like a local Edit) and rewrites it β indices are never exposed.You don't call tools. You ask in plain language and the agent drives them.
Fill a template without rebuilding it
"Copy the Proposal Template into /Clients/Acme, name it 'Acme Q3 Proposal', then fill in the client name, the dates, and the pricing table."
The copy keeps the letterhead, the logo at its exact size, the fonts and the page setup β everything a markdown round-trip cannot rebuild. Then only the words that change are edited. The alternative is retyping a document you already have.
A whole review pass in one instruction
"Show me the pending suggestions as a diff, accept the typo fixes, reject anything that changes meaning, then reply to the open comments and resolve the ones that are settled."
Four tools, one sentence, and the judgement in the middle is the part you wanted help with. Most Docs integrations cannot see tracked changes at all, let alone act on them safely.
More: publishing a folder of markdown as a Drive tree, auditing many docs for style drift, pulling a doc back into your repo with its images β docs/recipes.md.
Or from source:
Then follow the setup below exactly as an installed user would. (npm link symlinks the
gdocs-mcp binary to your build; see CONTRIBUTING.md for the dev workflow.)
You need a Google Cloud OAuth client (one-time). Each user creates their own β this keeps your credentials yours and avoids Google app-verification for the restricted Drive scope.
~/.config/gdocs-mcp/client_secret.json.In a project's .mcp.json (Claude Code) or equivalent:
GDOCS_DEFAULT_ACCOUNT sets which authorized account this project uses by default β so a work project and a personal project can point at different accounts without re-authorizing. Any tool call can override it with an account argument.
Prefer it available in every project? Register once at user scope: claude mcp add gdocs -s user -e GDOCS_DEFAULT_ACCOUNT=you@example.com -- gdocs-mcp. Then a project can pin its own defaults with a .gdocs-mcp.json β both the account and a default folder for new docs:
With a folder set, create_doc files new docs there automatically (an explicit folder argument still overrides). See docs/setup.md for the full resolution order.
You don't have to edit that file by hand β just tell the agent "make damithsc@gmail.com my default account for this project" or "make my Manuscripts folder the default here," and it writes the .gdocs-mcp.json for you via set_project_default (searching for the folder by name if needed).
The table below is the reference. For what to actually ask for, see What you can ask for above, or the full set in docs/recipes.md.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/gdocs-mcp)<a href="https://allmcps.com/mcp/gdocs-mcp"><img src="https://allmcps.com/api/badge/gdocs-mcp?style=directory" alt="Gdocs MCP on AllMCPs" /></a>