Create, edit, format and chart .xlsx files, no Excel needed.
- Started in our test
- ★ 4.3K GitHub stars
- 50.6K downloads a week
- Last commit 26 Oct 2026
At a glance
This server works on Excel files directly, so it runs on any machine, including servers without Office. The assistant can read ranges, write values and formulas, format cells, add charts and pivot tables, and manage sheets.
It can run over stdio for desktop clients or over HTTP if you want to host it.
- Made by
- Haris Musa
- Licence
- MIT
- Latest version
- 2.2.2 (21 Oct 2026)
- PyPI package
- excel-mcp-server
- GitHub stars
- 4.3K
- Downloads
- 50.6K a week
- Last commit
- 26 Oct 2026
- Tools
- 46
- Runs on
- Your computer
Our check: We ran this exact config on 26 Oct 2026: it started and answered with 46 tools. The npm package called "excel-mcp-server" has no link to this project. The project publishes to PyPI under that name, so it runs with uvx.
What's in the pod: its tools
We found 46 tools when we started it on 26 Oct 2026. 8 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.
Changes things38 tools · Can create, edit, send or delete.
| Tool | What it is for |
|---|---|
add_conditional_format | Adds colour scales, data bars, icon sets or highlight rules to a range. |
add_data_validation | Adds dropdown lists or value limits to cells. |
add_slicer | Adds a slicer button panel to filter a PivotTable or table. |
add_sparklines | Draws tiny in-cell line, column or win/loss charts. |
clear_range | Empties a block of cells, keeping or removing formatting. |
copy_range | Copies cells to another place, with paste-special options. |
copy_sheet | Duplicates a worksheet. |
create_chart | Builds a native Excel chart, from bar and line to waterfall, treemap and funnel. |
create_pivot_table | Builds a real PivotTable that Excel can refresh, with grouping and calculated fields. |
create_sheet | Adds a new worksheet. |
create_workbook | Makes a new, empty Excel file. |
delete_chart | Removes a chart. |
delete_defined_name | Removes a named range. |
delete_image | Removes a picture from a sheet. |
delete_note | Removes a cell note. |
delete_pivot_table | Removes a PivotTable. |
delete_rows_or_columns | Deletes rows or columns and fixes every formula that pointed at them. |
delete_sheet | Deletes a worksheet. |
delete_slicer | Removes a slicer. |
delete_sparklines | Removes sparklines. |
export_csv | Saves a range out as a CSV file. |
format_range | Sets fonts, fills, borders and number formats. |
goal_seek | Changes one input until a formula hits the target you set. |
import_csv | Pulls a CSV or TSV into a sheet and turns numbers and dates into real values the way Excel's own import does. |
import_workbook | Uploads a workbook to a remote server so it can be edited. |
insert_image | Places a picture on a sheet. |
insert_rows_or_columns | Inserts rows or columns and keeps every formula reference right. |
merge_cells | Merges or unmerges cells. |
rename_sheet | Renames a worksheet. |
replace_cells | Finds and replaces text or values. |
set_defined_name | Creates or updates a named range. |
set_note | Adds or edits a note on a cell. |
set_sheet_layout | Sets column widths, frozen panes, grouping, print setup and protection. |
set_table | Turns a range into an Excel table, with totals row and calculated columns. |
set_workbook_settings | Changes workbook-wide options such as calculation mode. |
sort_range | Sorts rows by one or more columns. |
transform_range | Cleans data: removes duplicates, splits text to columns or fills a series. |
write_range | Writes values, formulas, dates or links into cells. |
Only reads8 tools · Looks things up and changes nothing.
| Tool | What it is for |
|---|---|
describe_sheet | Summarises one sheet: used range, headers, tables, charts and frozen panes. |
describe_workbook | Lists a workbook's sheets, tables, names and sizes, as a first look. |
export_workbook | Sends a workbook from the server back to you when it runs remotely. |
find_cells | Searches for values or formulas across a sheet. |
list_workbooks | Lists the Excel files in the allowed folders. |
read_range | Reads cell values and formulas, working out formula results even if the file was never opened in Excel. |
read_vba | Shows the macro code inside an .xlsm file without running it. |
trace_formula | Shows what a formula depends on and what depends on it, step by step, to find a wrong number. |
Grouped and described by us. The README on GitHub lists the inputs each tool takes.
Set it up
Pick your app for the exact snippet and where it goes.
Where it goes: claude_desktop_config.json (Settings → Developer → Edit Config)
{
"mcpServers": {
"excel": {
"command": "uvx",
"args": [
"excel-mcp-server",
"stdio"
]
}
}
}Where it goes: Your terminal, in the project folder
claude mcp add-json excel '{"command":"uvx","args":["excel-mcp-server","stdio"]}'Where it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"excel": {
"command": "uvx",
"args": [
"excel-mcp-server",
"stdio"
]
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"excel": {
"type": "stdio",
"command": "uvx",
"args": [
"excel-mcp-server",
"stdio"
]
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"excel": {
"command": "uvx",
"args": [
"excel-mcp-server",
"stdio"
]
}
}
}Where it goes: Not supported
ChatGPT only connects to remote servers by URL. This one runs on your computer, so use Claude, Cursor or VS Code.
New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.
Settings
Names are exactly as the project spells them. Required ones are marked.
| Setting | What it does |
|---|---|
--allow-dirCommand line flag | Only lets it open workbooks in this folder. Repeat for more folders. Strongly recommended.--allow-dir /path/to/workbooks |
EXCEL_FILES_PATHEnvironment variable | The same folder limit set through the environment. Separate folders with : on Mac and Linux or ; on Windows. |
--read-onlyCommand line flag | Offers only tools that cannot change files. Also EXCEL_MCP_READ_ONLY=1. |
--toolsCommand line flag | Loads only the core tools plus the areas you list, which saves a lot of context.--tools data,charts |
--allow-vba-writeCommand line flag | Adds tools that write macro code. Off by default; macros are never run either way. |
--max-file-mbCommand line flag | Largest workbook it will open. Defaults to 100 MB. |
EXCEL_MCP_AUTH_TOKENEnvironment variable | Bearer token clients must send when the HTTP server listens beyond localhost. |
--portCommand line flag | Port for the HTTP mode. Defaults to 8017. |
What it can touch
It can read
- Excel files (.xlsx, .xlsm, .xltx, .xltm) and CSVs in the folders you allow
It can change
- Creates and edits workbooks in those folders, saving each change in one go so a file is never left half-written
- Never overwrites an existing workbook without being asked
Safer setup: Always pass --allow-dir, and add --read-only when you only want analysis. Leave --allow-vba-write off.
Before you start
- uv (for uvx)
If it does not work
- Claude Desktop cannot find uvx
- Desktop apps miss your shell PATH, especially on macOS. Use the full path that which uvx prints.
- File not found with a relative path
- Relative paths start in the --allow-dir folder. Without that flag, give the full path to the file.
- The agent is slow because of the tool list
- Use --tools to load only the areas you need, such as data and charts.
- A huge sheet is refused
- Raise --max-file-mb or --max-loaded-cells, keeping an eye on memory.
Peas in a pod: similar servers
How Excel MCP Server lines up against other databases and data servers on the shelf.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| Excel MCP Server | 46 | Your computer | MIT | 4.3K |
| Postgres MCP Pro | 9 | Your computer | MIT | 3.4K |
| Supabase | 29 | Hosted | – | 3K |
| MCP Toolbox for Databases | 29 | Your computer | Apache-2.0 | 16.7K |
| Qdrant | 2 | Your computer | Apache-2.0 | 1.6K |
Questions
Do I need Microsoft Excel installed?
No. It edits the files directly with openpyxl and has its own formula engine, so it runs on Windows, macOS and Linux.
Does it work with Google Sheets?
Not directly. Export the sheet as .xlsx first, or use a Google Sheets server instead.
Will it run my macros?
Never. It can read VBA code, and write it only if you start it with --allow-vba-write.
Is it free?
Yes, MIT licensed.
Something wrong on this page? Tell us.