xlsx-tools-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| XLSX_MCP_FILES | No | Comma-separated list of alias=absolute/path entries or bare absolute paths to preload workbooks at startup. Example: report=/data/report.xlsx,sales=/data/sales.xlsx | |
| XLSX_MCP_LOCK_TIMEOUT | No | Timeout in seconds for acquiring the per-file lock before failing. Defaults to 10. | 10 |
| XLSX_MCP_RECALC_TIMEOUT | No | Timeout in seconds for the LibreOffice recalculation pass. Defaults to 60. | 60 |
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 |
|---|---|
| list_configured_filesA | List files preloaded at server startup (via the XLSX_MCP_FILES env var). Call this first if unsure which files are available — every other tool's |
| list_sheetsA | List every sheet in a workbook with its approximate row/column counts. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. |
| get_workbook_infoA | Get workbook-level metadata: sheets, exact dimensions, active sheet, defined names. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. |
| read_sheetA | Read cell values from a sheet as a 2D array, addressed absolutely from A1. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. cell_range: Optional A1-style range (e.g. "B2:F20"). Omit to read the full used area. max_rows: Optional cap on the number of rows returned, to bound response size for large sheets. |
| get_cellA | Get full detail for a single cell: value, formula, number format, font, fill, merge, comment. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. cell: Cell reference, e.g. "C5". |
| search_workbookA | Search cell values across one or all sheets for a substring match. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. query: Substring to search for. sheet: Restrict the search to one sheet; omit to search every sheet. match_case: Case-sensitive match when True. limit: Optional cap on the number of matches returned, to bound response size for large sheets. |
| aggregate_sheetA | Group and aggregate sheet data with pandas (e.g. sum sales by region). Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. group_by: Column names to group by (taken from the header row). agg: Mapping of column name to aggregation function, e.g. {"amount": "sum"}. cell_range: Optional A1-style range to read before aggregating. has_header: Whether the first row of the range holds column names. |
| create_workbookA | Create a new .xlsx workbook. Args: path: Path for the new file. New files aren't preloaded, so this must be a real path. sheets: Sheet names to create (defaults to a single "Sheet1"). overwrite: Replace an existing file at path when True. |
| write_cellsA | Write values and/or formulas into specific cells, then recalculate the workbook. Set Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. cells: List of {"cell": "A1", "value": ...} or {"cell": "B1", "formula": "=A1*2"}. create_sheet_if_missing: Create the sheet first if it doesn't exist yet. recalculate: Run the LibreOffice recompute pass after saving. Returns:
Write result including |
| append_rowsA | Append rows after the last used row of a sheet, then recalculate the workbook. Set Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. rows: List of rows, each a list of cell values in column order. create_sheet_if_missing: Create the sheet first if it doesn't exist yet. recalculate: Run the LibreOffice recompute pass after saving. |
| create_sheetA | Add a new empty sheet to an existing workbook. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Name for the new sheet. index: Zero-based position to insert at; omit to append at the end. |
| delete_sheetA | Delete a sheet from a workbook. Fails if it is the only sheet left. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name to delete. |
| insert_rowsA | Insert blank rows, shifting existing rows down. Set Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. start_row: 1-based row index to insert before. count: Number of rows to insert. recalculate: Run the LibreOffice recompute pass after saving. |
| delete_rowsA | Delete rows, shifting the rows below them upward. Set Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. start_row: 1-based row index to start deleting from. count: Number of rows to delete. recalculate: Run the LibreOffice recompute pass after saving. |
| insert_columnsA | Insert blank columns, shifting existing columns right. Set Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. start_column: 1-based column index to insert before. count: Number of columns to insert. recalculate: Run the LibreOffice recompute pass after saving. |
| delete_columnsA | Delete columns, shifting the columns to their right leftward. Set Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. start_column: 1-based column index to start deleting from. count: Number of columns to delete. recalculate: Run the LibreOffice recompute pass after saving. |
| merge_cellsA | Merge a rectangular range of cells into one. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. cell_range: A1-style range, e.g. "A1:C1". |
| unmerge_cellsA | Undo a merge on a range of cells. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. cell_range: A1-style range that was previously merged. |
| set_cell_styleA | Apply formatting to a range of cells. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. cell_range: A1-style range, e.g. "A1:D1". style: Keys among: bold, italic, font_size, font_color (hex RGB, e.g. "FF0000"), bg_color (hex RGB), horizontal, vertical (alignment), border ("thin", "medium", "thick", ...), number_format (e.g. "#,##0.00"). |
| recalculate_workbookA | Force a LibreOffice headless recalculation pass and report any formula errors found. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. |
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/ruriazz/xlsx-tools-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server