google-docs-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_DOCS_MCP_TOKEN | No | Path to the token file (preferred for standalone use). Defaults to ~/.google-docs-mcp/token.json if not provided. | ~/.google-docs-mcp/token.json |
| GOOGLE_DOCS_MCP_APPS_SCRIPT_ID | No | Optional Apps Script bridge project ID for bookmark_jump=true. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| docs_getA | Read a Google Doc and return its structure as JSON. Returns title, list of paragraphs (with text, style, start/end indices), and the full plain text. Use this before editing to understand the document. |
| docs_search_replaceA | Find text in a Google Doc and replace a specific occurrence. Preserves document history — uses real batchUpdate, not delete-and-rewrite. |
| docs_insert_afterA | Insert a new paragraph immediately after the paragraph containing The anchor is matched case-insensitively as a substring of the paragraph. Rich formatting is ON by default. Set rich=False to insert literal text. |
| docs_insert_beforeA | Insert a new paragraph immediately before the paragraph containing The anchor is matched case-insensitively as a substring of the paragraph. Rich formatting is ON by default. Set rich=False to insert literal text. |
| docs_delete_paragraphA | Delete the paragraph(s) containing Deletes ALL paragraphs that contain the anchor string (case-insensitive). If the anchor matches only one paragraph, only that paragraph is deleted. |
| docs_appendA | Append a new paragraph at the end of a Google Doc. Rich formatting is ON by default. Set rich=False to append literal text. |
| docs_batch_replaceA | Apply multiple find→replace operations atomically in a single batchUpdate. All replacements are applied in one API call (end-of-document first to preserve index validity). Either ALL changes succeed, or none do. |
| docs_add_commentA | Add a comment anchored to specific text in a Google Doc. NOTE: The current implementation uses the Drive comments API plus a Docs named range. In the Docs UI this still shows as "Original content deleted" rather than a proper inline comment highlight. The comments ARE readable via docs_read_comments and the Docs 💬 panel. The next path to investigate is Apps Script automation. The OAuth token must include the script.* scopes, and the Google account must also have the Apps Script API enabled at https://script.google.com/home/usersettings before remote Apps Script project creation/execution will work. By default the tool also appends the matched anchor text into the comment body so the user can understand what was targeted even though the Docs UI does not render a proper inline highlight with the current API path. When bookmark_jump=True, the tool also uses a persistent Apps Script bridge (configured via GOOGLE_DOCS_MCP_APPS_SCRIPT_ID) to create a bookmark at the target text, then appends a #bookmark jump URL into the comment body. |
| docs_reply_to_commentA | Reply to an existing comment on a Google Doc. |
| docs_resolve_commentB | Resolve (close) a comment on a Google Doc, optionally with a final reply. |
| docs_delete_commentB | Delete a comment from a Google Doc. |
| docs_read_commentsA | Read all comments on a Google Doc. Returns each comment with its content, author, anchor status, and whether it's resolved or deleted. Useful for auditing what comments exist and whether they are properly anchored to text. |
| docs_listB | List Google Docs from Drive, optionally filtered by a search query. |
| docs_createA | Create a new Google Doc with an optional initial paragraph of text. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dbuxton/google-docs-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server