Integrate Google Docs MCP server into your Slack workspace for instant access to your AI agent.
Tools that your AI agent can use through this MCP server to interact with Google Docs
Create a table and fill it with data in a single step. Provide the entire table (all rows and columns, including a header row) at once. Use this instead of inserting cells or text one at a time. The action places every value in the correct cell for you. Pass Table Data as a JSON array of arrays, one inner array per row, header row first when Has Header Row is set, e.g. [["Name","Role"],["Ada","Engineer"]]. Use Find Document to resolve a document's name to its ID, or Insert Table instead if you only need an empty grid to fill in later. In a multi-tab document, set Tab ID to choose which tab receives the table — without it the table goes into the document's first tab; use List Tabs to get the IDs. Note: a table written this way is always static — the Google Docs API does not create or preserve a live link to a Google Sheet, even when this replaces a Sheets-linked table. See the documentation
Find and replace all occurrences of a string in a Google Doc. Set Replacement Format to markdown to convert Markdown in the replacement into native Google Docs formatting. Use Find Document to resolve a document's name to its ID. Returns the number of replacements made. In a multi-tab document the replacement runs across every tab by default; set Tab ID to confine it to one tab, using List Tabs to get the IDs. See the documentation
Replace an existing inline image in a Google Doc with a different image, keeping its position and size. The replacement URL must be publicly reachable (Google fetches it server-side) and point to a PNG, JPEG, or GIF. Use Find Document to resolve a document's name to its ID, then Get Document to list the document's images - each key of the response's inlineObjects map is an Image ID. Use Insert Image instead to add a new image rather than swap one out. Works on multi-tab documents: pass a Tab ID, or leave it blank and the tab holding the image is found automatically. See the documentation
Remove bullets or numbering from list paragraphs in a Google Doc, leaving the text in place. Locate the paragraphs with Find Text, or pass an explicit Start Index and End Index. Every paragraph the range touches is affected. Use Find Document to resolve a document's name to its ID. See the documentation
List the tabs in a Google Doc — each tab's ID, title, position and nesting. A Google Doc can hold many tabs, and an omitted Tab ID means different things per operation: content writes (Insert Text, Insert Table, Insert Image, Insert Page Break, Write Table, Delete Table) go to the first tab; Replace Text replaces in every tab; the styling tools (Format Text, Format Paragraph, Format Table Cell, Apply Bullets, Remove Bullets) cover every tab when the target is located by Find Text, but only the first tab when given explicit indices. So call this first whenever the job names a tab ("add this to the Budget tab") or the document might have more than one. Returns {documentId, tabCount, tabs: [{tabId, title, index, nestingLevel, parentTabId}]}, in document order, with each parent followed by its nested child tabs. Pass a tabId from this list to Get Document to read one tab, or to Insert Text, Write Table, Insert Image, Insert Table, Insert Page Break, Delete Table or Replace Text to edit one. Use Find Document to resolve a document's name to its ID. This tool set can list tabs, add a tab (Create Tab) and read or write a named tab; it cannot rename, reorder or delete an existing tab — say so plainly rather than attempting a workaround. See the documentation
List the comments on a Google Doc, including each comment's author, plain text and HTML content, the document text it is anchored to, whether it is resolved, and its full reply thread. Comments on a Doc are served by the Drive API, so the document ID doubles as the file ID. Use Find Document first to resolve a document's name to its ID. See the documentation
Insert text into a Google Doc at the beginning, end, or a specific character index. Use Find Document to resolve a document's name to its ID. To append text to the end of a doc, use position: end (the default). In a multi-tab document, set Tab ID to choose which tab receives the text — without it the text goes into the document's first tab; use List Tabs to get the IDs. See the documentation
Insert an empty table with the given number of rows and columns into a Google Doc. If you already have the data, use Write Table instead so you don't have to fill cells one by one. Use Find Document to resolve a document's name to its ID. In a multi-tab document, set Tab ID to choose which tab receives the table — without it the table goes into the document's first tab; use List Tabs to get the IDs. See the documentation
Insert a page break into a Google Doc at the beginning, end, or a specific character index. Use Find Document to resolve a document's name to its ID. In a multi-tab document, set Tab ID to choose which tab receives the page break — without it the break goes into the document's first tab; use List Tabs to get the IDs. See the documentation
Insert an inline image into a Google Doc from a publicly reachable image URL. The URL must be publicly accessible (Google fetches it server-side) and point to a PNG, JPEG, or GIF. Use Find Document to resolve a document's name to its ID. In a multi-tab document, set Tab ID to choose which tab receives the image — without it the image goes into the document's first tab; use List Tabs to get the IDs. See the documentation
Get the identity (display name and email) of the currently authenticated Google account. Use this to answer "who am I" questions and to attribute documents to the current user. Resolves via the Drive about.get endpoint (no extra OAuth scope required). See the documentation
Get the full text content and structure of a Google Doc by its ID. Returns the document body plus a flattened textContent field for easy reading. A Google Doc can hold several tabs: body/textContent are always the first tab's content, and every tab is listed in tabs (with each tab's own textContent when the document has more than one), so a single call shows all of the document's text. Pass a Tab ID from that list to get one tab's full structure on its own. Optionally supply a fields mask to request a partial (e.g. metadata-only) response and skip the body-text enrichment. Use Find Document first to resolve a document's name to its ID. See the documentation
Apply character formatting (bold, italic, underline, strikethrough, font, size, color, link) to text in a Google Doc. Locate the text with Find Text, or pass an explicit Start Index and End Index. Use Find Document to resolve a document's name to its ID. See the documentation
Set the background, borders, padding, or vertical alignment of table cells in a Google Doc. Identify the table with Find Table Text, Table Index, or leave both blank when the document has only one table. Styles every cell unless Row Index and Column Index name a starting cell. Use Find Document to resolve a document's name to its ID. See the documentation
Apply paragraph formatting (heading style, alignment, line spacing, indentation) in a Google Doc. Locate the paragraph with Find Text, or pass an explicit Start Index and End Index. Google Docs applies paragraph styles to whole paragraphs, so every paragraph the range touches is restyled, not just the matched text. Use Find Document to resolve a document's name to its ID. See the documentation
Search for Google Docs by name or full-text content. Returns a list of {id, name, url, modifiedTime}. Use this first to resolve a document's name to its ID, then pass the id to Get Document, Export Document, or any of the insert/replace tools. See the documentation
Export a Google Doc to a file in PDF, DOCX, TXT, HTML, or ODT format. Use when asked to export, download, convert, or 'save as' a doc in one of those formats. Use Find Document to resolve a document's name to its ID. Returns {filePath, filename, mimeType}, where filePath is the exported file in the workflow's temporary storage - it is a local path, not a shareable download link. See the documentation
Remove an entire table, structure and contents, from the document. Use this to clear a table completely, including an empty table left behind after its text was removed. Set Table Number to pick which table to remove (1 = first top-level table in the document, in reading order; a table nested inside another table's cell doesn't count separately). Use Get Document first if you need to confirm how many tables exist. This also works on a table linked to a Google Sheet, since removal is treated as ordinary content deletion. Use Find Document to resolve a document's name to its ID. In a multi-tab document, set Tab ID to choose which tab to delete from — without it the first tab's tables are the ones counted and removed; use List Tabs to get the IDs. See the documentation
Add a new tab to an existing Google Doc and return its Tab ID. The tab is created empty; pass the returned tabId as Tab ID to Insert Text, Write Table, Insert Image, Insert Table or Insert Page Break to fill it, because an edit sent without a Tab ID always goes to the document's first tab. Added at the end of the document's tabs unless Position is set, and nested under another tab when Parent Tab ID is set. Use List Tabs to see the tabs a document already has, or Find Document to resolve a document's name to its ID. Position applies only to the tab being created: this tool set cannot rename, reorder or delete a tab that already exists — say so plainly rather than attempting a workaround such as recreating the tab. See the documentation
Create a new Google Doc with an optional body. The body is rendered as Markdown, so you can include headings (# Title), bold/italic, bullet/numbered lists, links, and code. Optionally place the doc in a specific Drive folder. Returns {documentId, title, url}. See the documentation
Create a new Google Doc by copying a template document and substituting {{placeholder}} tokens with values. Use Find Document to resolve the template's name to its ID. Returns {documentId, title, url}. See the documentation
Turn paragraphs into a bulleted or numbered list in a Google Doc. Locate the paragraphs with Find Text, or pass an explicit Start Index and End Index. Every paragraph the range touches becomes a list item. Use Remove Bullets to undo. Use Find Document to resolve a document's name to its ID. See the documentation
Append text to the end of a Google Doc, or to the very beginning when Append at Beginning is set. Use when adding a line or paragraph to an existing document without choosing an exact character position. Use Insert Text instead when the text must land at a specific index, or when inserting into a particular tab. Use Find Document to resolve a document's name to its ID. See the documentation
Get the content of a tab in a document. See the documentation
Appends an image to the end of a document. See the documentation