Connects to Google Docs via service account with domain-wide delegation, which means no OAuth consent screens in Workspace environments. Exposes ten tools including list_tabs, read_document (with markdown conversion), append_text, insert_text, replace_text, and batch_update for formatting and complex operations. The main reason this exists is proper tab support. Google added tabs to Docs in late 2024, but most integrations either ignore them or don't set includeTabsContent=True, so they only see the first tab. This one handles nested tabs correctly and lets you target operations by tab ID or title. Requires Python 3.11+ and a service account with Docs and Drive API access.
A Model Context Protocol server for Google Docs with full tab support — something most existing servers get wrong or skip entirely.
Uses Google service accounts with domain-wide delegation, so it works in Workspace orgs without OAuth consent screens.
| Tool | Description |
|---|---|
list_tabs | List all tabs (including nested) in a document |
read_document | Read one tab or all tabs as markdown with proper heading levels |
get_document_info | Lightweight metadata: title, ID, link, tab list |
create_document | Create a new doc with optional initial text |
append_text | Append text to the end of a specific tab |
insert_text | Insert text at a character index in a tab |
replace_text | Find and replace within a tab (or whole doc) |
batch_update | Full batchUpdate access — formatting, tables, images, styles |
list_documents | Search Drive for docs by name |
All tab-targeting tools accept tab_id or tab_title (case-insensitive). The batch_update tool auto-injects tabId into requests so you don't have to.
Google Docs has supported tabs since late 2024, but most MCP servers either:
includeTabsContent=True, so tab content is invisibleThis server handles all of that correctly and converts content to markdown with proper heading structure.
pip install google-docs-mcp-server
Or run directly with uv:
uvx google-docs-mcp-server
https://www.googleapis.com/auth/documents
https://www.googleapis.com/auth/drive.readonly
Add to your MCP config (e.g. ~/.claude/mcp.json or .mcp.json):
{
"mcpServers": {
"google-docs": {
"command": "uvx",
"args": ["google-docs-mcp-server"],
"env": {
"SERVICE_ACCOUNT_PATH": "/path/to/your-service-account-key.json",
"SUBJECT_EMAIL": "you@yourdomain.com"
}
}
}
}
SUBJECT_EMAIL is the Workspace user the service account impersonates.
| Variable | Required | Description |
|---|---|---|
SERVICE_ACCOUNT_PATH | Yes | Path to the service account JSON key file |
SUBJECT_EMAIL | Yes | Email of the Workspace user to impersonate |
MIT
SERVICE_ACCOUNT_PATH*Path to the Google service account JSON key file
SUBJECT_EMAIL*Email of the Workspace user to impersonate via domain-wide delegation
csoai-org/pdf-document-mcp
xt765/mcp-document-converter
io.github.xjtlumedia/markdown-formatter
io.github.ai-aviate/better-notion
suekou/mcp-notion-server
meterlong/mcp-doc