Provides tools for reading and editing Google Docs documents, including retrieving document content, creating new documents, and performing batch operations like inserting text, deleting content, formatting, managing tables, and find-and-replace operations.
google-docs-mcp
MCP server for Google Docs - read and edit documents.
Use Cases
Document Q&A: "What does the contract say about termination clauses?" → reads the doc and pulls out the relevant section.
Meeting-to-doc workflow: After a call, reads the Gemini transcript plus follow-up Slack discussion, then updates your team charter with the decisions made.
Release announcement: "Draft a blog post about the new feature based on the GitHub PRs and Slack discussions in #proj-awesome" → synthesizes technical changes into user-facing content.
Daily planning with persistent context: Your AI assistant reads a "planning log" doc at the start of each day, asks about yesterday's progress, helps you identify today's priority, then updates the doc with your plan. Context carries over across sessions - it remembers what you said you'd do and can follow up.
(These are just examples - any workflow that needs document reading or editing can use this. Use in combination with google-drive-mcp for finding files, deleting, comments, and sharing permissions.)
Setup
1. Create Google OAuth credentials
Go to Google Cloud Console
Create a new project (or use existing)
Enable the Google Docs API
Go to APIs & Services → OAuth consent screen, set up consent screen
Go to APIs & Services → Credentials → Create Credentials → OAuth client ID
Choose Web application
Add
http://localhost:3000/callbackto Authorized redirect URIsNote your Client ID and Client Secret
2. Run the server
The server runs on http://localhost:3000 by default. Change with PORT=3001.
3. Add to your MCP client
Architecture
This server acts as an OAuth proxy to Google:
Server advertises itself as an OAuth authorization server via
/.well-known/oauth-authorization-server/registerreturns the Google OAuth client credentials/authorizeredirects to Google, encoding the client's callback URL in state/callbackreceives the code from Google and forwards to the client's callback/tokenproxies token requests to Google, injecting client credentials/mcphandles MCP requests, using the bearer token to call Google Docs API
The server holds no tokens or state - it just proxies OAuth to Google.
Tools
Tool | Description |
| Get full raw JSON structure (all tabs, formatting, headers, footers, styles) |
| Get plain text content of all tabs |
| Create a new blank document |
| Apply multiple edits atomically (insert, delete, format, etc.) |
| Append text to end of document |
| Insert text at a specific index |
| Find and replace text |
batch_update Request Types
The document_batch_update tool supports these operations:
insertText- Insert text at a locationdeleteContentRange- Delete a range of contentreplaceAllText- Find and replace all occurrencesinsertInlineImage- Insert an imageinsertTable- Create a tableinsertTableRow/insertTableColumn- Add rows/columns to tablesdeleteTableRow/deleteTableColumn- Remove rows/columns from tablesinsertPageBreak- Add a page breakcreateNamedRange/deleteNamedRange- Manage named rangescreateParagraphBullets/deleteParagraphBullets- Manage bullet lists
Google Docs API Scopes
documents- Full access to read and edit documents
Contributing
Pull requests are welcomed on GitHub! To get started:
Install Git and Node.js
Clone the repository
Install dependencies with
npm installRun
npm run testto run testsBuild with
npm run build
Releases
Versions follow the semantic versioning spec.
To release:
Use
npm version <major | minor | patch>to bump the versionRun
git push --follow-tagsto push with tagsWait for GitHub Actions to publish to the NPM registry.