a-bonus/google-docs-mcp
google-docs-mcp is hosted online, so all tools can be tested directly either in theInspector tabor in theOnline Client.
If you are the rightful owner of google-docs-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The Ultimate Google Docs MCP Server connects Claude Desktop or other MCP clients to Google Docs, enabling advanced document manipulation through the Model Context Protocol (MCP) and the fastmcp library.
Try google-docs-mcp with chat:
Server config via mcphub
Traditional api access examples
Path-based authentication
Google Docs, Sheets & Drive MCP Server
Connect Claude Desktop, Cursor, or any MCP client to your Google Docs, Google Sheets, and Google Drive.
Quick Start
1. Create a Google Cloud OAuth Client
- Go to the Google Cloud Console
- Create or select a project
- Enable the Google Docs API, Google Sheets API, and Google Drive API
- Configure the OAuth consent screen (External, add your email as a test user)
- Create an OAuth client ID (Desktop app type)
- Copy the Client ID and Client Secret from the confirmation screen
Need more detail? See step-by-step instructions at the bottom of this page.
2. Authorize
GOOGLE_CLIENT_ID="your-client-id" \
GOOGLE_CLIENT_SECRET="your-client-secret" \
npx -y google-docs-mcp auth
This opens your browser for Google authorization. After you approve, the refresh token is saved to ~/.config/google-docs-mcp/token.json.
3. Add to Your MCP Client
Claude Desktop / Cursor / Windsurf:
{
"mcpServers": {
"google-docs": {
"command": "npx",
"args": ["-y", "google-docs-mcp"],
"env": {
"GOOGLE_CLIENT_ID": "your-client-id",
"GOOGLE_CLIENT_SECRET": "your-client-secret"
}
}
}
}
The server starts automatically when your MCP client needs it.
What Can It Do?
Google Docs
| Tool | Description |
|---|---|
readDocument | Read content as plain text, JSON, or markdown |
appendText | Append text to a document |
insertText | Insert text at a specific position |
deleteRange | Remove content by index range |
listDocumentTabs | List all tabs in a multi-tab document |
replaceDocumentWithMarkdown | Replace entire document content from markdown |
appendMarkdownToGoogleDoc | Append markdown-formatted content |
applyTextStyle | Bold, italic, colors, font size, links |
applyParagraphStyle | Alignment, spacing, indentation |
insertTable | Create tables |
insertPageBreak | Insert page breaks |
insertImage | Insert images from URLs or local files |
Comments
| Tool | Description |
|---|---|
listComments | View all comments with author and date |
getComment | Get a specific comment with replies |
addComment | Create a comment anchored to text |
replyToComment | Reply to an existing comment |
resolveComment | Mark a comment as resolved |
deleteComment | Remove a comment |
Google Sheets
| Tool | Description |
|---|---|
readSpreadsheet | Read data from a range (A1 notation) |
writeSpreadsheet | Write data to a range |
appendSpreadsheetRows | Add rows to a sheet |
clearSpreadsheetRange | Clear cell values |
createSpreadsheet | Create a new spreadsheet |
addSpreadsheetSheet | Add a sheet/tab |
getSpreadsheetInfo | Get metadata and sheet list |
listGoogleSheets | Find spreadsheets |
formatCells | Bold, colors, alignment on cell ranges |
freezeRowsAndColumns | Pin header rows/columns |
setDropdownValidation | Add/remove dropdown lists on cells |
Google Drive
| Tool | Description |
|---|---|
listDocuments | List documents, optionally filtered by date |
searchGoogleDocs | Search by name or content |
getDocumentInfo | Get document metadata |
createDocument | Create a new document |
createFromTemplate | Create from an existing template |
createFolder | Create a folder |
listFolderContents | List folder contents |
getFolderInfo | Get folder metadata |
moveFile | Move a file to another folder |
copyFile | Duplicate a file |
renameFile | Rename a file |
deleteFile | Move to trash or permanently delete |
Usage Examples
Google Docs
"Read document ABC123 as markdown"
"Append 'Meeting notes for today' to document ABC123"
"Make the text 'Important' bold and red in document ABC123"
"Replace the entire document with this markdown: # Title\n\nNew content here"
"Insert a 3x4 table at index 50 in document ABC123"
Google Sheets
"Read range A1:D10 from spreadsheet XYZ789"
"Write [[Name, Score], [Alice, 95], [Bob, 87]] to range A1 in spreadsheet XYZ789"
"Create a new spreadsheet titled 'Q1 Report'"
"Format row 1 as bold with a light blue background in spreadsheet XYZ789"
"Freeze the first row in spreadsheet XYZ789"
"Add a dropdown with options [Open, In Progress, Done] to range C2:C100"
Google Drive
"List my 10 most recent Google Docs"
"Search for documents containing 'project proposal'"
"Create a folder called 'Meeting Notes' and move document ABC123 into it"
Markdown Workflow
The server supports a full round-trip markdown workflow:
- Read a document as markdown:
readDocumentwithformat='markdown' - Edit the markdown locally
- Push changes back:
replaceDocumentWithMarkdown
Supported: headings, bold, italic, strikethrough, links, bullet/numbered lists, horizontal rules.
Authentication Options
OAuth (Default)
Pass your Google Cloud OAuth client credentials as environment variables:
| Variable | Description |
|---|---|
GOOGLE_CLIENT_ID | OAuth client ID from Google Cloud Console |
GOOGLE_CLIENT_SECRET | OAuth client secret from Google Cloud Console |
Service Account (Enterprise)
For Google Workspace with domain-wide delegation:
| Variable | Description |
|---|---|
SERVICE_ACCOUNT_PATH | Path to the service account JSON key file |
GOOGLE_IMPERSONATE_USER | Email of the user to impersonate (optional) |
{
"mcpServers": {
"google-docs": {
"command": "npx",
"args": ["-y", "google-docs-mcp"],
"env": {
"SERVICE_ACCOUNT_PATH": "/path/to/service-account-key.json",
"GOOGLE_IMPERSONATE_USER": "user@yourdomain.com"
}
}
}
}
Token Storage
OAuth refresh tokens are stored in ~/.config/google-docs-mcp/token.json (respects XDG_CONFIG_HOME). To re-authorize, run the auth command again or delete the token file.
Known Limitations
- Comment anchoring: Programmatically created comments appear in the comment list but aren't visibly anchored to text in the Google Docs UI. This is a Google Drive API limitation.
- Comment resolution: Resolved status may not persist in the Google Docs UI.
- Converted documents: Docs converted from Word may not support all API operations.
- Markdown tables/images: Not yet supported in the markdown-to-Docs conversion.
- Deeply nested lists: Lists with 3+ nesting levels may have formatting quirks.
Troubleshooting
- Server won't start:
- Verify
GOOGLE_CLIENT_IDandGOOGLE_CLIENT_SECRETare set in theenvblock of your MCP config. - Try running manually:
npx google-docs-mcpand check stderr for errors.
- Verify
- Authorization errors:
- Ensure Docs, Sheets, and Drive APIs are enabled in Google Cloud Console.
- Confirm your email is listed as a Test User on the OAuth consent screen.
- Re-authorize:
npx google-docs-mcp auth - Delete
~/.config/google-docs-mcp/token.jsonand re-authorize if upgrading.
- Tab errors:
- Use
listDocumentTabsto see available tab IDs. - Omit
tabIdfor single-tab documents.
- Use
Google Cloud Setup Details
Step-by-step Google Cloud Console instructions
- Go to Google Cloud Console: Open console.cloud.google.com
- Create or Select a Project: Click the project dropdown > "NEW PROJECT". Name it (e.g., "MCP Docs Server") and click "CREATE".
- Enable APIs:
- Navigate to "APIs & Services" > "Library"
- Search for and enable: Google Docs API, Google Sheets API, Google Drive API
- Configure OAuth Consent Screen:
- Go to "APIs & Services" > "OAuth consent screen"
- Choose "External" and click "CREATE"
- Fill in: App name, User support email, Developer contact email
- Click "SAVE AND CONTINUE"
- Add scopes:
documents,spreadsheets,drive - Click "SAVE AND CONTINUE"
- Add your Google email as a Test User
- Click "SAVE AND CONTINUE"
- Create Credentials:
- Go to "APIs & Services" > "Credentials"
- Click "+ CREATE CREDENTIALS" > "OAuth client ID"
- Application type: "Desktop app"
- Click "CREATE"
- Copy the Client ID and Client Secret
Contributing
Contributions are welcome! See for development setup, architecture overview, and guidelines.
License
MIT -- see for details.