Google Docs MCP server with full tab support, markdown extraction, and batch updates.
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-serverOr run directly with uv:
uvx google-docs-mcp-serverhttps://www.googleapis.com/auth/documents
https://www.googleapis.com/auth/drive.readonlyAdd 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