Google Docs MCP Server

Create, edit, style, and export Google Docs with the deepest toolset in the server.

Docs is the deepest service in Workspace MCP — nineteen tools, because document editing has real structure. Beyond create_doc and modify_doc_text, there are dedicated tools for paragraph styling, nested lists, tables built from data, headers and footers, inline images, and document tabs.

Two tools matter especially for developer workflows: get_doc_as_markdown exports a formatted document straight to Markdown for your repo, and inspect_doc_structure lets an assistant understand a document’s element tree before attempting a precise edit.

What you can ask

  • “Draft a project brief from these notes with proper heading structure and a summary table”
  • “Export the onboarding doc to Markdown so I can commit it to the wiki”
  • “Find every mention of the old product name across the doc and replace it”

All 19 Google Docs MCP tools

Expand any tool for its full parameter list. Tiers control how many tools the server registers: start lean with --tool-tier core and step up to extended or complete when a workflow needs more.

get_doc_content Core Extract plain text document content. 2
ParameterDescription
document_id requiredID of the document to retrieve.
tab_id Read a single tab instead of the main document body. Take the ID from `inspect_doc_structure`.
create_doc Core Create new documents. 2
ParameterDescription
title requiredThe title for the new document.
content Initial text content for the document.
modify_doc_text Core Modify document text with formatting and links. 12
ParameterDescription
document_id requiredID of the document to update.
start_index requiredStart position for operation (0-based).
end_index End position for text replacement/formatting (if not provided with text, text is inserted).
text New text to insert or replace with (optional - can format existing text without changing it).
bold Whether to make text bold (True/False/None to leave unchanged).
italic Whether to make text italic (True/False/None to leave unchanged).
underline Whether to underline text (True/False/None to leave unchanged).
font_size Font size in points.
font_family Font family name (e.g., "Arial", "Times New Roman").
text_color Foreground text color (#RRGGBB).
background_color Background/highlight color (#RRGGBB).
link_url Hyperlink URL (http/https).
search_docs Extended Search docs by name. 2
ParameterDescription
query requiredSearch query to find documents by name.
page_size Maximum number of results to return.
find_and_replace_doc Extended Find and replace text. 4
ParameterDescription
document_id requiredID of the document to update.
find_text requiredText to search for.
replace_text requiredText to replace with.
match_case Whether to match case exactly.
list_docs_in_folder Extended List docs in a Drive folder. 2
ParameterDescription
folder_id The ID of the folder. Defaults to root.
page_size Maximum number of documents to return.
insert_doc_elements Extended Insert tables, lists, and page breaks. 7
ParameterDescription
document_id requiredID of the document to update.
element_type requiredType of element to insert ("table", "list", "page_break").
index requiredPosition to insert element (0-based).
rows Number of rows for table (required for table).
columns Number of columns for table (required for table).
list_type Type of list ("UNORDERED", "ORDERED") (required for list).
text Initial text content for list items.
update_paragraph_style Extended Apply heading and paragraph styles, including nested lists and per-edge borders. 13
ParameterDescription
document_id requiredDocument ID to modify.
start_index requiredStart position (1-based).
end_index requiredEnd position (exclusive) - should cover the entire paragraph.
heading_level Heading level 0-6 (0 = NORMAL_TEXT, 1 = H1, 2 = H2, etc.).
alignment Text alignment.
line_spacing Line spacing value.
border_edges Border edges to update ('top', 'bottom', 'left', 'right', 'between'). Omit to update all four outer edges.
border_color Border color as #RRGGBB. Defaults to black.
border_width Border width in points. Defaults to 1.
border_padding Border padding in points. Defaults to 4.
border_dash Border dash style ('SOLID', 'DOT', or 'DASH'). Defaults to 'SOLID'.
list_type List type for creating lists.
list_nesting_level Nesting level for lists.
get_doc_as_markdown Extended Export a document as formatted Markdown. 5
ParameterDescription
document_id requiredID of the Google Doc (or full URL).
include_comments Whether to include comments (default: True).
comment_mode How to display comments.
include_resolved Whether to include resolved comments (default: False).
tab_id Export a single tab instead of the main document body. Take the ID from `inspect_doc_structure`.
export_doc_to_pdf Extended Export a doc to PDF. 3
ParameterDescription
document_id requiredID of the Google Doc to export.
pdf_filename Name for the PDF file (optional - if not provided, uses original name + "_PDF").
folder_id Drive folder ID to save PDF in (optional - if not provided, saves in root).
list_document_comments Extended List all document comments.
manage_document_comment Extended Create, reply, or resolve comments.
insert_doc_image Complete Insert images from Drive or URLs. 5
ParameterDescription
document_id requiredID of the document to update.
image_source requiredDrive file ID or public image URL.
index requiredPosition to insert image (0-based).
width Image width in points (optional).
height Image height in points (optional).
update_doc_headers_footers Complete Update headers and footers. 4
ParameterDescription
document_id requiredID of the document to update.
section_type requiredType of section to update ("header" or "footer").
content requiredText content for the header/footer.
header_footer_type Type of header/footer ("DEFAULT", "FIRST_PAGE_ONLY", "EVEN_PAGE").
batch_update_doc Complete Execute multiple doc operations in one call. 2
ParameterDescription
document_id requiredID of the document to update.
operations requiredList of operation dictionaries.
inspect_doc_structure Complete Inspect structural document elements. Both modes also report paragraph layout stats: empty-paragraph counts, up to 100 paragraph ranges with a truncation flag, and whether the last paragraph is empty or a list item. 4
ParameterDescription
document_id requiredID of the document to inspect.
detailed Whether to return detailed structure information. Detailed output adds list membership and object anchors.
tab_id Inspect a single tab instead of the main document body.
preview_chars Maximum characters of paragraph, header, and footer text preview (default 100). Pass `0` or `None` for the full text, which you need to locate a token inside a longer paragraph: add its UTF-16 offset to the paragraph's `start_index`.
create_table_with_data Complete Create populated tables. 4
ParameterDescription
document_id requiredID of the document to update.
table_data required2D list of strings - EXACT format: [["col1", "col2"], ["row1col1", "row1col2"]].
index requiredDocument position (get from inspect_doc_structure 'total_length').
bold_headers Whether to make first row bold (default: true).
debug_table_structure Complete Debug table structures. 2
ParameterDescription
document_id requiredID of the document to inspect.
table_index Which table to debug (0 = first table, 1 = second table, etc.).
manage_doc_tab Complete Create, rename, delete, or populate document tabs from markdown. 8
ParameterDescription
document_id requiredID of the document to update.
action required'create', 'rename', 'delete', or 'populate_from_markdown'.
tab_id Tab ID (required for rename, delete, and populate).
title Tab title (required for create and rename).
index Position for the new tab.
parent_tab_id Parent tab ID for nested tabs.
markdown_text Markdown content for populate_from_markdown.
replace_existing Whether populate replaces existing tab content (default: True).

Every service in one reference: full API documentation →

OAuth scopes

The server requests only the scopes for the services you enable. In read-only mode it requests just the readonly variants and skips registering write tools entirely.

  • documents.readonly read document content and structure
  • documents create and edit documents
  • drive.readonly search and list docs in folders

Google Docs MCP questions

Can it produce properly formatted documents, not just plain text?
Yes — formatting is most of the toolset. update_paragraph_style applies headings and nested lists, insert_doc_elements adds tables and page breaks, create_table_with_data builds populated tables in one call, and modify_doc_text handles inline formatting and links.
How do I get a Google Doc into Markdown for a repo or wiki?
get_doc_as_markdown exports the document with formatting preserved. The reverse direction works too: the Drive service’s import_to_google_doc turns Markdown into an editable Doc.
Can an assistant work with comments and suggestions?
list_document_comments reads every comment thread, and manage_document_comment can create, reply to, or resolve them — useful for agents doing a review pass on a shared draft.
What stops an edit from landing in the wrong place?
inspect_doc_structure exposes the document’s element tree so the assistant can locate the exact paragraph, table cell, or index before editing, and debug_table_structure does the same for complex tables.