Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_open_workbooksA

List all workbooks currently open, across every running Excel instance.

Returns: JSON with each workbook's name, full path, save state, and which Excel window (by Hwnd) it belongs to.

get_workbook_infoA

Get worksheet names, the active sheet, and each sheet's used range.

Args: workbook: Workbook name or path (None = the active workbook of the first Excel instance found).

Returns: JSON with sheet names, the active sheet, and each sheet's used range and visibility.

save_workbookA

Save an open workbook in place (equivalent to pressing Ctrl+S).

Args: workbook: Workbook name or path (None = the active workbook of the first Excel instance found).

Returns: JSON confirmation.

list_worksheetsA

List worksheet names, in tab order, for an open workbook.

Args: workbook: Workbook name or path (None = active workbook).

Returns: JSON with sheet names and which one is active.

add_worksheetA

Add a new worksheet to an open workbook.

Args: workbook: Workbook name or path (None = active workbook). name: Name for the new sheet (None = Excel's default, e.g. "Sheet4"). index: 1-based tab position to insert before (None = before the active sheet).

Returns: JSON with the new sheet's name and position.

delete_worksheetA

Delete a worksheet from an open workbook.

Args: workbook: Workbook name or path (None = active workbook). name: Sheet to delete (required).

Returns: JSON confirmation. Excel will refuse to delete a workbook's only remaining visible sheet.

rename_worksheetA

Rename a worksheet in an open workbook.

Args: workbook: Workbook name or path (None = active workbook). name: Current sheet name (None = active sheet). new_name: New sheet name (required).

Returns: JSON with the old and new names.

activate_worksheetA

Make a worksheet the active tab in an open workbook.

Args: workbook: Workbook name or path (None = active workbook). name: Sheet to activate (required).

Returns: JSON confirmation.

get_range_valuesA

Read values from a cell or range in an open workbook.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address, e.g. "A1" or "A1:C10".

Returns: JSON with the values as a 2D array (even for a single cell).

set_range_valuesA

Write values into a cell or range in an open workbook.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: The top-left cell to write into, e.g. "A1" or "B2". values: A single value, a flat list (written as one row), or a list of lists (2D block) anchored at range_address's top-left cell.

Returns: JSON with the range actually written to.

get_range_formulasA

Read formulas from a cell or range.

Formulas are returned A1-style (e.g. "=SUM(A1:A10)"). Cells without a formula return their literal value instead.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address, e.g. "A1" or "A1:C10".

Returns: JSON with the formulas/values as a 2D array.

set_cell_formulaA

Set a formula (or literal value) on a single cell.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). cell: A1-style cell reference, e.g. "B2". formula: Formula string starting with '=' (e.g. "=SUM(A1:A10)"), or a literal value.

Returns: JSON with the cell's resulting calculated value.

find_replaceA

Find and replace text in an open workbook.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = every sheet in the workbook). find_text: Text to search for (required). replace_text: Replacement text. match_case: Case-sensitive match. whole_cell: Match the entire cell contents rather than a substring.

Returns: JSON with which sheets had at least one replacement.

clear_rangeA

Clear cell contents from a range, optionally including formatting.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address, e.g. "A1:C10". clear_formatting: Also reset fonts, fills, and number formats (Range.Clear instead of Range.ClearContents).

Returns: JSON confirmation.

format_rangeA

Apply font, fill, number-format, and alignment to a cell or range.

Only arguments that are explicitly set are changed; everything else is left as-is.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address, e.g. "A1:C1". bold, italic, underline: Font style toggles. font_name: e.g. "Calibri". font_size: Point size. font_color: Hex RGB, e.g. "FF0000" (with or without leading '#'). fill_color: Hex RGB cell background color. number_format: Excel number format code, e.g. "$#,##0.00" or "0.0%". horizontal_align: One of "left", "center", "right", "general". wrap_text: Whether to wrap text within the cell.

Returns: JSON confirmation of the range formatted.

autofit_columnsA

Autofit column widths for a range, or the sheet's used range if none given.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address (None = the sheet's used range).

Returns: JSON confirmation.

add_commentA

Add a comment (note) to a cell in an open workbook.

Replaces any existing comment on the cell.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). cell: A1-style single-cell reference, e.g. "B2". text: Comment text (required). author: Comment author (default: MCP_AUTHOR env var, or "Author").

Returns: JSON confirmation.

get_commentsA

List all comments on a worksheet.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet).

Returns: JSON with each comment's cell address and text.

delete_commentA

Delete the comment on a specific cell, if any.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). cell: A1-style single-cell reference, e.g. "B2".

Returns: JSON confirmation.

insert_rowsA

Insert one or more blank rows, shifting existing rows down.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). row_index: 1-based row number the new rows are inserted before (required). count: How many rows to insert.

Returns: JSON confirmation.

delete_rowsA

Delete one or more rows, shifting rows below them up.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). row_index: 1-based row number to start deleting from (required). count: How many rows to delete.

Returns: JSON confirmation.

insert_columnsA

Insert one or more blank columns, shifting existing columns right.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). column: Column letter(s) the new columns are inserted before, e.g. "B" (required). count: How many columns to insert.

Returns: JSON confirmation.

delete_columnsA

Delete one or more columns, shifting columns to their right left.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). column: Column letter(s) to start deleting from, e.g. "B" (required). count: How many columns to delete.

Returns: JSON confirmation.

sort_rangeA

Sort a range by one column.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: The range to sort, e.g. "A1:C10". key_column: 1-based column offset within range_address to sort by (1 = the range's leftmost column). ascending: Sort direction. has_header: Whether the range's first row is a header (excluded from sorting, kept in place).

Returns: JSON confirmation.

add_conditional_format_ruleA

Add a cell-value conditional formatting rule to a range.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address, e.g. "A1:A20". condition: One of "greater_than", "less_than", "greater_equal", "less_equal", "equal_to", "not_equal", "between", "not_between". value1: Comparison value (required). Numbers or text. value2: Second comparison value, required only for "between"/ "not_between". fill_color: Hex RGB cell fill to apply when the rule matches. font_color: Hex RGB font color to apply when the rule matches. bold: Bold the font when the rule matches.

Returns: JSON with the new rule's index (rules apply in index order).

add_color_scaleA

Add a 2-color or 3-color scale to a range.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address, e.g. "A1:A20". min_color: Hex RGB for the lowest value (default: a red). max_color: Hex RGB for the highest value (default: a green). mid_color: Hex RGB for the midpoint (None = 2-color scale; set this for a 3-color scale, e.g. yellow "FFEB84").

Returns: JSON confirmation.

list_conditional_format_rulesA

List conditional formatting rules applied to a range.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address, e.g. "A1:A20".

Returns: JSON with each rule's index, COM Type/Operator codes, and formulas (cell-value rules only report formulas; color scales report just the type).

clear_conditional_format_rulesA

Remove all conditional formatting rules from a range.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address, e.g. "A1:A20".

Returns: JSON confirmation.

list_named_rangesA

List user-defined named ranges in a workbook.

Hidden/internal names (e.g. Excel's own Print_Area, filter ranges) are omitted.

Args: workbook: Workbook name or path (None = active workbook).

Returns: JSON with each name and what it refers to.

read_named_rangeA

Read the current value(s) of a named range.

Args: workbook: Workbook name or path (None = active workbook). name: Named range to read (required).

Returns: JSON with the value(s) as a 2D array.

write_named_rangeA

Write a single value into a named range's top-left cell.

For multi-cell named ranges, only the top-left cell is set — use set_range_values with the range's address for block writes.

Args: workbook: Workbook name or path (None = active workbook). name: Named range to write to (required). value: New value (required).

Returns: JSON confirmation.

create_named_rangeA

Create a new named range.

Args: workbook: Workbook name or path (None = active workbook). name: Name to create (required). Must start with a letter or underscore and contain no spaces. range_address: A1-style address the name refers to, e.g. "A1:C10". sheet: Worksheet the range is on (None = active sheet).

Returns: JSON confirmation with the resolved absolute reference.

update_named_rangeA

Change what an existing named range refers to.

Args: workbook: Workbook name or path (None = active workbook). name: Existing named range to update (required). range_address: New A1-style address, e.g. "A1:C10". sheet: Worksheet the new range is on (None = active sheet).

Returns: JSON confirmation with the resolved absolute reference.

delete_named_rangeB

Delete a named range.

Args: workbook: Workbook name or path (None = active workbook). name: Named range to delete (required).

Returns: JSON confirmation.

add_dropdown_validationA

Restrict a range to a dropdown list of allowed values.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address, e.g. "B2:B20". values: List of allowed string values (required), e.g. ["Yes", "No"].

Returns: JSON confirmation.

add_number_validationA

Restrict a range to numbers matching a comparison.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address, e.g. "B2:B20". condition: One of "greater_than", "less_than", "greater_equal", "less_equal", "equal_to", "not_equal", "between", "not_between". value1: Comparison value (required). value2: Second comparison value, required only for "between"/ "not_between". decimal: Allow decimals (False = whole numbers only).

Returns: JSON confirmation.

get_validationA

Read the data validation rule applied to a cell, if any.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). cell: A1-style cell reference, e.g. "B2".

Returns: JSON with the validation type/operator/formulas, or has_validation: false if none is set.

remove_validationA

Remove data validation from a range.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address, e.g. "B2:B20".

Returns: JSON confirmation.

merge_cellsA

Merge a range into a single cell.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address, e.g. "A1:C1".

Returns: JSON confirmation.

unmerge_cellsA

Undo a cell merge.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address covering the merged area, e.g. "A1:C1".

Returns: JSON confirmation.

get_merge_infoA

Check whether a cell is part of a merged range.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). cell: A1-style cell reference, e.g. "B2".

Returns: JSON with is_merged and, if true, the full merged area's address.

add_hyperlinkA

Add a hyperlink to a cell.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). cell: A1-style single-cell reference, e.g. "B2". address: Target URL (e.g. "https://example.com"), or an internal reference prefixed with '#' (e.g. "#Sheet2!A1"). text_to_display: Text shown in the cell (None = the address itself). screen_tip: Tooltip text shown on hover.

Returns: JSON confirmation.

remove_hyperlinkA

Remove the hyperlink from a cell, if any.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). cell: A1-style single-cell reference, e.g. "B2".

Returns: JSON confirmation.

list_hyperlinksA

List all hyperlinks on a worksheet.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet).

Returns: JSON with each hyperlink's cell, address, and display text.

create_tableA

Create an Excel Table from a range.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: A1-style address the table will cover, e.g. "A1:C10". table_name: Name for the new table (None = Excel's default, e.g. "Table1"). has_headers: Whether the range's first row is a header row.

Returns: JSON with the new table's name and range.

list_tablesA

List Excel Tables on a worksheet.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet).

Returns: JSON with each table's name and range.

get_table_infoA

Get a table's structure: columns, range, and style.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). table_name: Table to inspect (required).

Returns: JSON with column names, range, row count, and style.

append_table_rowsA

Append one or more rows to the end of a table.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). table_name: Table to append to (required). rows: A list of rows, each a list of values matching the table's column count (required), e.g. [["Widget", 12, 4.5]].

Returns: JSON with the table's resulting row count.

get_table_dataA

Read a table's data rows (excluding the header) as a 2D array.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). table_name: Table to read (required).

Returns: JSON with the column names and data rows.

apply_table_styleA

Apply a built-in table style.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). table_name: Table to style (required). style_name: Built-in style name, e.g. "TableStyleMedium2", "TableStyleLight9", "TableStyleDark3".

Returns: JSON confirmation.

delete_tableA

Remove a table's definition, keeping the underlying cell data.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). table_name: Table to remove (required).

Returns: JSON confirmation.

create_chartA

Create a chart from a range.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). range_address: Source data range, e.g. "A1:C10". chart_type: One of "column_clustered", "bar_clustered", "line", "pie", "area", "scatter", "doughnut". title: Chart title (None = no title). chart_name: Name for the new chart (None = Excel's default, e.g. "Chart 1"). left, top, width, height: Position and size in points.

Returns: JSON with the new chart's name.

list_chartsA

List charts on a worksheet.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet).

Returns: JSON with each chart's name and position/size.

set_chart_typeA

Change a chart's type.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). chart_name: Chart to change (required). chart_type: One of "column_clustered", "bar_clustered", "line", "pie", "area", "scatter", "doughnut".

Returns: JSON confirmation.

set_chart_titleA

Set or clear a chart's title.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). chart_name: Chart to update (required). title: New title text. Empty string or None removes the title.

Returns: JSON confirmation.

add_seriesB

Add a data series to a chart.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). chart_name: Chart to add the series to (required). series_range: A1-style address of the series' values, e.g. "D2:D10" (required). series_name: Legend label for the series (None = Excel's default).

Returns: JSON confirmation.

delete_chartA

Delete a chart.

Args: workbook: Workbook name or path (None = active workbook). sheet: Worksheet name (None = active sheet). chart_name: Chart to delete (required).

Returns: JSON confirmation.

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/trustypangolin/excel-mcp-live'

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