Google Docs

io.github.domdomeggPublished by GitHub account domdomeggv1.2.0Updated Oct 24, 2026

Allow AI systems to read and edit Google Docs.

Overview

AI-generated overview

A local MCP server that lets an AI assistant read and edit Google Docs through the Google Docs API.

What you can do
Read documents: fetch the full raw JSON structure or the plain text of all tabs, including formatting, headers and footers, and styles. Create documents: start a new blank document. Edit documents: append text, insert text at a specific index, find and replace text, or apply multiple edits atomically such as inserting and deleting content, images, tables, page breaks, named ranges and bullet lists.
When to use it
Useful when an assistant should answer questions from a Google Doc, keep a planning or context log updated across sessions, or draft and revise document content from other sources. Pair it with a Drive server if you also need to find, share or delete files.
Requirements
Runs locally via npx (Node.js). Needs Google OAuth credentials: GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET and GOOGLE_ACCESS_TOKEN with Docs scope, plus MCP_TRANSPORT. Requires a Google Cloud project with the Docs API enabled and an OAuth consent screen, and network access to Google. The server listens on localhost port 3000 by default.
Before you install
Requires Google OAuth secrets (GOOGLE_CLIENT_SECRET, GOOGLE_ACCESS_TOKEN) and grants full read and edit access to documents. Editing tools change real documents, including deletions and bulk find-and-replace, so confirm targets before running them. The server proxies OAuth to Google and handles bearer tokens; keep the local endpoint private.

Installation

In SourceWeft

  1. Open Google Docs in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

google-documents-mcp

MCP server for Google Docs - read and edit documents.

Use Cases

Document Q&A: "What does the contract say about termination clauses?" → reads the doc and pulls out the relevant section.

Meeting-to-doc workflow: After a call, reads the Gemini transcript plus follow-up Slack discussion, then updates your team charter with the decisions made.

Release announcement: "Draft a blog post about the new feature based on the GitHub PRs and Slack discussions in #proj-awesome" → synthesizes technical changes into user-facing content.

Daily planning with persistent context: Your AI assistant reads a "planning log" doc at the start of each day, asks about yesterday's progress, helps you identify today's priority, then updates the doc with your plan. Context carries over across sessions - it remembers what you said you'd do and can follow up.

(These are just examples - any workflow that needs document reading or editing can use this. Use in combination with google-drive-mcp for finding files, deleting, comments, and sharing permissions.)

Setup

1. Create Google OAuth credentials

  1. Go to Google Cloud Console
  2. Create a new project (or use existing)
  3. Enable the Google Docs API
  4. Go to APIs & Services → OAuth consent screen, set up consent screen
  5. Go to APIs & Services → Credentials → Create Credentials → OAuth client ID
  6. Choose Web application
  7. Add http://localhost:3000/callback to Authorized redirect URIs
  8. Note your Client ID and Client Secret

2. Run the server

bash
GOOGLE_CLIENT_ID='your-client-id' \GOOGLE_CLIENT_SECRET='your-client-secret' \MCP_TRANSPORT=http \npm start

The server runs on http://localhost:3000 by default. Change with PORT=3001.

3. Add to your MCP client

With the server running, follow the instructions on install-mcp, which generates the right config for your MCP client (Claude Code, Claude Desktop, Cursor, Cline, VS Code, and more).

Architecture

This server acts as an OAuth proxy to Google:

mermaid
graph LR    A[MCP client] <--> B[google-documents-mcp] <--> C[Google OAuth/API]
  1. Server advertises itself as an OAuth authorization server via /.well-known/oauth-authorization-server
  2. /register returns the Google OAuth client credentials
  3. /authorize redirects to Google, encoding the client's callback URL in state
  4. /callback receives the code from Google and forwards to the client's callback
  5. /token proxies token requests to Google, injecting client credentials
  6. /mcp handles MCP requests, using the bearer token to call Google Docs API

The server holds no tokens or state - it just proxies OAuth to Google.

Tools

ToolDescription
document_get_rawGet full raw JSON structure (all tabs, formatting, headers, footers, styles)
document_get_textGet plain text content of all tabs
document_createCreate a new blank document
document_batch_updateApply multiple edits atomically (insert, delete, format, etc.)
document_appendAppend text to end of document
document_insertInsert text at a specific index
document_replaceFind and replace text

batch_update Request Types

The document_batch_update tool supports these operations:

  • insertText - Insert text at a location
  • deleteContentRange - Delete a range of content
  • replaceAllText - Find and replace all occurrences
  • insertInlineImage - Insert an image
  • insertTable - Create a table
  • insertTableRow / insertTableColumn - Add rows/columns to tables
  • deleteTableRow / deleteTableColumn - Remove rows/columns from tables
  • insertPageBreak - Add a page break
  • createNamedRange / deleteNamedRange - Manage named ranges
  • createParagraphBullets / deleteParagraphBullets - Manage bullet lists

Google Docs API Scopes

  • documents - Full access to read and edit documents

Contributing

Pull requests are welcomed on GitHub! To get started:

  1. Install Git and Node.js
  2. Clone the repository
  3. Install dependencies with npm install
  4. Run npm run test to run tests
  5. Build with npm run build

Releases

Versions follow the semantic versioning spec.

To release:

  1. Use npm version <major | minor | patch> to bump the version
  2. Run git push --follow-tags to push with tags
  3. Wait for GitHub Actions to publish to the NPM registry.

Source: README.md at commit 34b15c8

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v1.2.0LatestSep 16, 2026

Score

40% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.