MCP Directory

How to add Excel MCP Server to Windsurf

Create, read, and modify Excel workbooks with your AI agent — no Microsoft Excel required. Paste the config into ~/.codeium/windsurf/mcp_config.json and restart Windsurf.

Last updated June 14, 2026 · 3.9k · stdio · no auth

Windsurf config for Excel MCP Server

uvx excel-mcp-server stdio
{
  "mcpServers": {
    "excel-mcp-server": {
      "command": "uvx",
      "args": [
        "excel-mcp-server",
        "stdio"
      ]
    }
  }
}

Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.

Setup steps

  1. 1Open Windsurf → Cascade → the hammer/MCP icon → Configure (or edit ~/.codeium/windsurf/mcp_config.json).
  2. 2Paste the Excel MCP Server config below.
  3. 3Fill in placeholder secrets, then save.
  4. 4Click Refresh in the MCP panel.
  5. 5Excel MCP Server's tools become available to Cascade.

Before you start

  • uv / uvx (to run via uvx excel-mcp-server)
  • Python environment
  • For SSE or Streamable HTTP transports: set EXCEL_FILES_PATH (defaults to ./excel_files); optionally set FASTMCP_PORT (default 8017)

What Excel MCP Server can do in Windsurf

create_workbook

Creates a new Excel workbook at the given filepath.

create_worksheet

Creates a new worksheet in an existing workbook.

get_workbook_metadata

Get metadata about a workbook including sheets and ranges; optionally include range information.

write_data_to_excel

Write data (a list of dictionaries) to an Excel worksheet starting at a given cell.

read_data_from_excel

Read data from an Excel worksheet over a cell range, with optional preview-only mode; includes validation metadata for cells when available.

format_range

Apply formatting to a range of cells: bold, italic, underline, font size/color, background color, borders, number format, alignment, wrap text, merge, protection, and conditional formatting.

merge_cells

Merge a range of cells.

unmerge_cells

Unmerge a previously merged range of cells.

Security

When using SSE or Streamable HTTP transports, you must set the EXCEL_FILES_PATH environment variable on the server side (defaults to ./excel_files). With these transports, tool filepath values must be relative to that directory (e.g. reports/q1.xlsx); absolute paths and directory traversal are rejected. With stdio transport, the file path is provided with each tool call, so EXCEL_FILES_PATH is not needed.

Excel MCP Server + Windsurf FAQ

Where is the Windsurf config file?

Windsurf reads MCP servers from ~/.codeium/windsurf/mcp_config.json. Paste the Excel MCP Server config there under the "mcpServers" key and restart the client.

Is Excel MCP Server safe to use with Windsurf?

When using SSE or Streamable HTTP transports, you must set the EXCEL_FILES_PATH environment variable on the server side (defaults to ./excel_files). With these transports, tool filepath values must be relative to that directory (e.g. reports/q1.xlsx); absolute paths and directory traversal are rejected. With stdio transport, the file path is provided with each tool call, so EXCEL_FILES_PATH is not needed.

Do I need Microsoft Excel installed?

No. The server manipulates Excel files directly without requiring Microsoft Excel to be installed.

Which transports are supported?

Three: stdio (for local use), SSE (Server-Sent Events, deprecated), and streamable HTTP (recommended for remote connections).

How are file paths handled?

With stdio, the file path is sent with each tool call, so no server-side configuration is needed. With SSE or streamable HTTP, you must set EXCEL_FILES_PATH on the server (defaults to ./excel_files), and filepath values must be relative to that directory — absolute paths and directory traversal are rejected.

View repo Full Excel MCP Server page