Skip to content
Agentmart
Submit a tool

xlsx-tools-mcp

MCP server for accurate, structure-preserving read/write access to Excel (.xlsx) files

Connector by ruriazz · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 4
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/ruriazz-xlsx-tools-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

MCP server for accurate, structure-preserving read/write access to Excel (.xlsx) files

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
7 read · 12 write · 4 delete · 6 not yet classified
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Tools by what they do 29

Read from the source code; the running server may list different tools.

Read 7 · Look things up without changing anything.

  • get_cell
  • get_workbook_info
  • list_configured_files
  • list_sheets
  • query_sheet
  • read_sheet
  • search_workbook

Write 12 · Create, change, send or run things.

  • append_rows
  • create_chart
  • create_sheet
  • create_table
  • create_workbook
  • insert_columns
  • insert_rows
  • merge_cells
  • rename_sheet
  • restore_backup
  • set_cell_style
  • write_cells

Delete 4 · Delete, drop, revoke or wipe things.

  • clear_range
  • delete_columns
  • delete_rows
  • delete_sheet

Not yet classified 6 · We could not tell from the name and description.

  • aggregate_sheet
  • autofit_columns
  • copy_sheet
  • profile_sheet
  • recalculate_workbook
  • unmerge_cells

Secrets and settings it asks for

Other settings (environment variables or headers).

  • XLSX_MCP_ALLOWED_DIRS
  • XLSX_MCP_AUTO_BACKUP
  • XLSX_MCP_BACKUP_DIR
  • XLSX_MCP_FILES
  • XLSX_MCP_LOCK_TIMEOUT
  • XLSX_MCP_RECALC_TIMEOUT

Network hosts it talks to 1

  • github.com · found in code

Files it touches

  • Any path the agent passes to its tools

Tools (29)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • aggregate_sheet

    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.

  • append_rows

    Append rows after the last used row of a sheet, then recalculate the workbook. Set `recalculate=False` to skip the LibreOffice recompute (e.g. for structurally complex workbooks you don't want round-tripped). 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.

  • autofit_columns

    Automatically adjust column widths based on maximum text length. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. min_width: Minimum allowed column width. max_width: Maximum allowed column width. padding: Extra padding characters to add to max length.

  • clear_range

    Clear cell values and/or styles within a specified range without deleting rows or columns. 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:D10") to clear. clear_values: Whether to clear cell values (True by default). clear_styles: Whether to clear cell styles/formats (False by default).

  • copy_sheet

    Duplicate a sheet including its contents, formulas, and styles. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. source_sheet: Name of the sheet to duplicate. target_sheet: Name of the new sheet (1-31 chars, valid Excel sheet name).

  • create_chart

    Create a native Excel chart (bar, line, pie, scatter). Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. chart_type: One of "bar", "line", "pie", "scatter". data_range: A1-style range holding the chart series values (e.g. "B1:B10"). categories_range: Optional A1-style range holding series category labels (e.g. "A2:A10"). title: Title string displayed on the chart. target_cell: Cell coordinate where the top-left corner of the chart is placed. backup: Whether to create a backup bef…

  • create_sheet

    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.

  • create_table

    Create a formal Excel Table (ListObject) on the specified range. 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:D10"). table_name: Unique table identifier across the workbook. style_name: Table style name (e.g. "TableStyleMedium9"). show_filter: Whether to display auto-filter dropdown arrows. show_row_stripes: Whether to apply alternating row shading. backup: Whether to create a backup before modifying the workbook.

  • create_workbook

    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.

  • delete_columns

    Delete columns, shifting the columns to their right leftward. Set `recalculate=False` to skip the LibreOffice recompute (e.g. for structurally complex workbooks you don't want round-tripped). 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.

  • delete_rows

    Delete rows, shifting the rows below them upward. Set `recalculate=False` to skip the LibreOffice recompute (e.g. for structurally complex workbooks you don't want round-tripped). 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.

  • delete_sheet

    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.

  • get_cell

    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".

  • get_workbook_info

    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.

  • insert_columns

    Insert blank columns, shifting existing columns right. Set `recalculate=False` to skip the LibreOffice recompute (e.g. for structurally complex workbooks you don't want round-tripped). 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.

Show 14 more tools
  • insert_rows

    Insert blank rows, shifting existing rows down. Set `recalculate=False` to skip the LibreOffice recompute (e.g. for structurally complex workbooks you don't want round-tripped). 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.

  • list_configured_files

    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 `path` argument accepts these names directly (or can be omitted if only one is configured), no filesystem search needed.

  • list_sheets

    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.

  • merge_cells

    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".

  • profile_sheet

    Profile sheet data: metadata, inferred types, null counts, min/max, sample values. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. sample_rows: Number of non-null sample values to return per column.

  • query_sheet

    Query sheet data using pandas expressions without returning the entire sheet into the LLM context. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. sheet: Sheet name. filter_query: Pandas query expression (e.g. "status == 'PAID' and amount > 500"). columns: Optional list of columns to return. max_rows: Maximum rows to return (default 100). cell_range: Optional range to restrict reading before querying.

  • read_sheet

    Read cell values from a sheet. 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. offset_row: Skip a number of data rows (0-indexed from first data row). format: "array" (default 2D list), "records" (list of dicts, first row as keys), or "markdown" (table string).

  • recalculate_workbook

    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.

  • rename_sheet

    Rename an existing sheet. Warning: This tool does NOT automatically update formula references in other sheets. Formulas depending on the old sheet name will break. Args: path: Path to the .xlsx file, or the name of a preloaded file. Omit if only one file is configured. old_name: Current name of the sheet. new_name: New name for the sheet (1-31 chars, valid Excel sheet name).

  • restore_backup

    Restore a backup file over a target workbook atomically. Args: backup_path: Path to the .bak file to restore from. target_path: Path to the target .xlsx/.xlsm file to overwrite.

  • search_workbook

    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.

  • set_cell_style

    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").

  • unmerge_cells

    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.

  • write_cells

    Write values and/or formulas into specific cells, then recalculate the workbook. Set `recalculate=False` to skip the LibreOffice recompute (e.g. for structurally complex workbooks you don't want round-tripped). 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: Wr…

Compare and alternatives

    Featured in

    Signals

    Stars
    4
    Forks
    0
    Open issues
    0
    Weekly downloads
    230
    Last commit
    Oct 17, 2026 (11 days ago)
    Last release
    Oct 17, 2026 (11 days ago)
    Last package publish
    Oct 17, 2026 (11 days ago)

    From GitHub (fetched Oct 24, 2026) and the package registry.

    Details

    Registry name
    io.github.ruriazz/xlsx-tools-mcp
    Version
    0.3.2
    Auth
    No auth
    Packages
    pypi xlsx-tools-mcp
    License
    MIT
    First seen
    Oct 24, 2026
    Last checked
    Oct 24, 2026
    Cite this page

    xlsx-tools-mcp. Agent Mart. https://agentmart.dev/connectors/ruriazz-xlsx-tools-mcp (last updated 2026-10-24)