Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.dasasian/gdocs-mcp

NPM · @DASASIAN/GDOCS-MCP · SCANNED AUG 7

Treat a Google Doc like a local file: content editing, tracked-changes review, comments, tables.

Available components

+43 this week 64 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security89
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects uuid 9.0.1, reached via google-auth-library > gaxios > uuid. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 43 of 131 dependencies flagged as unhealthy (1 deprecated). View diagnostics → Partial
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 6 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability68
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4731 tokens (~152/item across 31 items; 31 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage93
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 78% of tool parameters carry a description.Partial
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @dasasian/gdocs-mcp

# add to Claude Code
claude mcp add dasasian-gdocs-mcp -- npx -y @dasasian/gdocs-mcp
# add to Codex CLI
codex mcp add dasasian-gdocs-mcp -- npx -y @dasasian/gdocs-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "dasasian-gdocs-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@dasasian/gdocs-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add dasasian-gdocs-mcp --command npx --arg -y --arg @dasasian/gdocs-mcp
# ~/.hermes/config.yaml
mcp_servers:
  dasasian-gdocs-mcp:
    command: "npx"
    args: ["-y", "@dasasian/gdocs-mcp"]
// mcp.json
{
  "mcpServers": {
    "dasasian-gdocs-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@dasasian/gdocs-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 7 Aug 26 +3
    • Security disclosure: fail → pass functional
    • Dependency health: partial → 0.84 functional
  • 5 Aug 26 0
    • CVE-2026-69207 no longer affects this package security
  • 4 Aug 26 0
    • CVE-2026-69207 affects this package: high security
  • 2 Aug 26 +35
    • Known CVEs: unverified → fail security
    • Provenance: fail → unverified security
    • Install scripts: pass → unverified security
    • Malware scan: unverified → pass security
    • Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
    • Tool coverage: 100 → unverified functional
    • Security disclosure: fail → unverified functional
    • License: pass → unverified functional
    • Maintenance: pass → unverified functional
    • MCP protocol: unverified → pass functional
    • Dependency health: unverified → partial functional
    • Schema quality: unverified → excellent functional
    • Licence: MIT functional
  • 1 Aug 26 +5
    • Known CVEs: fail → unverified security
    • Dependency health: partial → unverified functional
    • Tool coverage: unverified → 100 functional
    • First check of Schema quality: unverified functional
    • First check of Schema quality: fail functional
    • First check of Tool coverage: 78 functional
    • First check of Schema quality: fail functional
  • 31 Jul 26 21

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 7 Aug 2026 · Analysed npm/@dasasian/[email protected]

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm
Vulnerabilities 1 finding
ID CVE Severity Vector Fix available
GHSA-w5hq-g745-h8pq CVE-2026-41907 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N yes
Dependencies 131 packages
Packages resolved 131
Deprecated 1
Stale 42
Tree resolution Complete
MCP tools · 31 exposed · ~4,731 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
add_comment ~130

Add a comment to a Google Doc, or reply to an existing comment thread by passing replyTo (a comment id from list_comments). A new comment (no replyTo) is not anchored to specific text — the Docs/Drive API cannot anchor programmatically-created comments.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
contentstringyes
documentIdstringyes
replyTostringa comment id (from list_comments) to reply to; omit to start a new top-level comment

No output schema declared.

No examples provided.

add_tab ~99

Add a new tab to a Google Doc. Returns the new tabId. Optionally set position (index) and parent tab for nesting.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyes
indexnumberposition among tabs
parentTabIdstringnest under this tab
titlestringyes

No output schema declared.

No examples provided.

apply_suggestions ~305

Resolve one or more pending suggestions (from list_suggestions) in ONE atomic update: accept keeps the proposed text, reject keeps the original. Pass one resolution to resolve a single suggestion, or several at once — required for suggestions that overlap or adjoin each other (a "cluster"), which cannot be resolved one at a time without corrupting neighbours. You MUST include every suggestion in any cluster you touch; a partially-resolved cluster is refused (status "incomplete"). documentTitle is checked against the live document first (status "wrong_doc" on mismatch, e.g. an id from a different, similarly-titled document). Copy each suggestion's `preview` from list_suggestions into its `expectedChange` (verified before applying). If the result includes a `conflicts` array, two suggestions genuinely conflicted (one inserts text inside another's deletion, both accepted) — it was auto-resolved by keeping the insertion; surface this to the user as NOT a clean merge.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyesGoogle Doc id
documentTitlestringyesThe document's title, from list_suggestions. Shown for confirmation only.
resolutionsarrayyesone entry per suggestion to resolve
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.

No output schema declared.

No examples provided.

create_doc ~230

Create a new Google Doc with a title and optional initial content (rendered as markdown). Optionally place it in a Drive folder (by folder URL or id); otherwise it goes to My Drive root. For long documents, pass contentFile (a local path) instead of content so the server reads the body directly — retyping a long doc inline can silently drop or fuse text.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
baseDirstringabsolute dir to resolve relative local image paths against (e.g. the markdown file’s folder)
contentstring
contentFilestringpath to a local markdown/text file to use as the body, read directly by the server — preferred for long documents so the body is passed through mechanically rather than retyped inline (which can sile…
folderstringDrive folder URL or id to create the doc in
titlestringyes

No output schema declared.

No examples provided.

delete_tab ~124

Delete a tab by tabId (cascades to child tabs). expectTitle (the tab’s title from list_tabs) is REQUIRED — it is shown in the confirmation and verified against the live tab, so an opaque/stale tabId cannot silently delete the wrong tab.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyes
expectTitlestringyesthe tab’s title (from list_tabs); verified before deleting
tabIdstringyes

No output schema declared.

No examples provided.

download_images ~137

Download every embedded image in a Google Doc to a local folder. Returns the objectId→filename mapping, which correlates with read_doc’s `![](image:<objectId>)` markers so you can rewrite them to local paths (the inverse of publishing).

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
dirstringyesabsolute local folder to save images into (created if missing)
documentIdstringyes
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.

No output schema declared.

No examples provided.

edit_doc ~226

Replace an exact unique snippet of text in a Google Doc (like a local file Edit). old_string is matched markup-tolerantly; ambiguous matches return surrounding context to disambiguate. new_string is interpreted as inline markdown (**bold**, *italic*, `code`, [text](url)). NOTE: this is a direct edit — the change is applied as live text, not a tracked suggestion (the Docs API cannot create suggestions). If the doc has pending suggestions from other reviewers, flag to the user that your edit will sit alongside them as an accepted change.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyesGoogle Doc id
new_stringstringyesreplacement text
old_stringstringyesexact text to replace (quote a unique slice from read_doc)
replace_allbooleanreplace every occurrence (default false)
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.

No output schema declared.

No examples provided.

edit_table ~221

Structurally edit the table containing the given cell text: insert or delete a row or column. `op` picks the operation; `side` picks which side an insert goes on (for rows: after=below (default)/before=above; for columns: after=right (default)/before=left) and is ignored for deletes. Deletes remove the row/column that contains `cell`.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
cellstringyestext identifying a cell in the target table
documentIdstringyes
opstringyesthe structural edit to perform
sidestringfor inserts: which side of `cell` to add on — rows after=below (default)/before=above; columns after=right (default)/before=left. Ignored for deletes.
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.

No output schema declared.

No examples provided.

get_page_setup ~129

Read a doc’s (or tab’s) page setup — margins, page size (in points, plus a preset name if it matches letter/legal/a4/tabloid), and orientation. The read counterpart to set_page_setup; use it to mirror another document’s layout onto a new doc.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyesGoogle Doc id
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.

No output schema declared.

No examples provided.

get_project_config ~36

Show the effective .gdocs-mcp.json defaults (account/folder) for the current working directory, and where the file is.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_style ~219

Read the effective (inherited-resolved) style at a unique text snippet — read_doc’s markdown can’t express these; the read counterpart to set_style. Returns paragraph style (namedStyleType, alignment, spaceBefore/spaceAfter in pt, lineSpacing %, and whether spacing is inherited) and text style (bold/italic/underline/strikethrough, fontSize pt, fontFamily, color hex, link). Use it to diagnose things markdown hides — e.g. an unexpected gap between paragraphs is spacing (spaceAfter>0), not a blank line, and is fixed with set_style’s spaceAfter, not edit_doc.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyes
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.
target_stringstringyesexact text to read the style of (quote a unique slice from read_doc)

No output schema declared.

No examples provided.

insert_image ~184

Insert an inline image from a public URL. Position via at (top/end/or a unique text anchor), size via width/height (points), and align left/center/right. A direct edit, not a tracked suggestion. Note: floating/text-wrapped images are not supported by the Docs API.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
alignstring
atstring"top", "end", or a unique text snippet to insert after (default top)
documentIdstringyes
heightnumberpoints
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.
uristringyespublic image URL
widthnumberpoints

No output schema declared.

No examples provided.

insert_table ~214

Insert a rows×columns table, optionally populated from a 2D array of cell text. Position via at (top/end/or a unique text anchor, default end). A direct edit, not a tracked suggestion.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
atstring"top", "end", or a unique text snippet to insert after (default end)
columnWidthsarrayfixed width per column, in points
columnsintegeryes
dataarrayrow-major cell text, e.g. [["A","B"],["1","2"]]
documentIdstringyes
headerShadestringhex background color for the first row, e.g. #f1f3f4
rowsintegeryes
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.

No output schema declared.

No examples provided.

list_accounts ~20

List the Google accounts that have been authorized for this server.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_comments ~75

List comments on a Google Doc (author display name, quoted text, body, resolved status, replies). Author email is not available via the Drive API.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyesGoogle Doc id

No output schema declared.

No examples provided.

list_folder ~72

List the files and subfolders directly inside a Drive folder (by URL or id). Defaults to My Drive root.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
folderstringfolder URL or id (default My Drive root)

No output schema declared.

No examples provided.

list_permissions ~63

List the permissions on a Google Doc (people, groups, domain, anyone-with-link) with their roles.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyes

No output schema declared.

No examples provided.

list_suggestions ~139

List pending suggestions (tracked changes) in a Google Doc as before→after diffs, in document order. Returns the doc `title` and, per suggestion, a human-readable `preview` — pass these verbatim as documentTitle/expectedChange to apply_suggestion. Note: the Docs API exposes no author or timestamp for suggestions.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyesGoogle Doc id
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.

No output schema declared.

No examples provided.

list_tabs ~58

List the tabs in a Google Doc (tabId, title, index, nesting).

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyes

No output schema declared.

No examples provided.

overwrite_doc ~305

Replace the entire body of a doc (or one tab) with markdown-rendered content. Refuses if comments/suggestions are present (would orphan them) unless force=true. Pass expectTitle (the doc’s title) — shown for confirmation and verified against the live doc before replacing. For long documents, pass contentFile instead of content so the server reads the body directly (retyping a long doc inline can silently drop text). A direct edit, not a tracked suggestion.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
baseDirstringabsolute dir to resolve relative local image paths against (e.g. the markdown file’s folder)
contentstringmarkdown content (or use contentFile)
contentFilestringpath to a local markdown/text file to use as the new body, read directly by the server — preferred for long documents so the body is passed through mechanically rather than retyped inline (which can…
documentIdstringyes
expectTitlestringthe doc’s title; verified before overwriting so a wrong id is refused
forcebooleanproceed even if comments/suggestions would be lost
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.

No output schema declared.

No examples provided.

read_doc ~119

Read a Google Doc as markdown + inline HTML. mode: clean (committed text, default) · tracked (suggestions shown as <ins>/<del>) · accepted · rejected.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyesGoogle Doc id
modestringread mode (default clean)
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.

No output schema declared.

No examples provided.

rename_tab ~63

Rename a tab by tabId.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyes
tabIdstringyes
titlestringyes

No output schema declared.

No examples provided.

resolve_comment ~137

Resolve (or reopen) a comment thread by comment id. Pass expectQuote (a snippet of the comment’s quoted text or body, from list_comments) — shown for confirmation and verified against the live comment, so a wrong/stale id is refused instead of resolving the wrong thread.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
commentIdstringyes
documentIdstringyes
expectQuotestringsnippet of the comment’s quoted text/body; verified before resolving
reopenbooleanreopen instead of resolve

No output schema declared.

No examples provided.

search_drive ~70

Find files/folders whose name contains the query. Optionally restrict to folders or documents.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
querystringyes
typestringrestrict results (default any)

No output schema declared.

No examples provided.

set_page_setup ~255

Set document-level page setup for a doc (or tab): page margins, page size, and orientation — the File > Page setup controls, which set_style can’t reach. Margins and explicit page sizes are in points (72 pt = 1 inch). pageSize is a preset (letter/legal/a4/tabloid) or an explicit {width,height} in points; orientation (portrait/landscape) swaps the page dimensions. A direct change, not a tracked suggestion.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyesGoogle Doc id
marginBottomnumberbottom margin in points
marginLeftnumberleft margin in points
marginRightnumberright margin in points
marginTopnumbertop margin in points (72 = 1 inch)
orientationstringportrait or landscape (orders the page width/height)
pageSizea preset name, or {width,height} in points
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.

No output schema declared.

No examples provided.

set_project_default ~105

Write this project’s defaults to a .gdocs-mcp.json in the current working directory (or update an existing one up the tree). Set a default account and/or a default folder (URL or id) for new docs. To set a folder by name, search_drive for it first and pass its id.

NameTypeReqDescription
accountstringdefault Google account email (must be authorized)
folderstringdefault Drive folder (URL or id) for new docs

No output schema declared.

No examples provided.

set_style ~356

Apply styling to existing text in place (no content change), the way you select text in Docs and apply formatting. Pick ONE target: `from` (+ optional `to`) to style a selection — from the start of the unique `from` snippet to the end of the unique `to` snippet (omit `to` to style just `from`); or `whole_document: true` to style the entire doc/tab (e.g. one font throughout, without per-paragraph calls). Styles: bold/italic/underline/strikethrough, color (hex), fontSize (pt), fontFamily, link, paragraph alignment, and paragraph spacing (spaceBefore/spaceAfter in pt, lineSpacing %). Use inspect_style first to read current spacing/fonts. NOTE: a direct style change, not a tracked suggestion.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyesGoogle Doc id
fromstringstart anchor: a unique text snippet to style from (quote a slice from read_doc). Required unless whole_document is set.
styleobjectyesstyles to apply
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.
tostringoptional end anchor: a unique snippet; styles the whole span from the start of `from` to the end of `to` (a selection). Must appear after `from`.
whole_documentbooleanstyle the entire document (or tab) instead of a selection — e.g. to set one font throughout. Mutually exclusive with from/to.

No output schema declared.

No examples provided.

set_table_style ~230

Edit style/layout of an existing table (located by any cell’s text): cell padding (pt), background color (hex), and column widths (pt). scope selects which cells padding/background hit — table (default), row, column, or cell (the row/column of the matched cell). Fixes e.g. thin left padding that clips the first letter of cells. A direct edit, not a tracked suggestion.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
backgroundColorstringhex, e.g. #f1f3f4
cellstringyestext of any cell in the target table (locates the table)
columnWidthsarrayset specific column widths (points) by column index
documentIdstringyes
paddingobjectcell padding in points
scopestringdefault table
tabstringTarget a specific tab by tabId or title (from list_tabs). Defaults to the first tab.

No output schema declared.

No examples provided.

share_doc ~169

Grant access to a Google Doc. With `email`, share with that person as reader/commenter/writer (optionally sending a notification). Without `email`, set anyone-with-link access to that role, or role "none" to disable link sharing. (To revoke a specific person’s access, use unshare_doc.)

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyes
emailstringperson to share with; omit to set anyone-with-link access instead
notifybooleanwhen sharing with a person, send a notification email (default true)
rolestringaccess level; default writer. "none" (link only) disables link sharing.

No output schema declared.

No examples provided.

unshare_doc ~63

Revoke a person’s direct access to a Google Doc by email.

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyes
emailstringyes

No output schema declared.

No examples provided.

update_doc ~178

Update a Google Doc’s metadata: rename it (name) and/or move it to a Drive folder (folder, by URL or id). Provide name, folder, or both. When moving, pass expectTitle (the doc’s title) — shown for confirmation and verified against the live doc before moving; if it doesn’t match, nothing is changed. (Content edits use edit_doc/overwrite_doc, not this.)

NameTypeReqDescription
accountstringGoogle account email to use. Defaults to GDOCS_DEFAULT_ACCOUNT, or the sole account.
documentIdstringyes
expectTitlestringthe doc’s current title; verified before moving so a wrong id is refused
folderstringDrive folder URL or id to move the doc into
namestringnew name/title for the doc

No output schema declared.

No examples provided.