Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BRIDGE_TLSNoSet to 1 to enable the emulated SharePoint-style HTTPS catalog.

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_presentationsA

Lists all PowerPoint presentations currently connected to the bridge server. Shows presentation IDs (file paths for saved files, generated IDs for unsaved) and connection status. Use this to find the presentationId to pass to other tools when multiple presentations are open.

inspect_deckA

Deck overview: slide dimensions, theme (colors + fonts), and all slides with index, ID, and shape count. Use as the first call to understand deck structure. Theme is cached after the first call. For shape details, follow up with scan_slide or inspect_slide on specific slides. For available layouts, use inspect_layouts.

inspect_layoutsA

Returns slide layouts with names, OOXML type (e.g. blank, twoObj, secHead), master/layout indices, and detailed placeholders. Use fields to control which data is returned. By default reads all layouts from every slide master in OOXML (complete list, requires file access — may take a moment on first call for cloud files). Layouts sharing a name across different masters are distinguished by masterIndex. Set usedOnly to return only layouts assigned to existing slides (fast, Office.js only, no file access).

inspect_slideA

Detailed slide inspector (~80 tokens/shape): returns every shape with text content, positions, sizes, and fill colors, plus slide dimensions. Supports slideRange for multiple slides. For just positions without text/fills, use scan_slide instead.

scan_slideA

Lightweight shape scanner (~40 tokens/shape): lists shape IDs, types, and positions on slides, plus slide dimensions. Supports slideRange for multiple slides. For text content and fills, use inspect_slide instead.

screenshot_slideA

Slide screenshot (~1000 tokens): captures one slide as PNG image. Use to visually verify layout after changes. Do NOT loop over all slides — use preview_deck instead.

preview_deckA

Deck preview: batch overview of all/selected slides with optional thumbnails + text. With images: ~900 tokens/slide; text-only (includeImages=false): ~35 tokens/slide. Use for visual review or content audit. Do NOT use to inspect one slide — use inspect_slide or screenshot_slide instead.

show_slideA

Bring a slide into view in the live presentation (navigates the user to that slide). Call this BEFORE editing a slide so the user can watch the changes happen; also useful to walk the user through a deck slide by slide.

add_slideA

Add a new slide from a layout at a specific position, with placeholder text pre-filled and shapes renamed to layout names. Use inspect_layouts to find available layout names and placeholder names. Returns the new slide index and its placeholder shapes with semantic names.

duplicate_slideA

Duplicate a slide within the same presentation. Exports the slide and reimports it at the specified position. Data stays server-side. The reimport makes PowerPoint view jump to the first slide.

copy_slidesA

Copies slides between two open presentations entirely server-side — the Base64 data never enters Claude context. Exports from the source presentation and inserts into the destination in a single operation. Both presentations must be connected to the bridge. Requires PowerPointApi 1.8.

edit_shape_paragraphsA

Replace paragraph content of a shape with raw OOXML <a:p> XML. Preserves <a:bodyPr> and <a:lstStyle>. Use read_shape_paragraphs first to get the current XML, modify it (using /pptx skill knowledge), then write it back. The slide is exported, modified server-side, and reimported — data never enters Claude's context. NOTE: the reimport deletes and reinserts the slide, which makes PowerPoint's view jump to the first slide. For text-only changes, prefer execute_officejs (in place via shape.textFrame.textRange — view position is preserved).

read_shape_paragraphsA

Read raw OOXML <a:p> paragraphs from a shape's text body. Returns the paragraph XML as a string — preserves all formatting (bold, colors, bullets, etc.) that textRange.text strips. Use with the /pptx skill's OOXML knowledge to understand and modify the XML.

read_deck_textA

Lightweight text extractor: returns slide titles and body text as plain strings (~20x smaller than inspect_slide). Use for content review, narrative analysis, or any read-only text task. Supports slideRange and optional speaker notes.

search_textA

Search for text across all slides (or a slide range) in the presentation — like grep for slides. Searches shape text, table cells, and speaker notes. Returns matching shapes with context at the chosen level. Case-insensitive substring by default; supports regex.

format_shapesA

Apply formatting to multiple shapes on a slide in one call. Generates Office.js code internally. Use for fill color, font bold/italic/size/color/name. Cannot set corner radius or borders (use edit_slide_xml code mode for those). Runs in place (no slide reimport), so PowerPoint view position is preserved.

edit_slide_xmlA

Edit slide XML and reimport. Two modes: (1) xml mode — provide finished XML string (use read_slide_xml first to get current XML), (2) code mode — provide JS code that manipulates the pre-parsed DOM (receives: doc, findShapeById, NS_P, NS_A, escapeXml, serializeXml, DOMParser). Code mode preserves untouched attributes. The slide is exported, modified server-side, and reimported — data never enters Claude's context. NOTE: the reimport deletes and reinserts the slide, which makes PowerPoint's view jump to the first slide — reserve this for structural changes (new shapes, layout rebuilds).

edit_slide_zipA

Update multiple files in the slide zip and reimport in a single operation. Accepts a map of { path: content } — can modify existing files or add new ones (e.g. chart XML + rels). Auto-registers Content_Types for new chart files. Use read_slide_zip first to get the current content.

read_slide_xmlA

Read the full raw OOXML of a slide, or filter to a specific shape. Returns the slide's ppt/slides/slide1.xml content. Use with the /pptx skill's OOXML knowledge to understand the XML structure.

read_slide_zipA

Read multiple files from the exported slide zip. Returns slide XML, relationships, chart XMLs, and Content_Types. Use this to inspect chart data, rels, or other zip contents beyond what read_slide_xml provides. When no paths specified, auto-discovers all text/XML files in the zip.

edit_speaker_notesA

Set speaker notes on one or more slides. Accepts markdown text (paragraphs, bold, italic). Converts to OOXML server-side and injects via single-slide reimport. Replaces all existing notes on the specified slides.

read_speaker_notesA

Read speaker notes from slides. Uses full-deck export (cached by revision) to parse notes from OOXML — Office.js has no notes API. Returns plain text per slide.

edit_slide_chartA

Create a chart on a slide from structured data. Generates all OOXML automatically (chart XML, rels, graphic frame, Content_Types). Supports column, bar, line, pie, doughnut, and area charts with multiple series.

insert_imageA

Inserts an image onto a slide using Office.js setSelectedDataAsync with CoercionType.Image. Accepts a file path, URL, or raw base64 data. Optionally target a specific slide (the view stays there so the user sees the insert; call show_slide first per the view etiquette) and control position/size in points.

get_local_copyA

Returns a local file path for the presentation. For local files, returns the existing path. For SharePoint/cloud files, exports server-side and saves to a temp .pptx. Caches by revision number — re-exports only when the presentation has been saved since last export.

search_fluent_iconsA

Search Microsoft Fluent UI icon library. Returns matching icons with svgBase64 ready for insert_image (sourceType: "base64") — the SVG content is fetched server-side so dead icon URLs can never break the workflow. Prefer mono (_M) variants for professional decks. Retry with synonyms if no good matches (e.g. "innovation" → "lightbulb", "security" → "shield").

execute_officejsA

Execute arbitrary Office.js code inside the live PowerPoint presentation. The code runs inside PowerPoint.run(async (context) => { ... }) with 'context' available as a variable. Use 'await context.sync()' after loading properties. Return a value to get it back as the tool result. For positioning, all values are in points (1 point = 1/72 inch). Common operations: add shapes, set text, change colors, add/delete slides. Edits run in place without reimporting the slide, so PowerPoint's current view position is preserved — prefer this over edit_shape_paragraphs / edit_slide_xml for text-only or formatting-only changes (to read a shape's text in place, load shape.textFrame with hasText + textRange).

verify_slidesA

Run programmatic checks on a slide: detect overlapping shapes, out-of-bounds shapes, empty text, tiny shapes, unused placeholders, placeholder drift from layout defaults, and full-bleed background covers. Returns a list of issues found. Uses the same shape data as inspect_slide — no OOXML needed.

list_documentsA

Lists all Word documents currently connected to the bridge server. Shows document IDs (file paths for saved files, generated IDs for unsaved) and connection status. Use this to find the documentId to pass to other Word tools when multiple documents are open.

execute_wordjsB

Execute arbitrary Office.js code inside the live Word document. The code runs inside Word.run(async (context) => { ... }) with 'context' available as a variable. Use 'await context.sync()' after loading properties. Return a value to get it back as the tool result. Common operations: read the body (context.document.body), insert paragraphs, search and replace, work with tables, read tracked changes.

inspect_documentA

Overview of the live document: paragraph count, section count, table count, inline picture count, and a preview of the first paragraphs with their styles. Use this first to orient yourself in an unfamiliar document.

read_paragraphsA

Read paragraphs of the document with their styles, paginated by offset and limit. Returns total count plus the requested slice.

get_paragraphB

Read one paragraph in full: text, style, alignment and font properties (name, size, bold, italic, color).

insert_paragraphA

Insert a new paragraph into the document, optionally with a style (e.g. "Heading 1", "Title", "Quote"). Insert at the start or end of the body, or before/after a given paragraph index. Returns the new paragraph count.

set_paragraph_textA

Replace the text of one paragraph, keeping the paragraph itself (and optionally its style).

delete_paragraphB

Delete one paragraph (text and paragraph mark) from the document.

format_paragraphA

Format one paragraph: style, alignment, and font (name, size, bold, italic, color, highlight color). Only provided properties are changed.

search_documentB

Search the document body for text. Returns up to 50 matches with a text snippet around each hit.

replace_textB

Find and replace text throughout the document. Returns the number of replacements made.

insert_tableA

Insert a table at the end of the document, optionally pre-filled from a 2D array of strings. Returns row and column counts.

read_tableB

Read all cell texts of a table as a 2D array.

set_table_cellB

Write text into one table cell (replacing its content).

insert_page_breakB

Insert a page break at the end of the document body.

comment_on_paragraphC

Add a comment to a paragraph (anchored on its text).

get_tracked_changesA

List tracked changes (revisions) in the document: type (insertion/deletion), author, date and a text snippet. Read-only; Office.js cannot create tracked changes.

get_selectionB

Read the current user selection (cursor) in the document.

save_documentB

Save the document. If it has never been saved, Word applies its default save behavior (may prompt).

list_content_controlsA

List all content controls (template fields) in the document: id, title, tag, type, current text and placeholder. Use set_content_control_text with the id to fill them.

set_content_control_textA

Replace the text of a content control (template field) identified by its id from list_content_controls. Optionally update its title and tag.

read_commentsA

Read all comments in the document body: id, author, text, resolved state, date, and replies. Note: adding replies is not supported by the current Word.js API set.

get_document_propertiesB

Read the document metadata: title, author, subject, keywords, comments, category, creation and last-save dates.

set_document_propertiesA

Set document metadata (title, author, subject, keywords, comments, category). Only provided fields are changed.

edit_table_columnsA

Add or delete columns of a table. Add: position "Before" inserts left of the first column, "After" right of the last column; optionally pre-fill with values (2D array, one column per entry). Delete: remove count columns starting at columnIndex (0-based). Note: some Word builds reject column operations with InvalidArgument.

set_table_cellsA

Set the text of multiple table cells in one call. Rows and columns are 0-based indices into the table.

list_workbooksA

Lists all Excel workbooks currently connected to the bridge server. Shows workbook IDs (file paths for saved files, generated IDs for unsaved) and connection status. Use this to find the workbookId to pass to other Excel tools when multiple workbooks are open.

execute_exceljsB

Execute arbitrary Office.js code inside the live Excel workbook. The code runs inside Excel.run(async (context) => { ... }) with 'context' available as a variable. Use 'await context.sync()' after loading properties. Return a value to get it back as the tool result. Common operations: read/write ranges (workbook.worksheets), formulas, tables, charts. Cell references use A1 notation; values/formulas are returned as arrays matching the range shape.

inspect_workbookA

Overview of the live workbook: all worksheets (name, position, visibility, used-range address), all Excel tables (name, sheet, range), all named ranges, and all PivotTables (name, sheet). Use this first to orient yourself in an unfamiliar workbook.

read_rangeA

Read values, formulas and number formats from a range of the live workbook. Returns a 2D array (rows x columns) plus the range address and dimensions. Use "usedRange": true to read the whole used range of the sheet.

write_rangeA

Write values and/or formulas into a range of the live workbook. Accepts a 2D array (rows x columns) or a single scalar that fills the whole range. Formulas are set separately from values. Also supports setting the number format. Content in the target range is overwritten.

format_rangeA

Format a range: font (name, size, bold, italic, underline, color), fill color, borders (all/outline with style, weight, color), alignment, wrap, and number format. Only the provided properties are changed.

set_dimensionsB

Set column widths and/or row heights for a range, in points. Optionally autofit columns or rows to their content.

add_worksheetA

Add a new worksheet to the workbook, optionally at a specific position, and activate it. Returns the new sheet name and position.

update_worksheetA

Update an existing worksheet: rename it, move it to a position, change visibility, set the tab color, or activate it. Only provided properties are changed.

delete_worksheetA

Delete a worksheet from the workbook. This removes its contents permanently and can break formulas referencing it.

sort_rangeB

Sort a range by one or more columns. Fields are given as zero-based column offsets within the range.

find_in_rangeA

Find text in a range or the whole used range. Returns the address of the first match, or all matches as a (possibly multi-area) address string.

add_tableB

Create an Excel table (ListObject) over a range. Returns the table name and range.

add_chartB

Create a chart from a range. Chart types: ColumnClustered, ColumnStacked, BarClustered, BarStacked, Line, LineMarkers, Pie, Doughnut, Area, XYScatterLines. Returns the chart name and title.

add_conditional_formatB

Add a conditional formatting rule to a range. Supports cellValue (compare with a formula and fill on match), colorScale (min/max gradient), dataBar, and iconSet rules.

add_nameC

Define a named range (named formula) in the workbook, e.g. name "TaxRate" for "=Sheet1!$B$1".

set_data_validationC

Set a data validation rule on a range. Supports list, wholeNumber, decimal, textLength, and date rules.

calculate_workbookA

Force Excel to recalculate the workbook. Use after writes when you need formula results to be current before reading them back.

insert_or_delete_rangeA

Insert or delete a range, shifting existing cells. For insert, shift is Down or Right; for delete, Up or Left.

set_mergeC

Merge or unmerge cells in a range.

autofit_rangeB

Autofit column widths and/or row heights of a range to their content.

add_commentC

Add a threaded comment to a cell.

refresh_pivottablesA

Refresh all PivotTables in the workbook. Use after data changes when pivot summaries must be current.

set_worksheet_protectionB

Protect or unprotect a worksheet. Protection restricts user edits; cells formatted as locked are affected.

read_threaded_commentsA

Read all threaded comments in the workbook: content, author, creation date, resolved state, and replies. Use reply_to_comment or resolve_comment with a comment id from this output.

reply_to_commentB

Add a reply to an existing threaded comment. Use the comment id from read_comments.

resolve_commentA

Resolve or reopen a threaded comment. Use the comment id from read_comments.

set_hyperlinkA

Set a hyperlink on a cell (address, display text, tooltip). The cell text is replaced by textToDisplay when provided. Pass address as null to remove the hyperlink.

freeze_panesA

Freeze rows and columns of a worksheet at a cell (everything above and left of the cell stays visible), or unfreeze. E.g. freezeAt "A2" freezes the first row, "B2" freezes row 1 and column A.

replace_in_sheetA

Find and replace text across a whole worksheet (substring match per cell by default). Returns the number of cells changed. Uses findAll so merged/hidden cells behave like the Excel UI.

clear_rangeA

Clear the contents and formatting of a range in the live workbook.

copy_rangeB

Copy a source range to a target range in the live workbook. Copies values, formulas and formatting by default; valuesOnly copies just the results.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 86 tools

Disambiguation3/5

Most tools target distinct resources/actions, but the PowerPoint surface has several overlapping read/inspect variants (inspect_slide, scan_slide, preview_deck, read_deck_text, screenshot_slide) and multiple editing routes (edit_slide_xml, edit_slide_zip, edit_shape_paragraphs, execute_officejs). The descriptions do a good job explaining when to use each, but an agent still faces real selection ambiguity.

Naming Consistency3/5

Names are consistently snake_case, which helps, but verbs vary widely (inspect, scan, read, get, list, preview, show, edit, execute) and cross-domain tools are not systematically prefixed by app. The pattern is readable but not highly predictable across 86 tools.

Tool Count1/5

86 tools is far beyond a well-scoped set for an MCP server, even one spanning PowerPoint, Word, and Excel. The breadth creates a large surface that is hard for an agent to navigate and invites redundancy.

Completeness4/5

Coverage is broad: PowerPoint has layout, shape, text, notes, chart, image, and XML/zip operations; Word has paragraph, table, comment, and metadata operations; Excel has range, table, chart, validation, comment, and protection operations. Some lifecycle gaps remain (e.g., PowerPoint slide deletion/reordering, Word table row operations), but core workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues