google-slides-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GOOGLE_TOKEN_PATH | No | Path to cached token file. Alias: TOKEN_PATH. Default: ~/.config/google-slides-mcp/token.json | |
| GOOGLE_CLIENT_SECRET | Yes | Path to the Desktop OAuth client JSON. Alias: CREDENTIALS_PATH | |
| GOOGLE_SLIDES_SCOPES | No | Comma-separated scope override. Short names or full URLs. Default: presentations,drive | |
| GOOGLE_SLIDES_NO_BROWSER_AUTH | No | Set to '1' to disable automatic browser flow on first launch (headless). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_presentationA | Create a new, empty Google Slides presentation. (1 API call.) Args: title: The title for the new presentation. Returns:
|
| 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 This is the low-level power tool: Note: Args: presentation_id: The presentation ID. requests: A list of single-key Slides request objects. Returns:
|
| set_element_boxA | Set an element's position (and optionally size) in points. (Up to 2 calls.) A convenience over 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). |
| 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: |
| 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 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 |
| 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 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 |
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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