Google Slides MCP
MCP server for the Google Slides API: presentations, slides, text, shapes, images and tables.
Connector by A1-x-Tech · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/a1-x-tech-mcp-google-slides
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 7 read · 8 write · 11 delete
- Secrets
- 3 (API keys, tokens or passwords)
- Install scripts
- Not scanned yet
- Runs as
- Node.js package
Tools by what they do 26
Read from the source code; the running server may list different tools.
Read 7 · Look things up without changing anything.
export_presentationget_pageget_presentationget_speaker_notesget_thumbnaillist_layoutslist_slides
Write 8 · Create, change, send or run things.
add_slidecreate_imagecreate_presentationcreate_shapecreate_tableduplicate_slideinsert_textmove_slides
Delete 11 · Delete, drop, revoke or wipe things.
batch_updatedelete_objectedit_tablemanage_commentsraw_requestreplace_imagereplace_textset_speaker_notesset_textupdate_text_styleupdate_transform
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
GOOGLE_SLIDES_ACCESS_TOKENGOOGLE_SLIDES_CLIENT_SECRETGOOGLE_SLIDES_REFRESH_TOKEN
Other settings (environment variables or headers).
GOOGLE_SLIDES_API_BASEGOOGLE_SLIDES_CLIENT_IDGOOGLE_SLIDES_DRIVE_API_BASEGOOGLE_SLIDES_MAX_RETRIESGOOGLE_SLIDES_OAUTH_PORTGOOGLE_SLIDES_TIMEOUT_MS
Files it touches
- Any path the agent passes to its tools
Tools (26)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
add_slideAdd a slideAdds a slide (batchUpdate createSlide) and returns the new slide's objectId in the reply. Pick the look with either predefined_layout (BLANK, TITLE, TITLE_AND_BODY, SECTION_HEADER, ...) or layout_object_id from list_layouts — not both; with neither the slide copies the layout of the current last slide. insertion_index is the 0-based position (omitted = append at the end). Placeholders inherited from the layout arrive empty — find their object ids via list_slides, then fill them with set_text.
batch_updateRaw batchUpdatecan change or delete dataSends raw Slides API batchUpdate requests for anything the typed tools don't cover: updateShapeProperties (fill, outline, shadow), updatePageProperties (slide background), updateParagraphStyle, createParagraphBullets, updateTableCellProperties, mergeTableCells, createVideo, createLine, groupObjects, updateSlideProperties and the rest of the request union. requests is the API's requests[] array verbatim, e.g. [{"updateShapeProperties":{"objectId":"...","shapeProperties":{...},"fields":"shapeFill"}}]. The batch is atomic: one invalid request rejects the whole batch and nothing is applied. Length…
create_imageInsert an imageInserts an image on a slide (batchUpdate createImage) from EITHER image_url — a public https URL Google's servers can fetch (validated: https-only, no private/local hosts, ≤2 kB; the image itself must be PNG/JPEG/GIF, ≤50 MB, ≤25 megapixels) — OR image_path, a local file that is checked by magic bytes, uploaded to Drive, shared by link for the fetch and DELETED from Drive right after (Slides stores its own copy, so the temp file is disposable; the result reports the cleanup). Omitted size keeps the image's native proportions fitted to the page; position/size are in points. Returns the image ob…
create_presentationCreate a presentationCreates a new Google Slides presentation and returns it (presentationId, revisionId, pageSize, the initial title slide with its object ids, layouts and masters). The API honors only the title at creation — add slides with add_slide, content with the text/shape/table/image tools. The new deck starts with one title slide and belongs to the authorized user's Drive. Note: this server cannot delete a presentation; removing the file is a Drive operation outside its scope.
create_shapeCreate a shapeCreates a shape on a slide (batchUpdate createShape), optionally with its initial text in the same atomic batch. Types: text_box, rectangle, round_rectangle, ellipse, diamond, triangle, right_arrow, left_arrow, up_arrow, down_arrow, star, heart, cloud, callout — the API's other ~130 ShapeTypes go through batch_update. Position/size are in points ((0,0) is top-left; a default 16:9 slide is 720x405 pt); omitted geometry defaults to 300x80 pt at (50,50). Returns the shape's objectId in the reply. Fill/outline/shadow are not parameters here — style via batch_update updateShapeProperties; text styl…
create_tableCreate a tableCreates an empty rows x columns table on a slide (batchUpdate createTable) and returns its objectId in the reply. Fill cells with set_text / insert_text using row_index + column_index (0-based); restructure later with edit_table. Position/size are in points; omitted geometry lets the API pick a centered default. Cell styling (borders, background) goes through batch_update updateTableCellProperties.
delete_objectDelete a slide or elementcan change or delete dataDeletes a slide or a page element (shape, image, table, video, line, group) by object id — batchUpdate deleteObject. Deleting a slide removes all its elements and speaker notes; deleting a group removes its children. There is no undo through the API (version history lives in the Slides UI). It cannot delete the whole presentation — that is a Drive file operation outside this server.
duplicate_slideDuplicate a slideDuplicates a slide (batchUpdate duplicateObject) — the copy, with all its elements and speaker notes, lands immediately after the original and its new objectId comes back in the reply. Works on any page element id too (the copy lands on the same slide, slightly offset). Move the copy with move_slides afterwards if needed.
edit_tableEdit table structurecan change or delete dataRestructures an existing table in one call. action=insert_rows needs row_index (+optional below, default true, and count 1-20); insert_columns needs column_index (+optional right, default true, and count); delete_row needs row_index and delete_column needs column_index — deletion permanently discards the cells' content, and the remaining rows/columns shift so indexes change between successive edits (re-check with list_slides). Cell TEXT is written with set_text/insert_text (row_index + column_index), not here.
export_presentationExport the presentationread-onlyDownloads the whole presentation as pdf, pptx, odp or txt (txt = all text incl. speaker notes) and saves it to output_path, overwriting an existing file. Served by the Drive export endpoint internally, which caps exports at 10 MB — a bigger deck fails with an export-size error (split it or use the Slides UI). Requires a Drive scope on the OAuth token (drive.readonly is enough; presentations-only gets a 403). Returns saved_to, bytes and mime_type; nothing in the presentation changes.
get_pageGet one pageread-onlyReturns one page in full by its object id — works for slides, layouts, masters and notes pages alike. For a slide the response includes slideProperties.notesPage (the speaker-notes page) and every pageElement with its size, transform (EMU: 1 pt = 12700 EMU) and complete text. Use it when list_slides' summary is not enough for one page but the whole deck via get_presentation would be too much.
get_presentationGet a presentationread-onlyReturns the raw presentation JSON: slides[] with every page element (shapes, text runs, tables, images), layouts[], masters[], notesMaster, pageSize (EMU: 1 pt = 12700 EMU) and revisionId. WARNING: a full deck is often hundreds of kilobytes — prefer list_slides for an inventory, and pass fields (a Google fields mask, e.g. "slides(objectId,pageElements(objectId,shape(text)))") to trim this response when you need raw detail.
get_speaker_notesGet speaker notesread-onlyReturns a slide's speaker notes as plain text, plus the speakerNotesObjectId (the text shape on the slide's hidden notes page). The lookup fetches the slide's notes page internally, so you only need the slide's object id from list_slides. An empty string means the slide has no notes yet. Notes text is also searched by replace_text.
get_thumbnailGet a slide thumbnailread-onlyRenders one page (slide, layout or master) as a PNG. Without output_path it returns contentUrl + width/height — the URL is short-lived (~30 minutes) and served from googleusercontent.com. With output_path the PNG is downloaded and saved to that local file instead (the download is restricted to Google's image hosts). size: large (1600px, default), medium (800px) or small (200px). This is the way to SEE what a slide actually looks like — the JSON never shows rendering. Counts as an expensive read in the API quota.
insert_textInsert textInserts text into a shape or a table cell (batchUpdate insertText) at a 0-based character index (default 0 = the beginning). For a table cell pass row_index + column_index together. Text carries \n for new paragraphs; the target must be a shape that can hold text or a table — images and lines cannot. To REPLACE what's already there use set_text instead; to fill an empty layout placeholder this works directly (find its object id via list_slides).
Show 11 more tools
list_layoutsList layouts and mastersread-onlyLists the presentation's theme building blocks: layouts[] (objectId, name like TITLE_AND_BODY, displayName, masterObjectId), masters[] and the notesMasterObjectId. Layout object ids feed add_slide's layout_object_id; the Slides API cannot import a new theme or change the master set — themes are chosen in the UI, this tool only reads what the deck already has.
list_slidesList slides (compact inventory)read-onlyCompact inventory of the deck — the read to start from: presentationId, title, revisionId, pageSizePt, slideCount and per slide its 0-based index, objectId, layoutObjectId, speakerNotesObjectId and elements[] with each element's objectId, type (shape type / table RxC / image / video / line / group), placeholder role and visible text (truncated to 160 chars). All mutation tools address these object ids, so call this before editing; per-element geometry and full text need get_presentation or get_page.
manage_commentsManage commentscan change or delete dataComment threads on the presentation file (served by the Drive API internally — scoped to this one file, no generic Drive access). action=list returns comments with replies and resolved status (pageSize/page_token to paginate, include_deleted for tombstones); get needs comment_id; create needs content and starts a new unanchored thread (the API cannot anchor a new comment to a specific slide or shape); reply needs comment_id + content and/or resolve=true (resolve closes the thread); delete needs comment_id and permanently removes the thread with all replies. Requires a Drive scope on the OAuth …
move_slidesMove slidesMoves one or more slides to a new position (batchUpdate updateSlidesPosition). slide_object_ids must appear in their current deck order with no duplicates; insertion_index is the 0-based position BEFORE the move is applied (moving a slide down: index counts with the slide still in its old place). Use list_slides to see the current order first.
raw_requestRaw Google Slides API callcan change or delete dataEscape hatch to call any Google Slides API v1 path directly, for requests even batch_update doesn't cover — e.g. GET "v1/presentations/<id>/pages/<pageId>" with a custom fields mask in the query string, or a POST with a body shaped differently from the typed tools. The Slides API only has GET and POST endpoints; the path is relative to https://slides.googleapis.com and may carry a query string. The Bearer token is added automatically; a path resolving to a foreign origin is rejected. Drive endpoints (comments, export) are NOT reachable here — use manage_comments / export_presentation.
replace_imageReplace an imagecan change or delete dataSwaps the bitmap of an existing image element while keeping its frame, position and effects (batchUpdate replaceImage). The new picture comes from image_url or image_path with exactly the same validation/upload/cleanup rules as create_image. replace_method: center_inside (default — scales to fit inside the frame, keeping aspect) or center_crop (fills the frame, cropping the overflow).
replace_textFind & replace textcan change or delete dataFinds and replaces every occurrence of a string across the whole deck — shapes and table cells on slides, and their speaker notes (batchUpdate replaceAllText). Scope it with page_object_ids to touch only specific slides. Matching is literal (no regex), case-sensitive by default (match_case=false to ignore case). Returns occurrencesChanged in the reply — 0 means nothing matched, check the exact wording with list_slides. The classic template flow: duplicate a template deck, then replace {{placeholders}}.
set_speaker_notesSet speaker notescan change or delete dataReplaces a slide's speaker notes with the given text (empty string clears them). The tool resolves the slide's speakerNotesObjectId internally and rewrites that shape atomically — you pass the slide's object id, not the notes shape id. Notes are visible in the presenter view and exported by format txt; use \n for paragraphs.
set_textSet (replace) textcan change or delete dataReplaces the ENTIRE text of a shape or table cell: one atomic batch of deleteText(ALL) + insertText. If the target has no text yet the delete is skipped automatically, so it works on empty placeholders too. An empty text just clears the object. Replacing text drops per-character styling — restyle with update_text_style afterwards if needed. For a table cell pass row_index + column_index together.
update_text_styleStyle textcan change or delete dataStyles the text of a shape or table cell (batchUpdate updateTextStyle): bold, italic, underline, strikethrough, font_family (e.g. "Roboto"), font_size_pt, foreground_color (#RRGGBB) and link_url. Only the provided fields change (the field mask is computed automatically); at least one is required. By default the whole text is styled; pass start_index + end_index (0-based character offsets, end exclusive) to style a range — get the offsets from get_page's textElements. For a table cell add row_index + column_index.
update_transformMove / scale an elementcan change or delete dataMoves and/or scales a page element (batchUpdate updatePageElementTransform). mode=absolute REPLACES the element's whole transform: translate_x_pt/translate_y_pt become the new top-left-ish origin and omitted scales default to 1 — NOT to the current values, so an absolute move of a scaled element also resets its scale unless you resend it. mode=relative multiplies onto the existing transform: translate shifts by the given points, scale 2 doubles the current size (scaling happens around the origin, which also shifts the element — for a simple move prefer relative translate only). Element geometr…
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 0
- Weekly downloads
- 37
- Last commit
- Oct 4, 2026 (24 days ago)
- Last release
- Sep 23, 2026 (1 month ago)
- Last package publish
- Sep 23, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.A1-x-Tech/mcp-google-slides- Version
- 1.0.0
- Auth
- API key
- Packages
- npm @a1-x-tech/mcp-google-slides
- License
- MIT
- Repository
- github.com/A1-x-Tech/mcp-google-slides
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
More from A1-x-Tech
- 0.537score
Google Sheets MCP
A1-x-Tech
MCP server for the Google Sheets API: read and write ranges, sheets, formatting, charts, sharing.
ConnectorAFreshness: ALocal★ 1↓ 45/wkClaude Code +5 - 0.535score
Google Business Profile MCP
A1-x-Tech
MCP server for Google Business Profile: locations, reviews, local posts and performance metrics.
ConnectorAFreshness: ALocal★ 4Claude Code +5 - 0.526score
Google Drive MCP
A1-x-Tech
MCP server for the Google Drive API: search, upload, download, organize and share files.
ConnectorAFreshness: ALocal↓ 38/wkClaude Code +5 - 0.526score
Google Calendar MCP
A1-x-Tech
MCP server for the Google Calendar API: events, recurrence, invitations, availability, calendars.
ConnectorAFreshness: ALocal↓ 36/wkClaude Code +5 - 0.524score
Google Docs MCP
A1-x-Tech
MCP server for the Google Docs API: read and edit documents, styles, tables, images, comments.
ConnectorAFreshness: ALocal↓ 27/wkClaude Code +5 - 0.515score
Avito Ads MCP
A1-x-Tech
MCP server for the Avito Ads API: campaigns, ad groups, creatives, statistics and balances.
ConnectorAFreshness: ALocal★ 1Claude Code +5
Cite this page
Google Slides MCP. Agent Mart. https://agentmart.dev/connectors/a1-x-tech-mcp-google-slides (last updated 2026-10-25)