Skip to main content
Glama
README.md
# excel-mcp

An MCP server for safe `.xlsx` inspection and controlled workbook writes.

## Directory listing

This project is also listed in the MCP directory:

- [Matsu132 Excel MCP on m8ven.ai](https://m8ven.ai/mcp/matsu132-excel-mcp-8ifowd)

## Status

This is an MVP. It supports workbook inspection, sheet/schema discovery, reads, search, simple filtering and numeric aggregation, plus preview-based writes. Writes are guarded by workspace confinement, SHA-256 compare-and-swap, a per-workbook lock, backup, temporary-file save, re-open verification, atomic replacement and JSONL audit logging.

Macro-enabled workbooks, external links, charts, formatting operations and non-`.xlsx` files are intentionally out of scope.

## Quick start from GitHub

You do not need to clone this repository. Install [uv](https://docs.astral.sh/uv/getting-started/installation/) once, then configure your MCP client to run the latest version directly from GitHub.

The command is:

```sh
uvx --from git+https://github.com/Matsu132/excel-mcp.git excel-mcp
```

The only local setting you need is the folder containing the Excel files:

```text
EXCEL_MCP_WORKSPACE=/Users/your-name/Documents/Excel
```

This keeps Excel data on your computer. The public GitHub repository provides the server code and dependencies; it does not upload your workbooks.

## Developer installation

```sh
uv sync
```

Set the workbook directory that the server is allowed to access:

```sh
export EXCEL_MCP_WORKSPACE="/absolute/path/to/workbooks"
```

The server accepts only `.xlsx` files inside this directory. Relative paths are resolved from this workspace.

## Starting the server

This server uses MCP over stdio. The command to register in an MCP client is:

```sh
uvx --from git+https://github.com/Matsu132/excel-mcp.git excel-mcp
```

For a direct local check:

```sh
EXCEL_MCP_WORKSPACE="/absolute/path/to/workbooks" uv run excel-mcp
```

Keep the process running when the client starts it; MCP clients normally manage the process lifecycle automatically.

## Claude Desktop

Add the following entry to Claude Desktop's MCP configuration file. Replace the paths with absolute paths on your machine.

macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`

```json
{
  "mcpServers": {
    "excel-mcp": {
  "command": "uvx",
      "args": ["--from", "git+https://github.com/Matsu132/excel-mcp.git", "excel-mcp"],
      "env": {
        "EXCEL_MCP_WORKSPACE": "/Users/your-name/Documents/Excel"
      }
    }
  }
}
```

Restart Claude Desktop after saving the file. The `excel_*` tools should then appear in the MCP tools list.

## OpenAI-compatible clients

For an OpenAI application, Agent SDK, or other client that supports local MCP stdio servers, register the same command as a local MCP server:

```json
{
  "name": "excel-mcp",
  "command": "uvx",
  "args": ["--from", "git+https://github.com/Matsu132/excel-mcp.git", "excel-mcp"],
  "env": {
    "EXCEL_MCP_WORKSPACE": "/Users/your-name/Documents/Excel"
  }
}
```

The exact configuration key varies by product. Use the product's local MCP or stdio server setting and map it to `command`, `args`, and `env` above. If the client only supports remote MCP endpoints, this repository needs an HTTP transport deployment before it can be used directly.

## Other MCP clients

Clients such as Cursor, VS Code MCP extensions, Cline, Windsurf, and MCP Inspector generally accept the same stdio definition. Use:

```text
Command: uvx
Arguments: --from git+https://github.com/Matsu132/excel-mcp.git excel-mcp
Environment: EXCEL_MCP_WORKSPACE=/Users/your-name/Documents/Excel
```

For MCP Inspector, run:

```sh
EXCEL_MCP_WORKSPACE="/absolute/path/to/workbooks" uv run mcp dev src/excel_mcp/server.py
```

## Japanese documentation

日本語のセットアップ手順は [README_JAPANESE.md](README_JAPANESE.md) を参照してください。

## MCP SDK

This project uses the official MCP Python SDK v2 with `MCPServer` and `@mcp.tool()`. The default transport is stdio for local MCP clients. See the [official v2 documentation](https://py.sdk.modelcontextprotocol.io/) for the SDK API and transport details.

TDQS

C2.1/5.0

Scored across 12 tools

Disambiguation4/5

Most tools have clearly distinct purposes: reading, writing, searching, filtering, aggregating, and listing sheets. The only potential ambiguity is between excel_group_by and excel_group_by_advanced, and excel_inspect versus excel_schema, but their names suggest one is basic vs advanced and one is file-level vs structure-level, so agents can differentiate.

Naming Consistency5/5

All tools follow a consistent excel_<action> pattern using snake_case, making the naming scheme highly predictable. Even though some are verbs (read, write) and some are nouns (schema, group_by), the uniform prefix and casing create a clear, uniform convention.

Tool Count5/5

With 12 tools, the set is well-scoped for an Excel MCP server. Each tool addresses a distinct aspect of spreadsheet interaction—from inspection and reading to writing and data transformation—without being excessive or sparse.

Completeness4/5

The tool set covers core Excel operations: listing sheets, reading data, writing cells/ranges, inspecting structure, and performing search, filter, aggregate, and group-by operations. It lacks workbook-level creation/deletion or sheet management, but for data analysis and manipulation tasks, it provides a solid lifecycle without dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues