MCP server: One MCP server.

Google Docs

@gigabrain-observerMCP server · External

Google Docs MCP server with full tab support, markdown extraction, and batch updates.

Office documentsv0.1.1MITPython
Freeno charge per call

Runs on your machine from its package; the steps are below.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: creates or changes data: records, files, settings.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally over stdio

This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).

PyPIgoogle-docs-mcp-serverv0.1.1

Run

uvx google-docs-mcp-server

MCP client config

{
  "mcpServers": {
    "google-docs": {
      "command": "uvx",
      "args": [
        "google-docs-mcp-server"
      ]
    }
  }
}
README2 min read

Google Docs MCP Server

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.

What it does

ToolDescription
list_tabsList all tabs (including nested) in a document
read_documentRead one tab or all tabs as markdown with proper heading levels
get_document_infoLightweight metadata: title, ID, link, tab list
create_documentCreate a new doc with optional initial text
append_textAppend text to the end of a specific tab
insert_textInsert text at a character index in a tab
replace_textFind and replace within a tab (or whole doc)
batch_updateFull batchUpdate access — formatting, tables, images, styles
list_documentsSearch 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.

Why this exists

Google Docs has supported tabs since late 2024, but most MCP servers either:

  • Ignore tabs entirely (only read the first tab)
  • Don't use includeTabsContent=True, so tab content is invisible
  • Don't handle nested tabs

This server handles all of that correctly and converts content to markdown with proper heading structure.

Install

bash
pip install google-docs-mcp-server

Or run directly with uv:

bash
uvx google-docs-mcp-server

Prerequisites

  • Python 3.11+
  • A Google Cloud service account with domain-wide delegation

Setup

1. Create a GCP service account

  1. Go to Google Cloud Console and create (or select) a project
  2. Enable the Google Docs API and Google Drive API
  3. Create a service account under IAM & Admin > Service Accounts
  4. Create a JSON key and download it

2. Enable domain-wide delegation

  1. In GCP, on the service account details page, enable Domain-wide Delegation and note the Client ID
  2. In Google Workspace Admin > Security > API Controls > Domain-wide Delegation
  3. Add the Client ID with these scopes:
    https://www.googleapis.com/auth/documents
    https://www.googleapis.com/auth/drive.readonly
    

3. Configure your MCP client

Add to your MCP config (e.g. ~/.claude/mcp.json or .mcp.json):

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.

Environment variables

VariableRequiredDescription
SERVICE_ACCOUNT_PATHYesPath to the service account JSON key file
SUBJECT_EMAILYesEmail of the Workspace user to impersonate

License

MIT

Similar modules

Browse Office documents