# Microsoft Office (npm · @mindstone/mcp-server-office)

Microsoft Office MCP server: read and edit Word documents, Excel workbooks, and PowerPoint files

- Trust score: 68/100 (medium)
- Change this week: +23
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-05

## Components

- npm · `@mindstone/mcp-server-office`: 68/100 (this document), [markdown](https://verifymcp.io/servers/mindstone-mcp-server-office/mindstone-mcp-server-office.md), [page](https://verifymcp.io/servers/mindstone-mcp-server-office/mindstone-mcp-server-office)

## Channel facts

- Registry: `npm`
- Package: `@mindstone/mcp-server-office`
- Version: `0.2.0`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-05.

- **Supply Chain Security**: 88/100
  - No malware found by supply-chain analysis.
  - Only part of the dependency tree could be resolved (114 of 118), so this covers what we could see, not the whole tree.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (114 of 118), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 32/100
  - Source repository is publicly reachable at the declared URL.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: the license (FSL-1.1-MIT) isn't a recognized OSI-approved license.
  - Actively maintained (last published 76 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 78/100
  - AI-judged instruction clarity (excellent).
  - Context-footprint check failed: tool/resource definitions use about 6112 tokens (~115/item across 53 items; 53 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add mindstone-mcp-server-office -- npx -y @mindstone/mcp-server-office
```

### Codex

```bash
codex mcp add mindstone-mcp-server-office -- npx -y @mindstone/mcp-server-office
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mindstone-mcp-server-office": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@mindstone/mcp-server-office"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add mindstone-mcp-server-office --command npx --arg -y --arg @mindstone/mcp-server-office
```

### Hermes

```yaml
mcp_servers:
  mindstone-mcp-server-office:
    command: "npx"
    args: ["-y", "@mindstone/mcp-server-office"]
```

### Other

```json
{
  "mcpServers": {
    "mindstone-mcp-server-office": {
      "command": "npx",
      "args": [
        "-y",
        "@mindstone/mcp-server-office"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-05 (score 68, +2)

- [security improvement] CVE-2026-69207 no longer affects this package
- [security improvement] Known CVEs: fail → partial

### 2026-08-04 (score 66, +3)

- [security regression] CVE-2026-69207 affects this package: medium
- [security regression] Known CVEs: partial → fail
- [functional improvement] Stability: unverified → 0.27

### 2026-08-02 (score 63, +58)

- [security regression] Provenance: unverified → fail
- [security improvement] Install scripts: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional regression] License: unverified → fail
- [functional improvement] Schema quality: unverified → excellent
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] MCP protocol: unverified → pass
- [functional] Licence: FSL-1.1-MIT

### 2026-07-31 (score 5, −40)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-27 (score 45)

First indexed and scored.

## MCP tools (53)

### `rebel_office_setup` (~152 tokens)

Install or repair Office add-in

Re-installs or uninstalls the Rebel add-in in Microsoft Office (Word, Excel, PowerPoint).

You usually do NOT need to run this manually — the first Office tool call lazily starts the sidecar, which installs the add-in manifest automatically. Use this tool only to:
  • Force a re-install after deleting manifests manually
  • Uninstall the add-in (action="uninstall")

After install, open (or restart) Word, Excel, or PowerPoint. The Rebel button will appear in the Home ribbon, under the "Add ons" menu; click it to open the panel and see "Connected".

Input parameters:

- `action` (string): Whether to install or uninstall the add-in.

### `rebel_office_status` (~62 tokens)

Check Office connection status

Check which Office applications are currently connected to Rebel. Returns connection status for Word, Excel, and PowerPoint, plus sidecar health information.

Use this to verify the connection before running other tools, or to diagnose issues when tools return "not connected" errors.

### `rebel_office_word_read_document` (~175 tokens)

Read Word document

Read the content of the currently open Word document. Returns the full text organized by paragraphs with heading levels, styles, and structure markers. Use this to understand what's in a document before making edits.

For very large documents, use the `maxParagraphs` parameter to limit output and `startParagraph` to paginate through content.

Common use cases: reviewing a draft, extracting key points, understanding document structure before making targeted edits.

Related tools: Use `rebel_office_word_get_document_structure` for a heading outline, or `rebel_office_word_find_text` to locate specific content.

Input parameters:

- `includeFormatting` (boolean): Include font/style metadata per paragraph.
- `maxParagraphs` (integer): Maximum paragraphs to return. Use for large documents.
- `startParagraph` (integer): Paragraph offset for pagination.

### `rebel_office_word_get_document_structure` (~110 tokens)

Get document outline

Get the outline structure of the currently open Word document — headings, sections, and page counts. Returns a hierarchical tree of headings with their levels and paragraph indices.

Useful for understanding document organization before making targeted edits, building a table of contents, or navigating to specific sections.

Related tools: Use `rebel_office_word_read_document` with `startParagraph` to read content at a specific heading location.

Input parameters:

- `includePageNumbers` (boolean): Include approximate page numbers for each heading.

### `rebel_office_word_get_selection` (~107 tokens)

Get selected text

Get the currently selected text in the Word document. Returns the text content and location of whatever the user has highlighted.

Useful for working with user-indicated content — "format this", "comment on this", "move this paragraph".

Related tools: After reading the selection, use `rebel_office_word_insert_text` with location "replaceSelection" to replace it, or `rebel_office_word_add_comment` with target type "selection" to comment on it.

### `rebel_office_word_find_text` (~136 tokens)

Find text in document

Search for text occurrences in the document. Returns matching locations with surrounding context. Supports case-sensitive and whole-word matching.

Use before `rebel_office_word_replace_text` to preview what will be changed, or to locate specific content for commenting or formatting.

Common use cases: finding all mentions of a term, locating a specific section, previewing search-and-replace matches before executing.

Input parameters:

- `limit` (integer): Maximum results to return.
- `matchCase` (boolean): Case-sensitive search.
- `matchWholeWord` (boolean): Match whole words only.
- `searchText` (string, required): Text to search for.

### `rebel_office_word_insert_text` (~227 tokens)

Insert text

Insert text into the document at a specified location. Can insert at the beginning, end, before/after a specific paragraph, or replace the current selection.

Text can include basic markdown-style formatting that gets converted to Word formatting. When track changes is enabled in the document, insertions appear as tracked additions.

Common use cases: adding new paragraphs, appending content, replacing selected text, inserting text at a specific location in the document.

Related tools: Use `rebel_office_word_read_document` to find the right paragraph index, or `rebel_office_word_get_selection` to check the current selection before replacing it.

Input parameters:

- `location` (string): Where to insert the text.
- `paragraphIndex` (integer): Target paragraph index (required for afterParagraph/beforeParagraph).
- `style` (string): Word style name to apply (e.g., "Heading 1", "Normal", "Quote").
- `text` (string, required): Text to insert. Supports basic markdown: **bold**, *italic*, # Heading 1, ## Heading 2, etc.

### `rebel_office_word_replace_text` (~152 tokens)

Find and replace text

Find and replace text throughout the document. Supports case-sensitive and whole-word matching.

Use `rebel_office_word_find_text` first to preview matches before executing the replacement. When track changes is enabled, replacements appear as tracked changes (delete original + insert replacement). Returns the number of replacements made.

Common use cases: fixing typos throughout a document, updating terminology, standardizing formatting or naming conventions.

Input parameters:

- `matchCase` (boolean): Case-sensitive matching.
- `matchWholeWord` (boolean): Whole word matching.
- `replaceAll` (boolean): Replace all occurrences or just the first.
- `replaceText` (string, required): Replacement text.
- `searchText` (string, required): Text to find.

### `rebel_office_word_format_text` (~123 tokens)

Format text

Apply formatting to text at a specified location — a paragraph range, the current selection, or text matching a search term. Supports font family, size, color, bold, italic, underline, highlight, and alignment.

For more complex formatting, use Word styles via `rebel_office_word_insert_text` with the `style` parameter.

Common use cases: making headings bold, changing font color for emphasis, highlighting key phrases, adjusting paragraph alignment.

Input parameters:

- `formatting` (object, required): Formatting options to apply.
- `target` (object, required): What to format.

### `rebel_office_word_insert_table` (~167 tokens)

Insert table

Insert a table into the document. Provide headers and rows of data. The table is inserted at the end of the document or after a specific paragraph.

Tables are created with the default Word table style; specify a `style` for custom styling (e.g., "Grid Table 4 - Accent 1").

Common use cases: adding comparison tables, data summaries, structured lists, pricing tables.

Input parameters:

- `headers` (array, required): Column header names.
- `location` (string): Where to insert the table.
- `paragraphIndex` (integer): Paragraph index for afterParagraph location.
- `rows` (array, required): Array of row arrays, each containing cell values.
- `style` (string): Word table style name (e.g., "Grid Table 4 - Accent 1").

### `rebel_office_word_insert_image` (~127 tokens)

Insert image

Insert an image into the document from a file path or base64 data. The image is inserted at the end or after a specific paragraph.

Supports width/height control — aspect ratio is maintained if only one dimension is specified.

Common use cases: adding screenshots, logos, charts generated externally, diagrams.

Input parameters:

- `height` (number): Height in points.
- `location` (string): Where to insert the image.
- `paragraphIndex` (integer): Paragraph index for afterParagraph location.
- `source` (object, required): Image source.
- `width` (number): Width in points.

### `rebel_office_word_insert_break` (~113 tokens)

Insert page/section break

Insert a page break or section break into the document. Page breaks start a new page; section breaks start a new section (allowing different headers/footers/page layouts).

Common use cases: separating chapters, starting appendices on a new page, creating sections with different page orientations or margins.

Input parameters:

- `paragraphIndex` (integer): Insert after this paragraph. Defaults to end of document.
- `type` (string, required): Break type: page break, section break (next page), or section break (continuous).

### `rebel_office_word_set_header_footer` (~156 tokens)

Set header or footer

Set the header or footer text for the document. Can target the first page, odd pages, or even pages. Supports plain text and basic formatting.

Use special placeholders: `{PAGE}` for page number, `{NUMPAGES}` for total pages, `{DATE}` for current date.

Common use cases: adding page numbers, document titles, dates, or company branding to headers and footers.

Input parameters:

- `alignment` (string): Text alignment.
- `target` (string): Which pages to apply to.
- `text` (string, required): Content text. Use {PAGE} for page number, {NUMPAGES} for total pages, {DATE} for current date.
- `type` (string, required): Header or footer.

### `rebel_office_word_get_properties` (~56 tokens)

Get document properties

Get the document's metadata properties — title, author, creation date, last modified, word count, page count, and custom properties.

Useful for understanding document context and provenance before making edits or when summarizing document metadata.

### `rebel_office_word_get_comments` (~104 tokens)

Read comments

Read all comments in the document. Returns each comment with its author, date, associated text range, content, reply thread, and resolved status.

Use to review feedback, track discussion threads, or prepare a comment summary.

Related tools: Use `rebel_office_word_add_comment` to add new comments, `rebel_office_word_resolve_comment` to resolve or delete them.

Input parameters:

- `includeResolved` (boolean): Include resolved comments in the results.

### `rebel_office_word_add_comment` (~128 tokens)

Add comment

Add a comment to the document at a specified location — the current selection, a paragraph, or text matching a search term. If replying to an existing comment, provide the parent comment ID to create a threaded reply.

Get comment IDs from `rebel_office_word_get_comments`.

Common use cases: providing feedback on specific paragraphs, noting issues, asking questions about document content.

Input parameters:

- `replyToCommentId` (string): ID of parent comment to reply to (creates a threaded reply).
- `target` (object, required): Comment target location.
- `text` (string, required): Comment text.

### `rebel_office_word_resolve_comment` (~102 tokens)

Resolve or delete comment

Resolve or delete a comment by its ID. Resolving marks a comment as addressed without removing it; deleting removes it entirely.

Get comment IDs from `rebel_office_word_get_comments`.

Common use cases: marking feedback as addressed, cleaning up resolved discussion threads.

Input parameters:

- `action` (string, required): Resolve (mark as addressed) or delete (remove entirely).
- `commentId` (string, required): Comment ID (from rebel_office_word_get_comments).

### `rebel_office_word_get_tracked_changes` (~90 tokens)

Read tracked changes

Read tracked changes (revisions) in the document. Returns each change with its type (insertion, deletion, format change), author, date, and content.

Use to review edits before accepting or rejecting them.

Related tools: Use `rebel_office_word_accept_reject_changes` to accept or reject the changes.

Input parameters:

- `limit` (integer): Maximum changes to return.

### `rebel_office_word_accept_reject_changes` (~107 tokens)

Accept or reject tracked changes

Accept or reject tracked changes in the document. Can target specific changes by ID, all changes, or all changes from a specific author.

Get change IDs from `rebel_office_word_get_tracked_changes`.

Common use cases: bulk-accepting all tracked changes after review, rejecting changes from a specific reviewer, selectively accepting individual edits.

Input parameters:

- `action` (string, required): Accept or reject the changes.
- `target` (object, required): Which tracked changes to act on.

### `rebel_office_excel_read_range` (~238 tokens)

Read Excel range

Read cell values from a range in the active workbook. Returns data as a 2D array with column headers from the first row (if `hasHeaders` is true) or as raw arrays.

For named ranges, provide the range name directly. For tables, prefer `rebel_office_excel_read_table`.

Common use cases: reading data for analysis, extracting specific cells, getting a table snapshot.

Related tools: Use `rebel_office_excel_get_worksheets` to discover available sheets, or `rebel_office_excel_get_named_ranges` to find named ranges.

Input parameters:

- `hasHeaders` (boolean): Treat the first row as column headers.
- `limit` (integer): Maximum rows to return.
- `range` (string, required): Cell range in A1 notation (e.g., "A1:D10", "Sheet2!B3:F20") or a named range.
- `return_json` (boolean): Return as array of objects (keyed by headers) instead of 2D array.
- `worksheet` (string): Worksheet name. Defaults to the active sheet. Overrides any sheet prefix in range.

### `rebel_office_excel_write_range` (~159 tokens)

Write Excel range

Write values to cells in the active workbook. Provide data as a 2D array of values. Supports numbers, strings, booleans, and null (for empty cells). Auto-expands the target range to fit the data dimensions.

Use `rebel_office_excel_set_formula` for formula cells.

Common use cases: populating a spreadsheet, updating existing data, bulk data entry.

Input parameters:

- `range` (string, required): Starting cell in A1 notation (e.g., "A1", "Sheet2!C5"). Data fills rightward and downward.
- `values` (array, required): 2D array of values. Each inner array is a row.
- `worksheet` (string): Worksheet name. Defaults to active sheet.

### `rebel_office_excel_get_worksheets` (~72 tokens)

List worksheets

List all worksheets in the active workbook with their names, positions, visibility, and basic info (used range, row/column counts).

Use this to discover available sheets before reading or writing data.

Related tools: Use `rebel_office_excel_add_worksheet` to create new sheets.

### `rebel_office_excel_add_worksheet` (~107 tokens)

Add worksheet

Add a new worksheet to the workbook. Optionally specify a name and position. Returns the new sheet's name and index.

Related tools: Use `rebel_office_excel_delete_worksheet` to remove sheets.

Input parameters:

- `afterSheet` (string): Sheet name to insert after (for position: "afterSheet").
- `name` (string): Sheet name. Auto-generated if omitted (e.g., "Sheet4").
- `position` (string): Where to insert.

### `rebel_office_excel_delete_worksheet` (~54 tokens)

Delete worksheet

Delete a worksheet from the workbook. **This permanently removes the sheet and all its data — cannot be undone.** Returns confirmation of deletion.

Input parameters:

- `worksheet` (string, required): Name of the worksheet to delete.

### `rebel_office_excel_read_table` (~129 tokens)

Read Excel table

Read data from a named Excel table (ListObject). Returns headers and rows with type information. Tables are structured ranges with automatic filtering and sorting capabilities.

Preferred over `rebel_office_excel_read_range` for structured data.

Related tools: Use `rebel_office_excel_get_named_ranges` to discover available tables.

Input parameters:

- `limit` (integer): Maximum rows to return.
- `offset` (integer): Row offset for pagination.
- `return_json` (boolean): Return as array of objects (keyed by headers).
- `tableName` (string, required): Name of the Excel table.

### `rebel_office_excel_create_table` (~137 tokens)

Create Excel table

Convert a cell range into a named Excel table with headers. Tables enable structured references, automatic filtering, and formatted data management. The first row of the range becomes the header row.

Related tools: Use `rebel_office_excel_read_table` to read from tables.

Input parameters:

- `name` (string): Table name. Auto-generated if omitted.
- `range` (string, required): Cell range in A1 notation (must include the header row).
- `style` (string): Table style (e.g., "TableStyleMedium2", "TableStyleLight1").
- `worksheet` (string): Worksheet name. Defaults to active sheet.

### `rebel_office_excel_set_formula` (~163 tokens)

Set formula

Set a formula in one or more cells. Supports standard Excel formulas (SUM, VLOOKUP, IF, etc.), array formulas, and dynamic array formulas. The formula is entered exactly as provided — include the leading `=`.

For bulk formulas applied to a column, use the `fillDown` option.

Common use cases: adding calculated columns, creating summary formulas, building dashboards.

Input parameters:

- `cell` (string, required): Cell in A1 notation (e.g., "E2").
- `fillDown` (integer): Number of rows to fill down with the formula.
- `formula` (string, required): Formula string including the = sign (e.g., "=SUM(A1:A10)").
- `worksheet` (string): Worksheet name. Defaults to active sheet.

### `rebel_office_excel_get_formulas` (~103 tokens)

Read formulas

Read the formulas (not computed values) from a range of cells. Returns the formula strings for each cell. Cells without formulas return their literal values.

Useful for understanding calculation logic, auditing spreadsheets, or debugging formula errors.

Related tools: Use `rebel_office_excel_read_range` to get computed values instead.

Input parameters:

- `range` (string, required): Cell range in A1 notation.
- `worksheet` (string): Worksheet name. Defaults to active sheet.

### `rebel_office_excel_create_chart` (~170 tokens)

Create chart

Create a chart from data in the workbook. Supports bar, column, line, pie, area, scatter, doughnut, and radar chart types. The chart is embedded in the specified worksheet.

Provide a data range including headers for automatic series detection.

Common use cases: visualizing trends, creating dashboards, presenting data summaries.

Input parameters:

- `chartType` (string, required): Chart type.
- `dataRange` (string, required): Data range in A1 notation including headers (e.g., "A1:C12").
- `position` (object): Chart position and size in points.
- `seriesOrientation` (string): Whether data series are in columns or rows.
- `title` (string): Chart title.
- `worksheet` (string): Worksheet to place the chart on. Defaults to the data's sheet.

### `rebel_office_excel_format_range` (~116 tokens)

Format Excel range

Apply formatting to a cell range — font, colors, borders, number format, alignment, and fill.

Common use cases: highlighting important cells, formatting currency/percentages, adding borders to tables, color-coding categories.

Related tools: Use `rebel_office_excel_add_conditional_formatting` for rule-based formatting.

Input parameters:

- `formatting` (object, required): Formatting options to apply.
- `range` (string, required): Cell range in A1 notation.
- `worksheet` (string): Worksheet name. Defaults to active sheet.

### `rebel_office_excel_add_conditional_formatting` (~91 tokens)

Add conditional formatting

Add conditional formatting rules to a range. Supports color scales, data bars, icon sets, and cell-value-based rules.

Common use cases: heat maps for data, traffic-light indicators, highlighting cells above/below thresholds.

Input parameters:

- `range` (string, required): Cell range in A1 notation.
- `rule` (object, required): Conditional formatting rule.
- `worksheet` (string): Worksheet name.

### `rebel_office_excel_sort_range` (~133 tokens)

Sort range or table

Sort a range or table by one or more columns. Supports ascending/descending order and multi-level sorting. When sorting a table, use column names; when sorting a range, use column letters or indices.

Related tools: Use `rebel_office_excel_filter_table` to filter without reordering data.

Input parameters:

- `range` (string): Cell range in A1 notation. Either range or tableName is required.
- `sortFields` (array, required): Sort criteria (applied in order).
- `tableName` (string): Name of an Excel table to sort.
- `worksheet` (string): Worksheet name.

### `rebel_office_excel_filter_table` (~118 tokens)

Filter table

Apply or clear auto-filter on an Excel table or range. Filter by specific values, conditions, or clear all filters. Use to focus on relevant data subsets without removing rows.

Related tools: Use `rebel_office_excel_sort_range` to reorder data.

Input parameters:

- `filters` (array): Filter criteria. Omit to clear all filters.
- `range` (string): Cell range with headers.
- `tableName` (string): Table name. Either tableName or range is required.
- `worksheet` (string): Worksheet name.

### `rebel_office_excel_get_named_ranges` (~82 tokens)

List named ranges and tables

List all named ranges and tables in the workbook. Returns name, scope (workbook or worksheet), reference, and type (named range or table).

Useful for discovering available data structures before reading.

Related tools: Use `rebel_office_excel_read_table` for table data, `rebel_office_excel_read_range` for named ranges.

### `rebel_office_excel_insert_rows_columns` (~108 tokens)

Insert rows or columns

Insert new rows or columns into a worksheet. Existing data shifts to accommodate the insertion.

Use for adding space for new data, inserting summary rows, or expanding tables.

Input parameters:

- `count` (integer): Number of rows/columns to insert.
- `position` (string, required): Row number (e.g., "5") or column letter (e.g., "C") to insert before.
- `type` (string, required): What to insert.
- `worksheet` (string): Worksheet name.

### `rebel_office_excel_delete_rows_columns` (~92 tokens)

Delete rows or columns

Delete rows or columns from a worksheet. **This permanently removes the data in those rows/columns — cannot be undone.** Remaining data shifts to fill the gap.

Input parameters:

- `count` (integer): Number of rows/columns to delete.
- `start` (string, required): Starting row number or column letter.
- `type` (string, required): What to delete.
- `worksheet` (string): Worksheet name.

### `rebel_office_excel_merge_cells` (~96 tokens)

Merge or unmerge cells

Merge or unmerge cells in a range. Merged cells combine into a single cell displaying the upper-left value. Use for headers spanning multiple columns or creating visual groupings.

\**Warning: merging discards values from all cells except the upper-left.**

Input parameters:

- `action` (string, required): Merge or unmerge.
- `range` (string, required): Cell range to merge/unmerge.
- `worksheet` (string): Worksheet name.

### `rebel_office_excel_auto_fit` (~81 tokens)

Auto-fit columns or rows

Auto-fit column widths or row heights to fit content. Makes data readable without manual column resizing. Apply to specific columns/rows or the entire used range.

Input parameters:

- `range` (string): Range to auto-fit. Defaults to the entire used range.
- `target` (string): What to auto-fit.
- `worksheet` (string): Worksheet name.

### `rebel_office_excel_add_data_validation` (~126 tokens)

Add data validation

Add data validation rules to a cell range. Restricts what values can be entered — dropdown lists, number ranges, date ranges, text length limits, or custom formulas.

Common use cases: dropdown menus for status columns, ensuring numeric fields only accept numbers, date range constraints.

Input parameters:

- `errorMessage` (string): Custom error message.
- `range` (string, required): Cell range in A1 notation.
- `rule` (object, required): Validation rule.
- `showErrorAlert` (boolean): Show error when invalid data is entered.
- `worksheet` (string): Worksheet name.

### `rebel_office_excel_get_comments` (~100 tokens)

Read Excel comments

Read all comments in the workbook or a specific worksheet. Returns each comment with its cell location, author, text, reply thread, and resolved status.

Excel supports threaded comments — replies are nested under the parent.

Related tools: Use `rebel_office_excel_add_comment` to add new comments.

Input parameters:

- `includeResolved` (boolean): Include resolved comments.
- `worksheet` (string): Limit to a specific worksheet. Defaults to all sheets.

### `rebel_office_excel_add_comment` (~123 tokens)

Add Excel comment

Add a comment to a specific cell. Comments appear as threaded discussions anchored to cells. Provide a cell reference and comment text. To reply to an existing comment thread, provide the parent comment ID.

Related tools: Use `rebel_office_excel_get_comments` to read existing comments.

Input parameters:

- `cell` (string, required): Cell reference in A1 notation (e.g., "B5").
- `replyToCommentId` (string): Parent comment ID for threaded replies.
- `text` (string, required): Comment text.
- `worksheet` (string): Worksheet name.

### `rebel_office_powerpoint_get_slides` (~87 tokens)

List slides

List all slides in the active presentation with summaries — slide number, layout, title text (if any), and shape count.

Use this to understand the presentation structure before making targeted edits. Returns a compact overview; use `rebel_office_powerpoint_get_slide_content` for full details on a specific slide.

Input parameters:

- `limit` (integer): Maximum slides to return.

### `rebel_office_powerpoint_get_slide_content` (~82 tokens)

Get slide content

Get the full content of a specific slide — all shapes, text boxes, images, and their properties (position, size, text content, formatting).

Use after `rebel_office_powerpoint_get_slides` to drill into a specific slide for detailed reading or editing.

Input parameters:

- `slideIndex` (integer, required): Slide index (1-based).

### `rebel_office_powerpoint_add_slide` (~159 tokens)

Add slide

Add a new slide to the presentation. Specify a layout and optional initial content (title, subtitle, body text). The slide is inserted at the specified position or at the end.

Standard PowerPoint layouts: "Title Slide", "Title and Content", "Section Header", "Two Content", "Comparison", "Title Only", "Blank".

Input parameters:

- `body` (string): Body text (for "Title and Content" layout). Supports newlines for bullet items.
- `layout` (string): Slide layout name.
- `position` (integer): Position to insert (1-based). Defaults to end of presentation.
- `subtitle` (string): Subtitle text (for "Title Slide" layout).
- `title` (string): Title text.

### `rebel_office_powerpoint_delete_slide` (~56 tokens)

Delete slide

Delete a slide from the presentation by index. **This permanently removes the slide and all its content — cannot be undone.** Returns confirmation.

Input parameters:

- `slideIndex` (integer, required): Slide index to delete (1-based).

### `rebel_office_powerpoint_reorder_slides` (~68 tokens)

Reorder slides

Move a slide to a new position in the presentation. Reorders the slide deck without modifying content. Use for restructuring presentation flow.

Input parameters:

- `fromIndex` (integer, required): Current slide index (1-based).
- `toIndex` (integer, required): Target position (1-based).

### `rebel_office_powerpoint_add_text_box` (~108 tokens)

Add text box

Add a text box to a slide at a specified position. Configure font, size, color, and alignment.

Text boxes are independent shapes — for content in a slide layout's placeholder, use `rebel_office_powerpoint_update_text` instead.

Input parameters:

- `formatting` (object): Text formatting options.
- `position` (object, required): Position and dimensions in points.
- `slideIndex` (integer, required): Slide index (1-based).
- `text` (string, required): Text content.

### `rebel_office_powerpoint_add_image` (~83 tokens)

Add image to slide

Add an image to a slide from a file path or base64 data. Position and size the image precisely on the slide. Supports PNG, JPEG, GIF, and SVG formats.

Input parameters:

- `position` (object, required): Position and dimensions in points.
- `slideIndex` (integer, required): Slide index (1-based).
- `source` (object, required): Image source.

### `rebel_office_powerpoint_add_shape` (~157 tokens)

Add shape

Add a geometric shape to a slide. Supports rectangles, circles, arrows, stars, callouts, and more. Shapes can contain text and have fill colors and line styles.

Input parameters:

- `fillColor` (string): Hex fill color.
- `lineColor` (string): Hex line color.
- `lineWidth` (number): Line width in points.
- `position` (object, required): Position and dimensions in points.
- `shapeType` (string, required): Shape type (e.g., "rectangle", "ellipse", "roundedRectangle", "triangle", "rightArrow", "star5", "callout1").
- `slideIndex` (integer, required): Slide index (1-based).
- `text` (string): Text inside the shape.

### `rebel_office_powerpoint_update_text` (~115 tokens)

Update text in shape

Update existing text in a shape or placeholder on a slide. Identify the target by shape ID (from `rebel_office_powerpoint_get_slide_content`) or by placeholder type ("title", "subtitle", "body"). Use this to modify existing content rather than adding new shapes.

Input parameters:

- `formatting` (object): Text formatting options.
- `slideIndex` (integer, required): Slide index (1-based).
- `target` (object, required): Which shape or placeholder to update.
- `text` (string, required): New text content.

### `rebel_office_powerpoint_get_speaker_notes` (~81 tokens)

Read speaker notes

Read speaker notes for one or all slides. Returns the notes text for each slide.

Speaker notes are the presenter's script — often used for meeting talking points, cue cards, or detailed explanations not shown to the audience.

Input parameters:

- `slideIndex` (integer): Specific slide (1-based). Omit to get notes for all slides.

### `rebel_office_powerpoint_set_speaker_notes` (~78 tokens)

Set speaker notes

Set or update the speaker notes for a slide. Replaces any existing notes.

Use for adding presenter talking points, meeting prep notes, or detailed explanations. Notes support plain text with basic line breaks.

Input parameters:

- `notes` (string, required): Speaker notes text.
- `slideIndex` (integer, required): Slide index (1-based).

### `rebel_office_powerpoint_get_presentation_properties` (~46 tokens)

Get presentation properties

Get the presentation's metadata — title, slide dimensions, slide count, layout names, and theme information. Use to understand the presentation context before making changes.

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/mindstone-mcp-server-office/mindstone-mcp-server-office#diagnostics

## Score history

- 2026-08-05: 68
- 2026-08-04: 66
- 2026-08-03: 63
- 2026-08-02: 63
- 2026-08-01: 5
- 2026-07-31: 5
- 2026-07-30: 45
- 2026-07-28: 45
- 2026-07-27: 45

## Links

- npm package: https://www.npmjs.com/package/@mindstone/mcp-server-office
- Socket report: https://socket.dev/npm/package/@mindstone/mcp-server-office
- Repository: https://github.com/mindstone/mcp-servers
- Changelog RSS feed: https://verifymcp.io/servers/mindstone-mcp-server-office/mindstone-mcp-server-office/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/mindstone-mcp-server-office/mindstone-mcp-server-office/changelog.json
- HTML version of this page: https://verifymcp.io/servers/mindstone-mcp-server-office/mindstone-mcp-server-office
