MCPcopy
hub / github.com/haris-musa/excel-mcp-server

github.com/haris-musa/excel-mcp-server @v0.1.8 sqlite

repository ↗ · DeepWiki ↗ · release v0.1.8 ↗
103 symbols 423 edges 15 files 85 documented · 83%
README

Excel MCP Server Logo

PyPI version Total Downloads License: MIT smithery badge Install MCP Server

A Model Context Protocol (MCP) server that lets you manipulate Excel files without needing Microsoft Excel installed. Create, read, and modify Excel workbooks with your AI agent.

Features

  • 📊 Excel Operations: Create, read, update workbooks and worksheets
  • 📈 Data Manipulation: Formulas, formatting, charts, pivot tables, and Excel tables
  • 🔍 Data Validation: Built-in validation for ranges, formulas, and data integrity
  • 🎨 Formatting: Font styling, colors, borders, alignment, and conditional formatting
  • 📋 Table Operations: Create and manage Excel tables with custom styling
  • 📊 Chart Creation: Generate various chart types (line, bar, pie, scatter, etc.)
  • 🔄 Pivot Tables: Create dynamic pivot tables for data analysis
  • 🔧 Sheet Management: Copy, rename, delete worksheets with ease
  • 🔌 Triple transport support: stdio, SSE (deprecated), and streamable HTTP
  • 🌐 Remote & Local: Works both locally and as a remote service

Usage

The server supports three transport methods:

1. Stdio Transport (for local use)

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

2. SSE Transport (Server-Sent Events - Deprecated)

uvx excel-mcp-server sse

SSE transport connection:

{
   "mcpServers": {
      "excel": {
         "url": "http://localhost:8000/sse",
      }
   }
}

3. Streamable HTTP Transport (Recommended for remote connections)

uvx excel-mcp-server streamable-http

Streamable HTTP transport connection:

{
   "mcpServers": {
      "excel": {
         "url": "http://localhost:8000/mcp",
      }
   }
}

Environment Variables & File Path Handling

SSE and Streamable HTTP Transports

When running the server with the SSE or Streamable HTTP protocols, you must set the EXCEL_FILES_PATH environment variable on the server side. This variable tells the server where to read and write Excel files. - If not set, it 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.

You can also set the FASTMCP_PORT environment variable to control the port the server listens on (default is 8017 if not set). - Example (Windows PowerShell): powershell $env:EXCEL_FILES_PATH="E:\MyExcelFiles" $env:FASTMCP_PORT="8007" uvx excel-mcp-server streamable-http - Example (Linux/macOS): bash EXCEL_FILES_PATH=/path/to/excel_files FASTMCP_PORT=8007 uvx excel-mcp-server streamable-http

Stdio Transport

When using the stdio protocol, the file path is provided with each tool call, so you do not need to set EXCEL_FILES_PATH on the server. The server will use the path sent by the client for each operation.

Available Tools

The server provides a comprehensive set of Excel manipulation tools. See TOOLS.md for complete documentation of all available tools.

Star History

Star History Chart

License

MIT License - see LICENSE for details.

Core symbols most depended-on inside this repo

get_excel_path
called by 25
src/excel_mcp/server.py
parse_cell_range
called by 17
src/excel_mcp/cell_utils.py
validate_cell_reference
called by 7
src/excel_mcp/cell_utils.py
_opt
called by 6
src/excel_mcp/chart.py
clean_field_name
called by 5
src/excel_mcp/pivot.py
format_range_string
called by 3
src/excel_mcp/sheet.py
get_or_create_workbook
called by 2
src/excel_mcp/workbook.py
validate_formula
called by 2
src/excel_mcp/validation.py

Shape

Function 77
Class 12
Method 7
Route 7

Languages

Python100%

Modules by API surface

src/excel_mcp/server.py37 symbols
src/excel_mcp/sheet.py15 symbols
src/excel_mcp/exceptions.py9 symbols
tests/test_sandbox_paths.py7 symbols
src/excel_mcp/pivot.py5 symbols
src/excel_mcp/chart.py5 symbols
src/excel_mcp/cell_validation.py5 symbols
src/excel_mcp/workbook.py4 symbols
src/excel_mcp/validation.py4 symbols
src/excel_mcp/data.py4 symbols
src/excel_mcp/__main__.py3 symbols
src/excel_mcp/cell_utils.py2 symbols

For agents

$ claude mcp add excel-mcp-server \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact