Google Docs MCP

io.github.A1-x-Tech由 GitHub 账号 A1-x-Tech 发布v1.1.2更新于 Nov 7, 2026

MCP server for the Google Docs API: read and edit documents, styles, tables, images, comments.

已验证STDIO仅桌面效率与工作流文件与存储

概览

AI 生成的概览

本地 MCP 服务器,让助手通过 Google Docs API 读取、编辑、排版、评论并导出 Google 文档。

可以做什么
  • 以紧凑文本块、原始结构或 Markdown 读取文档,并列出标签页与评论串
  • 创建文档、插入或替换文本、全文查找替换、删除区间,以及导入 Markdown
  • 设置字符与段落格式、管理项目符号、插入表格、行列、分页符和图片
  • 导出为 Markdown、TXT、HTML、PDF、DOCX 等格式,二进制文件写入本地路径
  • 创建、回复、解决和删除评论串,或直接发送原始 Docs API 请求
  • 查看连接状态、执行 OAuth 连接流程以及退出登录
适用场景
适合让助手直接在 Google 文档里工作:总结文档、改写某一段、设置标题与列表格式、制作表格、处理评论串,或把文档转成 Markdown 或 PDF。它只面向 Docs,不处理 Sheets、Slides 或一般性的 Drive 文件管理。
运行要求
通过 npm 包以 stdio 在本地运行,需要 Node.js 20+ 和 Google 账号。必须使用 Google OAuth 2.0(API 密钥不够):可在对话中连接并提供 OAuth 客户端 JSON 文件,或设置 GOOGLE_DOCS_CLIENT_ID、GOOGLE_DOCS_CLIENT_SECRET 和 GOOGLE_DOCS_REFRESH_TOKEN(或 GOOGLE_DOCS_ACCESS_TOKEN)。需在 Google Cloud 项目中启用 Google Docs API 和 Drive API,并需要访问 Google 的网络。
安装前请注意
客户端密钥和刷新令牌等同于密码,不要粘贴到对话中或与他人共享的配置文件里。编辑直接作用于线上文档:replace_range、delete_range、replace_all_text、import_markdown 和删除评论具有破坏性,写入在结果不确定时不会重试。import_markdown 会替换整个正文,评论锚点、页眉页脚和额外标签页会丢失。匿名遥测默认开启,可能包含错误片段,可用 ASKADS_TELEMETRY=0 关闭。测试模式的 OAuth 刷新令牌可能在七天后失效。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Google Docs MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[A1] Google Docs MCP

English | Русский

[npm] [Glama] [CI] [License: MIT]

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.

  • 27 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.
  • Connects from the conversation. Say "connect Google Docs": the server walks you through the OAuth client, catches Google's redirect on 127.0.0.1 with PKCE and keeps the tokens itself — no config files, no restart.
  • 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 · Explore use cases · Open 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

You need Node.js 20+ and a Google account. Credentials are not required at install time — the server connects from the conversation.

  1. Add the server to your AI app.
  2. Say "connect Google Docs": the assistant walks you through creating the OAuth client and approving access without editing config files.
  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 \  -- npx -y @a1-x-tech/mcp-google-docs@latest
bash
codex mcp list

Codex MCP documentation

Claude Code
bash
claude mcp add \  --transport stdio --scope user google-docs \  -- npx -y @a1-x-tech/mcp-google-docs@latest
bash
claude mcp list

Claude Code MCP documentation

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"]    }  }}

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

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"]    }  }}

Cursor MCP documentation

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"]    }  }}

Check it with MCP: List Servers.

VS Code MCP documentation

What you can ask it to do

Read and export a document

  • Read this document as text with headings and tables, and summarize it.
  • Show the tab tree of the handbook document.
  • Export the spec as Markdown; save the contract as a PDF file.

Write and edit text

  • Create a meeting-notes document from this Markdown.
  • Insert a summary paragraph after the introduction.
  • Replace every “Q3” with “Q4” across the document.
  • Delete the outdated pricing section.

Format and structure

  • Turn these paragraphs into a numbered list; make this line a level-2 heading.
  • Bold the key terms and link them to the glossary.
  • Insert a 3×4 table for the roadmap and fill in the header row.
  • Add a page break before the appendix; insert an image from a public URL.

Work with comments

  • List the open comment threads and summarize them.
  • Reply to the comment about the deadline and mark it resolved.
  • Add a comment quoting the sentence that needs legal review.

How a document changes

  1. create_document creates a document — empty, or converted from Markdown in one call.
  2. Content is addressed by indexes — UTF-16 positions inside a tab’s body — and every insert or delete shifts all later indexes. The server steers the assistant to take fresh indexes from read_document_text before each edit and to edit from the end of the document backwards.
  3. import_markdown replaces the entire body: comment anchors, positioned objects, headers/footers and extra tabs do not survive the conversion.
  4. Tabs can be read and targeted, but the API cannot create, rename, delete or reorder them.
  5. Comments live in Drive and are managed as threads. A new comment cannot be anchored to a text range — the anchor format is not public — so it attaches at document level, optionally quoting the text it refers to.

Exports are capped at 10 MB and do not include comments or suggestions. Inline images are fetched by Google from a public URL (PNG/JPEG/GIF, up to 50 MB and 25 megapixels); there is no channel for uploading image files.

What can change

OperationWhat happensConfirmation boundary
Read a document, its tabs or commentsReads content and structureNo change
Export a documentWrites a local file when output_path is set; the document itself is untouchedChanges local files only
Create a documentAdds a new documentChanges Google Docs
Insert text, a table, a break or an imageAdds contentChanges a document
Style text or paragraphs, manage bulletsOverwrites formatting on a rangeChanges a document
Replace or delete a range, find and replaceRemoves existing contentDestructive
Replace the whole document with MarkdownReplaces the entire bodyDestructive
Manage commentsCreates, replies, resolves or permanently deletesPotentially destructive
Raw API requestCan call API methods without a dedicated toolPotentially destructive

The AI client controls confirmation prompts. The server marks reads, writes and destructive tools so the client can distinguish an inspection from a live change.

Getting access

Google Docs requires OAuth 2.0; an API key is not enough. There are two ways in, and the first one needs no configuration files.

Connect from the chat (recommended)

Say "connect Google Docs" and the assistant runs the flow with you:

  1. setup_instructions prints the checklist: create or select a Google Cloud project, enable Google Docs API, configure the consent screen and create a Desktop app OAuth client.
  2. Download that client's JSON ("Download JSON") and give the assistant its path — set_client stores it owner-only. The secret never goes through the conversation.
  3. start_login returns a Google consent link. Open it on this machine and approve; the code comes back to a one-shot listener on 127.0.0.1 (PKCE), never through the chat.
  4. finish_login exchanges the code and saves the tokens to ~/.config/mcp-google-docs/credentials.json (mode 0600).

The tokens are re-read on every call, so the connection works immediately — no restart of the AI app. auth_status shows what is connected, logout revokes and deletes it.

Environment variables (CI, unattended installs)

  1. Create or select a Google Cloud project and enable both the Google Docs API and the Google Drive API (export, Markdown conversion and comments go through Drive endpoints).

  2. Configure the OAuth consent screen and create a Desktop app OAuth client.

  3. Authorize the Google account that owns or can edit the documents. The OAuth 2.0 Playground can obtain the refresh token when Use your own OAuth credentials is enabled.

  4. Request both scopes:

    text
    https://www.googleapis.com/auth/documentshttps://www.googleapis.com/auth/drive

    For a narrower setup, drive.file is enough when export, Markdown and comments only touch documents created through this OAuth client, and the read-only pair documents.readonly + drive.readonly is enough for the read-only tools.

Testing-mode OAuth refresh tokens can expire after seven days. Publish the OAuth app, or use an Internal app in a Workspace domain, when you need long-lived access. Treat the client secret and refresh token as passwords.

Configuration

Every variable is optional — with none of them the server connects from the chat.

VariableRequiredDescription
GOOGLE_DOCS_CLIENT_IDNo*OAuth client ID.
GOOGLE_DOCS_CLIENT_SECRETNo*OAuth client secret.
GOOGLE_DOCS_REFRESH_TOKENNo*OAuth refresh token.
GOOGLE_DOCS_ACCESS_TOKENNo*Short-lived alternative to the OAuth trio (~1 hour).
GOOGLE_DOCS_OAUTH_PORTNoFixed loopback port for the in-chat login; useful over SSH port forwarding.
GOOGLE_DOCS_API_BASENoGoogle Docs API base URL override.
GOOGLE_DOCS_DRIVE_API_BASENoDrive API base URL override (export, Markdown, comments).
GOOGLE_DOCS_TIMEOUT_MSNoPer-request timeout; default 60000 ms.
GOOGLE_DOCS_MAX_RETRIESNoTemporary-error retries; default 3.

* Provide either the OAuth trio or an access token.

Data, limits and background work

  • Requests go to Google. The local server refreshes Google OAuth tokens and calls the Docs API; export, Markdown conversion and comments use Drive API endpoints internally. Its anonymous telemetry contains an installation ID, package version, AI client and platform versions, and tool names — never OAuth tokens, document content, tool arguments or prompts. For each tool call it also sends the outcome and, on failure, an excerpt of the error text with e-mails, addresses, tokens, numbers of 4+ digits and quoted text replaced by #; a value from your request can appear in it if the error text contains it. Set ASKADS_TELEMETRY=0 to opt out.
  • Google applies per-minute quotas. On 429, the server backs off and retries; reads also retry after network and 5xx errors, while writes are never replayed after an uncertain failure — a replayed write could duplicate the edit.
  • There is no background polling. The server runs only when called. If your AI app supports scheduled tasks, it can check a document or its comments periodically.

Technical documentation

Support

Found a bug or need a scenario? Create an issue or write in Telegram.


[Две Моны дают пять]

You made it to the end!

来源:README.md,提交 ec9e147

工具

27

auth_status

Google connection status

Shows whether this server is connected to Google: token presence and source (env variables or a stored in-chat login), expiry, the Google account email, granted vs missing OAuth scopes, where the credentials file lives and where the OAuth client comes from. Makes no network calls and never returns the token itself. Call it first when other tools report the server is not connected.

无需输入参数。

setup_instructions

Setup instructions

Step-by-step checklist for connecting this server to Google: creating a Google Cloud project and a Desktop-app OAuth client, publishing the consent screen (mandatory — Testing-mode refresh tokens die after 7 days), downloading the client JSON and handing its PATH to set_client. Works without any credentials; the checklist shortens to 'enable the API + log in' when an OAuth client is already configured (one client serves the whole mcp-google-* line). Never asks the user to paste secrets into the chat.

无需输入参数。

set_client

Save the OAuth client

Saves the OAuth client credentials from the JSON file downloaded from Google Cloud Console ('Download JSON' on a Desktop-app client). Pass the file PATH — the secret must never be pasted into the chat. The client is stored once in the shared ~/.config/mcp-google-auth/client.json (owner-only) and reused by every mcp-google-* server; tokens stay per-server. After this, call start_login.

输入参数path必填

start_login

Start the Google login

First step of connecting from the chat, without editing config files or restarting the client. Returns authorizeUrl — show it to the user as a clickable link and ask them to open it in the browser ON THIS MACHINE, pick the Google account and approve access. A one-shot listener on 127.0.0.1 catches Google's redirect; the code is exchanged locally and never passes through the chat. Does not open the browser itself. The attempt lives 10 minutes; when the browser shows the success page, call finish_login.

无需输入参数。

finish_login

Finish the Google login

Second step: waits up to 20 s for the browser consent to finish, saves the tokens to an owner-only file and verifies the login with a read-only identity call, returning the account email and the granted scopes. After success every tool works immediately — no client restart. If the user granted only part of the requested permissions, the login is still saved and missingScopes lists what will not work. Logging in under a different Google account replaces the previous login (its refresh token is revoked best-effort) and the response carries previousAccountEmail so the change never goes unnoticed.

无需输入参数。

logout

Disconnect from Google

Revokes the stored token at Google (oauth2.googleapis.com/revoke) and deletes the local credentials file. Tokens supplied via env variables are NOT touched — remove them from the MCP client config manually; envTokenStillSet in the response says whether any are still in effect.

无需输入参数。

create_document

Create a document

Creates a new Google Doc and returns its documentId. Without markdown it calls documents.create, which accepts ONLY a title — add content afterwards with insert_text/import_markdown. With markdown, the document is created from that Markdown via Drive conversion (headings, bold/italic, links, lists, tables and code blocks become native Docs formatting) and the result carries id (the documentId), name and mimeType. The document lands in the authorized user's My Drive root; moving or sharing it needs the Drive UI or API, which this server does not cover.

输入参数title必填markdown

get_document

Get document structure

Returns the raw Docs API document: title, documentId, revisionId, per-tab body with every structural element's startIndex/endIndex, textRun styles, tables, lists, inlineObjects (image ids for replace_image), headers/footers (their segment ids) and named styles. This is the exact index map that range tools consume, but it is VERBOSE — for reading content prefer read_document_text, which returns compact blocks with the same indexes. include_tabs_content=true (default) populates all tabs; suggestions_view_mode controls how unresolved suggestions render (default DEFAULT_FOR_CURRENT_ACCESS).

输入参数document_id必填include_tabs_contentsuggestions_view_mode

read_document_text

Read document as text

Returns the document as compact readable blocks, per tab: each paragraph with its text, start/end indexes (UTF-16 code units — the coordinates insert_text/replace_range/delete_range/style tools take), named style (headings) and bullet flag; tables come as cells[row][column] plain text with the table's range. Inline images appear as [image:<objectId>] placeholders (the id feeds replace_image). tab_id limits the output to one tab. Call this before any range edit — every insert/delete shifts later indexes, so indexes from before a mutation are stale.

输入参数tab_iddocument_id必填

list_tabs

List document tabs

Returns the document's tab tree without content: tabId, title, position index and nested childTabs. Use the tabId values to target a specific tab in read_document_text and every editing tool. NOTE: the Docs API cannot create, rename, delete or reorder tabs — that is UI-only; this tool only discovers what exists.

输入参数document_id必填

export_document

Export a document

Exports the document via Drive. Text formats (markdown, txt, html) are returned inline as the tool result — format=markdown is the way to read a doc as Markdown for a round trip with import_markdown. Binary formats (pdf, docx, odt, rtf, epub) require output_path and are written to that local file (the result reports saved_to and bytes); output_path also works for text formats. output_path must be absolute, and an existing file is never overwritten unless overwrite=true. Exports are capped at 10 MB by the Drive API; comments and suggestions are not part of any export. Nothing in Google Docs changes; the only side effect is the local file when output_path is set.

输入参数format必填overwritedocument_id必填output_path

import_markdown

Replace document with Markdown

REPLACES the ENTIRE document content with the given Markdown via Drive conversion — the Markdown round-trip writer paired with export_document format=markdown. Supported Markdown (headings, bold/italic/strikethrough, links, ordered/unordered lists, tables, code blocks, images by URL) becomes native Docs formatting. Everything not expressed in the Markdown is LOST: existing text, comment anchors (comments survive but detach), positioned objects, headers/footers and extra tabs. For surgical edits use replace_range/style tools instead. Returns the Drive file resource (id, name, modifiedTime).

输入参数markdown必填document_id必填

insert_text

Insert text

Inserts plain text at an index (UTF-16 code units; body content starts at index 1 — get indexes from read_document_text). Omit index to append at the end of the body (or of the segment when segment_id is set). Newlines in the text create new paragraphs; the text inherits the style at the insertion point — style it afterwards with style_text/style_paragraph. Every insert shifts all later indexes, so when making several edits, apply them from the END of the document backwards or re-read between edits. Returns the batchUpdate reply with the new revisionId.

输入参数text必填indextab_idsegment_iddocument_id必填

replace_range

Replace a text range

Replaces the content in [start_index, end_index) with new text — one atomic batchUpdate that deletes the range and inserts at its start, so nothing is lost if either step would fail. Get fresh indexes from read_document_text first: indexes are stale after ANY previous edit. The new text takes the style at start_index. Cannot cut across a table cell boundary or delete a paragraph's final newline together with only part of the next paragraph — the API rejects such ranges. An empty replacement is allowed and equals delete_range.

输入参数text必填tab_idend_index必填segment_iddocument_id必填start_index必填

replace_all_text

Find and replace text

Replaces EVERY occurrence of a literal string (no regex) across the whole document, or only in the tabs named by tab_ids. match_case defaults to true. Returns occurrencesChanged in the batchUpdate reply — 0 means the text was not found, not an error. Safer than replace_range for textual substitutions because it does not depend on indexes; use replace_range when position matters (e.g. only one of several occurrences).

输入参数find必填replace必填tab_idsmatch_casedocument_id必填

delete_range

Delete a text range

Deletes the content in [start_index, end_index) — text, inline images, whole tables or any mix, as long as the range does not cut across a table cell boundary. Get fresh indexes from read_document_text first; every delete shifts all later indexes down. Deleting a paragraph's trailing newline merges it with the next paragraph. The tab's final newline cannot be deleted. This is final — there is no undo through the API.

输入参数tab_idend_index必填segment_iddocument_id必填start_index必填

style_text

Style a text range

Applies character formatting to [start_index, end_index): bold, italic, underline, strikethrough, small_caps, font_size (points), font_family (e.g. "Roboto"), foreground_color/background_color (6-digit hex), link_url (empty string removes an existing link) and baseline_offset (superscript/subscript/none). Only the provided fields change (the fields mask is computed); at least one is required. Explicit false turns a toggle off. Get indexes from read_document_text. Styling does not shift indexes, so several style calls can safely reuse the same coordinates.

输入参数bolditalictab_idlink_urlend_index必填font_sizeunderlinesegment_idsmall_capsdocument_id必填font_familystart_index必填另有 4 个

style_paragraph

Style paragraphs

Applies paragraph formatting to every paragraph overlapping [start_index, end_index): named_style (normal_text, title, subtitle, heading_1..heading_6 — the way to make headings), alignment (start/center/end/justified), line_spacing (100 = single, 200 = double), space_above/space_below (points), indent_start/indent_end/indent_first_line (points), keep_with_next and direction (ltr/rtl). Only the provided fields change; at least one is required. A range inside a single paragraph styles that whole paragraph.

输入参数tab_idalignmentdirectionend_index必填indent_endsegment_iddocument_id必填named_stylespace_abovespace_belowstart_index必填indent_start另有 3 个

set_paragraph_bullets

Set or remove list bullets

Turns the paragraphs overlapping [start_index, end_index) into a list, or removes their bullets with remove=true. Presets: disc, arrow, checkbox, star, diamond (bulleted); decimal, decimal_parens, decimal_nested, upper_alpha, upper_roman, zero_decimal (numbered). Nesting follows each paragraph's leading tabs — indent with \t in insert_text before applying bullets to create sub-items. Exactly one of preset or remove is required.

输入参数presetremovetab_idend_index必填document_id必填start_index必填

insert_table

Insert a table

Inserts an empty rows x columns table at an index, or at the end of the body when index is omitted. Fill the cells afterwards: read_document_text shows the new table's range and per-cell layout, then insert_text into each cell (cell content ranges are visible in get_document; each cell holds its own paragraphs). Cell merging, cell background/borders and pinned header rows are not covered by typed tools — use raw_request with mergeTableCells/updateTableCellStyle/pinTableHeaderRows.

输入参数rows必填indextab_idcolumns必填segment_iddocument_id必填

edit_table

Edit table rows and columns

Inserts or deletes a row/column of an existing table. The table is addressed by table_start_index — the table block's start index from read_document_text (its startIndex in get_document). action=insert_row adds next to the cell at row_index/column_index (insert_below, default true); insert_column likewise (insert_right, default true); delete_row / delete_column remove the row/column containing that cell WITH ALL ITS CONTENT — that content is unrecoverable. row_index/column_index are 0-based and default to 0. Deleting shifts every later index in the document; re-read before further edits.

输入参数action必填tab_idrow_indexdocument_id必填column_indexinsert_belowinsert_righttable_start_index必填

insert_break

Insert a page or section break

Inserts a break at an index (or at the end of the body when index is omitted). kind=page starts a new page; kind=section_next_page starts a new section on a new page; kind=section_continuous starts a new section on the same page. Sections carry their own margins/columns — style them via raw_request updateSectionStyle. Breaks cannot be inserted into headers, footers, footnotes or table cells. A break occupies one index position; remove one by deleting its range with delete_range.

输入参数kind必填indextab_idsegment_iddocument_id必填

insert_image

Insert an image

Inserts an inline image fetched from a PUBLIC URL at an index (or at the end of the body when index is omitted). The URL must be reachable by Google without auth, at most 50 MB and 25 megapixels, in PNG, JPEG or GIF; there is no upload channel — a local file must be hosted somewhere public first. width_pt/height_pt set the displayed size in points (omit both for natural size capped to the page width; when only one is given the API scales the other to keep the aspect ratio). Returns the created objectId in the reply — keep it for replace_image. Delete an image by deleting its range with delete_range (it occupies one index).

输入参数uri必填indextab_idwidth_ptheight_ptsegment_iddocument_id必填

replace_image

Replace an image

Replaces an existing image's contents with a new image from a public URL, keeping the original's size and position (the new image is center-cropped to fit). image_object_id is the inline object id — read_document_text shows it inside [image:<objectId>] placeholders, and get_document lists all ids under inlineObjects. The same URL rules as insert_image apply (public, <=50 MB, <=25 MP, PNG/JPEG/GIF).

输入参数uri必填tab_iddocument_id必填image_object_id必填

list_comments

List comments

Lists the document's comment threads via the Drive API: for each comment its id, content, author displayName, createdTime/modifiedTime, resolved flag, the quoted document text it anchors to (quotedFileContent) and its replies (with their action: resolve/reopen). Paginate with page_token; include_deleted=true also returns deleted comments as tombstones. Requires a Drive scope on the OAuth token (comments are Drive data, not Docs API data). Comment ids feed manage_comment.

输入参数page_sizepage_tokendocument_id必填include_deleted

manage_comment

Create, reply to, resolve or delete a comment

Manages comment threads via the Drive API. action=create adds a NEW comment (needs content; optional quoted_text cites a passage — the API cannot anchor a new comment to a live range, that anchor format is not public, so it appears at document level). action=reply adds a reply (needs comment_id + content). action=resolve closes the thread (needs comment_id; optional content posts a closing reply); action=reopen reactivates it. action=delete PERMANENTLY removes the comment and all its replies (needs comment_id) — deleting is final, resolving is the reversible way to close a thread. Get comment_id from list_comments. Requires a Drive scope on the OAuth token.

输入参数action必填contentcomment_iddocument_id必填quoted_text

raw_request

Raw Google Docs API call

Escape hatch to call any Google Docs API v1 path directly, for requests the typed tools don't cover — e.g. a batchUpdate with mergeTableCells, updateTableCellStyle, pinTableHeaderRows, updateSectionStyle, updateDocumentStyle, createHeader/createFooter, createFootnote, named ranges, or several requests at once with writeControl.requiredRevisionId: path "v1/documents/<documentId>:batchUpdate", method POST, body {"requests":[...]}. The path may carry a query string. The Bearer token is added automatically; the method defaults to GET. Only docs.googleapis.com paths are reachable — Drive endpoints are not exposed here.

输入参数bodypath必填method

版本历史

6
  1. v1.1.2最新Nov 5, 2026
  2. v1.1.1Oct 31, 2026
  3. v1.1.0Oct 31, 2026
  4. v1.0.0Sep 23, 2026
  5. v0.2.0Sep 21, 2026
  6. v0.1.0Sep 16, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分