# Excel MCP server

> Create, read and edit Excel workbooks, including formulas, tables and charts, without Microsoft Excel installed.

- Listing: https://mcp.tc/i/excel
- Connect: this is a local (stdio) server; install it on your machine (see Install). The listing link is a page, not an MCP endpoint.
- Type: local (stdio)
- Auth: no API key needed
- Category: [Productivity & Projects](https://mcp.tc/c/productivity)
- Vendor: Haris Musa
- Homepage: <https://excelmcpserver.com>
- Docs: <https://github.com/haris-musa/excel-mcp-server/blob/main/TOOLS.md>
- Repository: <https://github.com/haris-musa/excel-mcp-server>
- Package: pypi `excel-mcp-server`

## About

Works with .xlsx, .xlsm, .xltx and .xltm files through openpyxl. You can read and write cells, formulas and dates, format ranges, manage sheets, rows and columns, add tables, charts, conditional formats and data validation, write static summary tables, and read VBA macro code (never run). Formulas are stored, not calculated, and real PivotTables cannot be created.

Runs locally over stdio with uvx: uvx excel-mcp-server stdio --allow-dir /path/to/workbooks. No sign-in or API key is needed. Access is limited to the folder you allow, formulas that reach the network or other programs are rejected, and a read-only mode is available. A Streamable HTTP mode and a Docker image also exist.

## What it can do

- Create workbooks and list or describe sheets
- Read, write, copy, clear and search cell ranges
- Format fonts, fills, borders and number formats
- Add tables, charts and static summary tables
- Set conditional formatting and dropdown data validation
- Insert, delete, rename and copy sheets, rows and columns
- Read VBA macro code in .xlsm files

## Tools (26)

- `create_workbook`: Create a new, empty Excel workbook.
- `describe_workbook`: List a workbook's sheets with used ranges and defined names.
- `list_workbooks`: List Excel files in a directory.
- `export_workbook`: Return the workbook file as an embedded base64 resource.
- `import_workbook`: Save an uploaded workbook file on the server.
- `describe_sheet`: Describe a sheet's used range, panes, merges, tables, charts, validation and formats.
- `create_sheet`: Add an empty worksheet.
- `rename_sheet`: Rename a worksheet; formulas using the old name are not updated.
- `copy_sheet`: Duplicate a worksheet within the workbook.
- `delete_sheet`: Delete a worksheet and everything on it.
- `insert_rows_or_columns`: Insert empty rows or columns before a position.
- `delete_rows_or_columns`: Delete rows or columns starting at a position.
- `read_range`: Read cell values as rows; dates come back as ISO 8601 strings.
- `write_range`: Write values into cells, overwriting existing content.
- `clear_range`: Clear values and/or formatting of a range without shifting cells.
- `copy_range`: Copy values and formatting to another place.
- `find_cells`: Find cells whose value contains or equals a query.
- `format_range`: Change fonts, fill, borders, alignment or number format of a range.
- `merge_cells`: Merge a range into one cell, or split a merged range.
- `set_sheet_layout`: Set column widths, row heights, frozen panes, auto filter and tab color.
- `add_conditional_format`: Add a conditional format rule to a range.
- `add_data_validation`: Restrict what can be entered in a range, such as a dropdown list.
- `create_table`: Turn a range with a header row into an Excel table.
- `create_chart`: Add a chart that plots a block of data.
- `create_summary_table`: Group rows and aggregate columns, writing a static pivot-style result.
- `read_vba`: Show VBA macro code in an .xlsm or .xltm workbook, module by module.

## Example prompts

- "Create a budget.xlsx workbook with a sheet for each month"
- "Read A1:F50 from the Sales sheet in q1.xlsx and summarize it"
- "Add a bar chart of revenue by region to the Summary sheet"
- "Add a dropdown list for Status in column D of the Tasks sheet"

## Install

### Claude Code

1. Run this in a terminal, in your project folder:

```bash
claude mcp add --transport stdio excel -- uvx excel-mcp-server stdio --allow-dir /path/to/workbooks
```

2. Start Claude Code and type `/mcp`. **excel** should show as connected.

Add `--scope user` to make it available in every project.

### Claude Desktop

1. Open **Settings → Developer → Edit Config**. It opens `claude_desktop_config.json`. Add:

`claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "excel": {
      "command": "uvx",
      "args": [
        "excel-mcp-server",
        "stdio",
        "--allow-dir",
        "/path/to/workbooks"
      ]
    }
  }
}
```

2. Save the file and restart Claude Desktop.

Needs uv (Python) on your computer. The file lives in `~/Library/Application Support/Claude/` on macOS and `%APPDATA%\Claude\` on Windows.

### Cursor

[Add to Cursor](<https://cursor.com/install-mcp?name=excel&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyJleGNlbC1tY3Atc2VydmVyIiwic3RkaW8iLCItLWFsbG93LWRpciIsIi9wYXRoL3RvL3dvcmtib29rcyJdfQ%3D%3D>) (opens Cursor)

Or add it by hand to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project):

`mcp.json`:

```json
{
  "mcpServers": {
    "excel": {
      "command": "uvx",
      "args": [
        "excel-mcp-server",
        "stdio",
        "--allow-dir",
        "/path/to/workbooks"
      ]
    }
  }
}
```

Needs uv (Python) on your computer.

### VS Code

[Install in VS Code](<https://vscode.dev/redirect/mcp/install?name=excel&config=%7B%22type%22%3A%22stdio%22%2C%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22excel-mcp-server%22%2C%22stdio%22%2C%22--allow-dir%22%2C%22%2Fpath%2Fto%2Fworkbooks%22%5D%7D>) (opens VS Code)

Or from a terminal:

```bash
code --add-mcp '{"name":"excel","type":"stdio","command":"uvx","args":["excel-mcp-server","stdio","--allow-dir","/path/to/workbooks"]}'
```

Or commit it to the repo in `.vscode/mcp.json`:

`.vscode/mcp.json`:

```json
{
  "servers": {
    "excel": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "excel-mcp-server",
        "stdio",
        "--allow-dir",
        "/path/to/workbooks"
      ]
    }
  }
}
```

Needs uv (Python) on your computer.

### Devin Desktop

1. Add it to `~/.config/devin/mcp_config.json` (macOS and Linux) or `%APPDATA%\devin\mcp_config.json` (Windows):

`mcp_config.json`:

```json
{
  "mcpServers": {
    "excel": {
      "command": "uvx",
      "args": [
        "excel-mcp-server",
        "stdio",
        "--allow-dir",
        "/path/to/workbooks"
      ]
    }
  }
}
```

2. Refresh the MCP server list in Cascade.

Devin Desktop is the new name for Windsurf.

### Codex

```bash
codex mcp add excel -- uvx excel-mcp-server stdio --allow-dir /path/to/workbooks
```

Or edit `~/.codex/config.toml` directly:

`config.toml`:

```toml
[mcp_servers.excel]
command = "uvx"
args = ["excel-mcp-server", "stdio", "--allow-dir", "/path/to/workbooks"]
```

Needs uv (Python) on your computer.

### Gemini CLI

```bash
gemini mcp add excel uvx -- excel-mcp-server stdio --allow-dir /path/to/workbooks
```

This adds it to the current project. Add `-s user` to use it everywhere.

### Any client

Most clients that start local servers accept this shape:

```json
{
  "mcpServers": {
    "excel": {
      "command": "uvx",
      "args": [
        "excel-mcp-server",
        "stdio",
        "--allow-dir",
        "/path/to/workbooks"
      ]
    }
  }
}
```

Zed puts servers under `context_servers` in its settings, with the same `command`, `args` and `env` fields.

Needs uv (Python) on your computer.

## Details

- Server version: 1.1.1
- Last checked: 2026-10-03
- Listed: 2026-10-03
- Updated: 2026-10-03

---
Source: https://mcp.tc/i/excel (mcp.tc is an independent directory, not affiliated with this server's publisher). Corrections: https://mcp.tc/report
