{
  "markdown": "# Google Docs MCP Server\n\nA [Model Context Protocol](https://modelcontextprotocol.io/) server for Google Docs with **full tab support** — something most existing servers get wrong or skip entirely.\n\nUses Google service accounts with domain-wide delegation, so it works in Workspace orgs without OAuth consent screens.\n\n<!-- mcp-name: io.github.gigabrain-observer/google-docs-mcp-server -->\n\n## What it does\n\n| Tool | Description |\n|------|-------------|\n| `list_tabs` | List all tabs (including nested) in a document |\n| `read_document` | Read one tab or all tabs as markdown with proper heading levels |\n| `get_document_info` | Lightweight metadata: title, ID, link, tab list |\n| `create_document` | Create a new doc with optional initial text |\n| `append_text` | Append text to the end of a specific tab |\n| `insert_text` | Insert text at a character index in a tab |\n| `replace_text` | Find and replace within a tab (or whole doc) |\n| `batch_update` | Full batchUpdate access — formatting, tables, images, styles |\n| `list_documents` | Search Drive for docs by name |\n\nAll 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.\n\n## Why this exists\n\nGoogle Docs has supported [tabs](https://workspaceupdates.googleblog.com/2024/10/google-docs-tabs.html) since late 2024, but most MCP servers either:\n- Ignore tabs entirely (only read the first tab)\n- Don't use `includeTabsContent=True`, so tab content is invisible\n- Don't handle nested tabs\n\nThis server handles all of that correctly and converts content to markdown with proper heading structure.\n\n## Install\n\n```bash\npip install google-docs-mcp-server\n```\n\nOr run directly with [uv](https://docs.astral.sh/uv/):\n\n```bash\nuvx google-docs-mcp-server\n```\n\n## Prerequisites\n\n- Python 3.11+\n- A Google Cloud service account with domain-wide delegation\n\n## Setup\n\n### 1. Create a GCP service account\n\n1. Go to [Google Cloud Console](https://console.cloud.google.com/) and create (or select) a project\n2. Enable the **Google Docs API** and **Google Drive API**\n3. Create a service account under **IAM & Admin > Service Accounts**\n4. Create a JSON key and download it\n\n### 2. Enable domain-wide delegation\n\n1. In GCP, on the service account details page, enable **Domain-wide Delegation** and note the Client ID\n2. In [Google Workspace Admin](https://admin.google.com/) > Security > API Controls > Domain-wide Delegation\n3. Add the Client ID with these scopes:\n   ```\n   https://www.googleapis.com/auth/documents\n   https://www.googleapis.com/auth/drive.readonly\n   ```\n\n### 3. Configure your MCP client\n\nAdd to your MCP config (e.g. `~/.claude/mcp.json` or `.mcp.json`):\n\n```json\n{\n  \"mcpServers\": {\n    \"google-docs\": {\n      \"command\": \"uvx\",\n      \"args\": [\"google-docs-mcp-server\"],\n      \"env\": {\n        \"SERVICE_ACCOUNT_PATH\": \"/path/to/your-service-account-key.json\",\n        \"SUBJECT_EMAIL\": \"you@yourdomain.com\"\n      }\n    }\n  }\n}\n```\n\n`SUBJECT_EMAIL` is the Workspace user the service account impersonates.\n\n## Environment variables\n\n| Variable | Required | Description |\n|----------|----------|-------------|\n| `SERVICE_ACCOUNT_PATH` | Yes | Path to the service account JSON key file |\n| `SUBJECT_EMAIL` | Yes | Email of the Workspace user to impersonate |\n\n## License\n\nMIT\n",
  "bytes": 3333,
  "sha": "28313ac04d4d794105d4bc2cc6ffc7ec980022c966b541b20c9925ffedfdcefa",
  "repo_slug": "gigabrainobserver/google-docs-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_gigabrain_observer_google_docs_ea0f1ffc/readme"
}