Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GOOGLE_TOKEN_PATHNoPath to cached token file. Alias: TOKEN_PATH. Default: ~/.config/google-slides-mcp/token.json
GOOGLE_CLIENT_SECRETYesPath to the Desktop OAuth client JSON. Alias: CREDENTIALS_PATH
GOOGLE_SLIDES_SCOPESNoComma-separated scope override. Short names or full URLs. Default: presentations,drive
GOOGLE_SLIDES_NO_BROWSER_AUTHNoSet to '1' to disable automatic browser flow on first launch (headless).

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
create_presentationA

Create a new, empty Google Slides presentation. (1 API call.)

Args: title: The title for the new presentation.

Returns: {presentationId, title, url}.

get_presentationA

Get a presentation as a bounded, structured overview. (1 API call.)

By default returns a trimmed summary (slides, elements, positions, short text snippets) so large decks stay within a finite output budget.

Args: presentation_id: The presentation ID. include_masters: Also summarize layouts and masters. raw: Return the full, untrimmed API response instead of the summary.

get_pageA

Get a single page (slide) as a bounded summary. (1 API call.)

Args: presentation_id: The presentation ID. page_id: The page (slide) object ID. raw: Return the full, untrimmed API response instead of the summary.

list_slidesA

List slides with index, id, and layout reference only. (1 API call.)

The lightest-weight read — use it to find slide IDs before deeper calls.

batch_updateA

Apply raw Slides batchUpdate requests atomically. (1 API call.)

This is the low-level power tool: requests is a list of Slides API request objects (e.g. createSlide, insertText, createShape, updateTextStyle, updatePageElementTransform, duplicateObject ...). See https://developers.google.com/workspace/slides/api/reference/rest/v1/presentations/request Many edits batched into one call still cost a single write quota unit.

Note: updateShapeProperties/updateTextStyle/updatePageProperties require a fields mask; a missing mask is reported as a warning.

Args: presentation_id: The presentation ID. requests: A list of single-key Slides request objects.

Returns: {replies, warnings} where replies is the API response array.

set_element_boxA

Set an element's position (and optionally size) in points. (Up to 2 calls.)

A convenience over updatePageElementTransform that lets you place a bounding box by its top-left corner in points without computing an affine matrix. Reads the element's current transform once (to preserve scale/shear when size is omitted), then applies one absolute transform update.

Args: presentation_id: The presentation ID. element_id: The page element to move/resize. x_pt: Left edge (top-left X) in points. y_pt: Top edge (top-left Y) in points. width_pt: Desired visual width in points (optional; preserves current if omitted). height_pt: Desired visual height in points (optional; preserves current if omitted).

update_transformA

Apply a raw AffineTransform to an element. (1 API call.)

Args: presentation_id: The presentation ID. element_id: The page element ID. transform: An AffineTransform dict (scaleX, scaleY, shearX, shearY, translateX, translateY, unit). unit may be EMU or PT. mode: ABSOLUTE (replace) or RELATIVE (multiply with existing).

set_z_orderC

Change the front/back stacking order of elements. (1 API call.)

group_elementsC

Group two or more elements into a single group. (1 API call.)

ungroup_elementsB

Ungroup one or more groups back into individual elements. (1 API call.)

replace_all_textA

Replace all occurrences of each placeholder string. (1 API call.)

The primary content-fill tool for the template workflow: map showcase placeholder text to real content. All replacements run in one batch.

Args: presentation_id: The presentation ID. mappings: {find: replace} pairs. page_ids: Restrict to these pages (optional; default = whole deck). match_case: Case-sensitive matching.

insert_textB

Insert text into a shape or table cell at a character index. (1 API call.)

set_element_textA

Replace ALL of a shape's (or table cell's) text in one call. (1 API call.)

Clears the element's existing text and sets it to text in a single batch (deleteText + insertText). Safe to call on an empty element. This is the ergonomic way to fill a freshly duplicated slide when the showcase example uses real text rather than {{placeholder}} tokens.

Args: presentation_id: The presentation ID. element_id: The shape or table-cell object ID. text: The new full text content.

copy_presentationA

Clone an entire deck (Drive files.copy), preserving full styling. (1 call.)

The starting point of the high-fidelity template workflow: copies the showcase deck with all masters, layouts, theme and color scheme intact, so the copy can be edited exactly as if you were editing the showcase itself.

Args: source_id: The presentation ID of the template/showcase to copy. title: Title for the new copy. parent_folder_id: Optional Drive folder to place the copy in.

catalog_slidesA

Summarize each slide (layout, element makeup, placeholders, title). (1 call.)

Use after copy_presentation to choose which showcase example slide to reuse for each section of the new deck.

duplicate_slideA

Duplicate a slide within a deck with full fidelity. (1 API call.)

Copies all of the slide's elements and inherited styling. Use it to instantiate a showcase example slide for a new section, then fill it with replace_all_text.

Args: presentation_id: The presentation ID. page_id: The slide to duplicate. insertion_index: Where to place the duplicate (optional).

delete_objectsA

Delete slides or page elements by ID. (1 API call.)

Use to prune the original showcase example slides after duplicating the ones you want.

reorder_slidesA

Move a block of slides to a new position. (1 API call.)

park_slidesA

Hide slides (mark skipped) so they stay as a clone source. (1 API call.)

Keeps the showcase example/original slides in the deck as a reusable "palette" while hiding them from presentation mode. Duplicate from them across as many turns as you like, then prune_parked_slides at the very end.

unpark_slidesC

Unhide slides previously parked (mark not skipped). (1 API call.)

prune_parked_slidesA

Delete every parked (hidden/skipped) slide — final cleanup. (<=2 API calls.)

Removes ALL slides currently marked skipped, so use it deliberately as the last step once the deck is assembled.

render_pageA

Render a slide to a PNG image for visual verification. (1 expensive call.)

Returns the server-side rendered pixels of the slide — the same image a viewer sees — so you can confirm output looks correct. Rendering is per-page by design (the thumbnail endpoint is an expensive quota operation).

Args: presentation_id: The presentation ID. page_id: The slide object ID. size: LARGE (~1600px), MEDIUM (~800px), or SMALL (~200px) wide.

diff_pagesA

Render two slides and report their pixel difference. (2 expensive calls.)

Renders both pages, computes a normalized mismatch ratio in [0, 1] (0 = pixel identical), and returns a visual diff image highlighting changed regions. Useful to verify a duplicated/edited slide matches the showcase original.

Returns a text summary followed by the diff PNG.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/JustParent/google-slides-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server