# Google Docs MCP
**English** | [Русский](./README.ru.md)
[](https://www.npmjs.com/package/@a1-x-tech/mcp-google-docs)
[](https://glama.ai/mcp/servers/A1-x-Tech/mcp-google-docs)
[](https://github.com/A1-x-Tech/mcp-google-docs/actions/workflows/ci.yml)
[](./LICENSE)
**A1 Google Docs MCP** lets an AI app read and edit Google Docs in plain language. Read a document as text or Markdown, change an exact passage, style headings, lists and tables, work through comment threads and export the result to PDF or DOCX.
It uses the Google Docs API with your Google account. It edits by exact index ranges rather than by guesswork, and makes the limits of the Docs API explicit instead of implying that every document task is possible.
- **21 tools.** Read a document as text, structure or Markdown, edit exact ranges, style characters and paragraphs, manage lists, tables, breaks, images and comment threads, and export to PDF, DOCX and more.
- **Edits are surgical.** Changes address exact index ranges, and the server steers the assistant to re-read the document before every edit, because each change shifts the indexes after it.
- **Markdown both ways.** Create a document from Markdown or export to Markdown, PDF, DOCX and other formats; replacing a whole document with Markdown is a separate, explicitly destructive step.
- **No hidden Drive surface.** Export, Markdown conversion and comments use Drive endpoints internally, but the server exposes no general-purpose Drive tool.
Start with a read-only question:
> Read the launch plan document and summarize its unresolved comment threads.
[Connect the server](#quick-start) · [Explore use cases](#what-you-can-ask-it-to-do) · [Open technical documentation](#technical-documentation)
---
## See it work in a minute
> **You:** Show me the text and comments of the launch plan document.
>
> **Assistant:** Reads the document as compact text blocks and lists its comment threads. Nothing changes.
>
> **You:** Rewrite the “Timeline” paragraph to say the beta starts on March 3.
>
> **Assistant:** Shows the exact range it will replace and the proposed text, then asks for confirmation before editing.
>
> **You:** Confirm.
>
> **Assistant:** Replaces that one range. The rest of the document, its formatting and its comments stay as they were.
## Contents
- [Quick start](#quick-start)
- [What you can ask it to do](#what-you-can-ask-it-to-do)
- [How a document changes](#how-a-document-changes)
- [What can change](#what-can-change)
- [Getting access](#getting-access)
- [Configuration](#configuration)
- [Data, limits and background work](#data-limits-and-background-work)
- [Technical documentation](#technical-documentation)
- [Support](#support)
## Quick start
You need Node.js 20+, a Google account and OAuth credentials from a Google Cloud project with the Google Docs API and the Google Drive API enabled.
1. [Prepare Google OAuth access](#getting-access).
2. Add the server to your AI app.
3. Ask the read-only question above.
Codex
**In the app:** open **Settings → MCP servers**, select **Add server**, choose **STDIO**, enter the command `npx -y @a1-x-tech/mcp-google-docs@latest` and environment variables `GOOGLE_DOCS_CLIENT_ID`, `GOOGLE_DOCS_CLIENT_SECRET`, `GOOGLE_DOCS_REFRESH_TOKEN`, then select **Save** and **Restart**.
**From the command line:**
```bash
codex mcp add google-docs \
--env GOOGLE_DOCS_CLIENT_ID=your_client_id \
--env GOOGLE_DOCS_CLIENT_SECRET=your_client_secret \
--env GOOGLE_DOCS_REFRESH_TOKEN=your_refresh_token \
-- npx -y @a1-x-tech/mcp-google-docs@latest
```
```bash
codex mcp list
```
[Codex MCP documentation](https://learn.chatgpt.com/docs/extend/mcp?surface=cli)
Claude Code
```bash
claude mcp add \
--env GOOGLE_DOCS_CLIENT_ID=your_client_id \
--env GOOGLE_DOCS_CLIENT_SECRET=your_client_secret \
--env GOOGLE_DOCS_REFRESH_TOKEN=your_refresh_token \
--transport stdio --scope user google-docs \
-- npx -y @a1-x-tech/mcp-google-docs@latest
```
```bash
claude mcp list
```
[Claude Code MCP documentation](https://code.claude.com/docs/en/mcp)
Claude Desktop
The current official path is **Settings → Extensions**. For a custom desktop extension, open **Advanced settings → Extension Developer → Install Extension…**, select a `.mcpb` file and follow the prompts.
This repository currently publishes an npm stdio package and does not contain a `.mcpb` bundle. For Claude Desktop builds that still support local configuration, use the following JSON stdio configuration as a fallback:
```json
{
"mcpServers": {
"google-docs": {
"command": "npx",
"args": ["-y", "@a1-x-tech/mcp-google-docs@latest"],
"env": {
"GOOGLE_DOCS_CLIENT_ID": "your_client_id",
"GOOGLE_DOCS_CLIENT_SECRET": "your_client_secret",
"GOOGLE_DOCS_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
```
In those builds, save it to `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS or `%APPDATA%\Claude\claude_desktop_config.json` on Windows.
[Claude Desktop MCP documentation](https://support.claude.com/en/articles/10949351-getting-started-with-local-mcp-servers-on-claude-desktop)
Cursor
Add this to `~/.cursor/mcp.json` on macOS/Linux or `%USERPROFILE%\.cursor\mcp.json` on Windows:
```json
{
"mcpServers": {
"google-docs": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@a1-x-tech/mcp-google-docs@latest"],
"env": {
"GOOGLE_DOCS_CLIENT_ID": "your_client_id",
"GOOGLE_DOCS_CLIENT_SECRET": "your_client_secret",
"GOOGLE_DOCS_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}
```
[Cursor MCP documentation](https://cursor.com/docs/mcp)
VS Code
Run **MCP: Open User Configuration** and add:
```json
{
"servers": {
"google-docs": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@a1-x-tech/mcp-google-docs@latest"],
"env": {
"GOOGLE_DOCS_CLIENT_ID": "${input:docs_client_id}",
"GOOGLE_DOCS_CLIENT_SECRET": "${input:docs_client_secret}",
"GOOGLE_DOCS_REFRESH_TOKEN": "${input:docs_refresh_token}"
}
}
},
"inputs": [
{ "type": "promptString", "id": "docs_client_id", "description": "Google OAuth client ID" },
{ "type": "promptString", "id": "docs_client_secret", "description": "Google OAuth client secret", "password": true },
{ "type": "promptString", "id": "docs_refresh_token", "description": "Google OAuth refresh token", "password": true }
]
}
```
Check it with **MCP: List Servers**.
[VS Code MCP documentation](https://code.visualstudio.com/docs/agent-customization/mcp-servers)
You made it to the end!