Skip to main content
Glama
Hcshenziyang

excel-tools-mcp

by Hcshenziyang

Excel Tools MCP

Excel Tools MCP is a standalone Model Context Protocol server for reading and inspecting local Excel files. It is designed for AI assistants that need a compact, structured view of spreadsheets without loading an entire workbook into context.

The project supports two distribution paths:

  • npm / npx: a Node.js launcher starts the Python MCP server.

  • PyPI / uvx / pip: run the Python MCP server directly.

Only local file paths are supported.

Version Status

Published v0.1.0

The first published release supports .xlsx files through openpyxl.

Available tools:

  • excel_inspect: inspect workbook metadata and sheet dimensions.

  • excel_read_range: read a rectangular cell range.

  • excel_profile_structure: summarize row structure patterns.

Known boundary:

  • .xls is not supported in v0.1.0.

Published v0.1.1

New and changed behavior:

  • Read-only tools support .xlsx, .xlsm, .xls, .xlsb, and .ods.

  • .xlsx and .xlsm are read with openpyxl.

  • .xls, .xlsb, and .ods are read with python-calamine.

  • excel_read_range_normalized reads a range and virtually fills merged cells from their anchor values without modifying the file.

Available tools in v0.1.1:

  • excel_inspect: inspect workbook metadata and sheet dimensions.

  • excel_read_range_normalized: read a rectangular range, analyze merged cells, and optionally return anchor-filled data.

  • excel_profile_structure: summarize row structure patterns and merged-cell structure.

Related MCP server: xls-mcp-servers

Run With npx

This is the easiest route for MCP clients that already support Node-based server launch commands.

{
  "mcpServers": {
    "excel-tools-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["--yes", "@wasziyang/excel-tools-mcp"]
    }
  }
}

Requirements:

  • Node.js 20+

  • Python 3.10+

The npm package is a launcher. It creates or reuses a cached Python environment, installs the Python MCP server, and starts it over stdio.

Terminal test:

npx --yes @wasziyang/excel-tools-mcp

The command may appear to do nothing. That is normal for an MCP stdio server: it waits for the MCP host to send JSON-RPC messages over stdin.

Custom Python Path

By default, the launcher searches for python3, then python.

Set EXCEL_TOOLS_MCP_PYTHON only when Python is installed somewhere unusual:

{
  "mcpServers": {
    "excel-tools-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": ["--yes", "@wasziyang/excel-tools-mcp"],
      "env": {
        "EXCEL_TOOLS_MCP_PYTHON": "/absolute/path/to/python"
      }
    }
  }
}

Run With PyPI / uvx

Users with uv can run the PyPI package directly:

{
  "mcpServers": {
    "excel-tools-mcp": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "excel-tools-mcp",
        "excel-tools-mcp"
      ]
    }
  }
}

Terminal test:

uvx --from excel-tools-mcp excel-tools-mcp

You can also install it with pip:

pip install excel-tools-mcp
excel-tools-mcp

Runtime difference:

npx -> npm package -> Node launcher -> Python MCP server
uvx -> PyPI package -> Python MCP server
pip -> PyPI package -> Python MCP server

Local Development

Install from the local checkout:

pip install -e .
excel-tools-mcp

Or run the module directly:

python3 -m excel_tools.server

For a local npx-style test:

npm start

Tool Arguments Example

{
  "file_path": "/absolute/path/to/report.xlsx",
  "sheet": "Sheet1",
  "start_cell": "A1",
  "end_cell": "D20"
}

For Windows paths:

{
  "file_path": "C:\\Users\\Alice\\Documents\\report.xlsx",
  "sheet": "Sheet1",
  "start_cell": "A1",
  "end_cell": "D20"
}

Windows, WSL, and VS Code

If your mcp.json lives under a Windows path such as:

C:\Users\<you>\AppData\Roaming\Code\User\mcp.json

VS Code usually starts the MCP server from Windows, not from WSL. In that case Windows must have Node.js and Python installed, and Excel file paths should be Windows paths.

If you want VS Code on Windows to run the server inside WSL, call wsl explicitly:

{
  "mcpServers": {
    "excel-tools-mcp": {
      "type": "stdio",
      "command": "wsl",
      "args": [
        "bash",
        "-lc",
        "npx --yes @wasziyang/excel-tools-mcp"
      ]
    }
  }
}

When the server runs in WSL, use Linux/WSL paths:

{
  "file_path": "/mnt/c/Users/Alice/Documents/report.xlsx",
  "sheet": "Sheet1",
  "start_cell": "A1",
  "end_cell": "D20"
}

Docker

Build locally:

docker build -t excel-tools-mcp .

MCP client config example:

{
  "command": "docker",
  "args": [
    "run",
    "-i",
    "--rm",
    "-v",
    "/absolute/path/to/excel/files:/workspace",
    "excel-tools-mcp"
  ]
}

Inside Docker, pass file paths under /workspace, for example /workspace/report.xlsx.

Docker images are not published yet.

Publishing Notes

Release checklist:

  • Update versions in pyproject.toml, package.json, and the npm launcher cache directory.

  • Build and publish the Python package to PyPI.

  • Publish the npm launcher if the npx route should install the new version.

Basic npm publish flow:

npm login
npm publish --access public

Basic PyPI publish flow:

uv build
python3 -m twine upload dist/*

Available Tools

3 tools
excel_inspectA

检查Excel文件的基本信息,包括表单数量、每个表单的行列数等。

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo调用状态,成功为True,失败为False
tool_resultNo业务数据,失败时可为None
status_messageNo调用状态描述信息,失败时为错误信息

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the burden. It states the tool inspects basic info but does not explicitly declare it is read-only or describe any side effects. The behavior is implied but not fully transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that conveys the tool's purpose without extraneous information. Every part is necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool is simple and has an output schema, the description covers the essential purpose. It does not mention edge cases or output format, but with the output schema present, it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides a description for file_path, but overall schema description coverage is 0% (likely due to nested defs not counted). The description adds value by specifying what information is retrieved (sheets, rows, columns) beyond the parameter schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool inspects basic Excel file information including number of sheets and rows/columns. It distinguishes from sibling tools like excel_profile_structure and excel_read_range_normalized, which likely have different scopes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for initial overview of Excel files but lacks explicit guidance on when to use or when to use alternatives. No exclusion criteria are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

excel_profile_structureB

分析工作表的结构签名(数据类型 + 合并状态)。

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo调用状态,成功为True,失败为False
tool_resultNo业务数据,失败时可为None
status_messageNo调用状态描述信息,失败时为错误信息

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions analyzing data types and merge status but omits important traits such as whether the operation is read-only, performance implications, error conditions, or if it modifies the file. This leaves the agent with significant uncertainty.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that conveys the core purpose without filler. It is efficiently front-loaded and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides the essential purpose but lacks context on the return value format (even though an output schema exists, the description could hint at what 'structural signature' entails). Given the presence of sibling tools and an output schema, the description is minimally complete but could be more informative.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for all parameters (file_path, sheet, max_cols_to_scan, max_rows_to_scan), so schema description coverage is effectively high. The tool description adds no extra parameter semantics. Baseline 3 is appropriate as the description does not compensate or add value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: analyzing the structural signature of a worksheet, including data types and merge status. It uses a specific verb ('analyze') and resource ('worksheet structure signature'), but does not explicitly differentiate from sibling tools like excel_inspect or excel_read_range_normalized.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. The agent receives no guidance on context of use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

excel_read_range_normalizedB

读取指定区域,并在返回数据中虚拟反填合并单元格,不修改源文件。

ParametersJSON Schema
NameRequiredDescriptionDefault
requestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNo调用状态,成功为True,失败为False
tool_resultNo业务数据,失败时可为None
status_messageNo调用状态描述信息,失败时为错误信息

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses two key behaviors: it reads data and virtually backfills merged cells, and it does not modify the source file. With no annotations, this provides minimal behavioral context. However, it omits details like handling of errors, empty ranges, or the structure of returned data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the action and purpose. Every word earns its place without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has five parameters and an output schema, the description covers the core functionality but lacks detail on parameter usage, output format, and edge cases. The presence of an output schema means return values need not be explained, but behavioral context remains incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool description does not mention any parameters, even though the input schema has five properties. Schema description coverage is 0% as per context, meaning the description should compensate but does not. The schema itself has parameter descriptions in Chinese, but the tool description adds no value beyond that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads a specified area from an Excel file and virtually backfills merged cells without modifying the source. It uses a specific verb and resource, and distinguishes from sibling tools (excel_inspect, excel_profile_structure) which focus on structure/profile rather than data reading.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. Sibling tools exist but there is no mention of trade-offs or conditions. The agent is left to infer usage solely from the tool name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.2
    • First observedexcel_inspect
    • First observedexcel_profile_structure
    • First observedexcel_read_range_normalized

TDQS

A3.5/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: inspection, structure profiling, and reading with merged cell handling. No overlap in functionality.

Naming Consistency5/5

All tools follow a consistent 'excel_verb_noun' pattern (inspect, profile_structure, read_range_normalized), making the intent clear.

Tool Count4/5

With only 3 tools, the set is small but focused. It covers essential read/inspect operations, though a few more tools for writing or editing would be more comprehensive.

Completeness2/5

The set is missing any write or modification capabilities (create, update, delete), which are common in Excel workflows. Significant gaps remain.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol (MCP) server that provides tools for reading Excel (xlsx) files, enabling extraction of data from entire workbooks or specific sheets with results returned in structured JSON format.
    3
    6
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for reading and writing .xls (Excel 97-2003) files, enabling data manipulation, sheet listing, and metadata retrieval.
    MIT
  • F
    license
    C
    quality
    B
    maintenance
    An MCP server for safe .xlsx inspection and controlled workbook writes, enabling spreadsheet reads, search, filtering, aggregation, and preview-based writes with workspace confinement and audit logging.
    12
    -