使用说明
excel mcp
一个MCP服务器,用于通过公式感知解析读取、写入和分析Excel文件。
与仅读取单元格值的其他Excel MCP服务器不同, excel mcp 理解公式——它可以提取公式文本,评估公式结果,并验证计算值。它还提供具有批处理操作、模板和验证的结构化编写。
由...驱动 openpyxl 用于可靠的数据操作和 形式化者 用于公式分析。
特性
- 批量数据读取 --将工作表读取为具有自动标题检测、分页和总行跳转功能的表
- 单元级访问 --按坐标读取特定单元格或范围
- 公式抽取 --获取公式文本、AST树和单元格依赖关系(使用Formualier)
- 结构化写作 --创建工作簿、批量写入数据、添加公式、格式化单元格、创建表
- 模板模式 --复制.xlsx模板,保留格式和公式,然后填充数据
- 验证 --重新打开写入文件并验证行数、点值
- 数据验证 --将Excel值与预期值(例如数据库总计)进行比较
- 条件化格式 --单元格是规则、色阶、数据条
- 多个传输 --stdio(默认,用于Claude Code/Coursor)和可流式传输的http(用于Docker Sidecar)
- 优雅降级 --仅与openpyxl配合使用;Formualier添加了公式智能
安装
# Basic (reader + writer, openpyxl only)
pip install excel-mcp
# With formula analysis (+ Formualizer)
pip install "excel-mcp[analyzer]"
# Everything
pip install "excel-mcp[all]"
# Or run directly with uvx
uvx excel-mcp
配置
克劳德代码/克劳德桌面/光标(stdio)
添加到您的 .mcp.json 或MCP设置:
{
"mcpServers": {
"excel": {
"command": "uvx",
"args": ["excel-mcp"]
}
}
}
在Formalizer的支持下:
{
"mcpServers": {
"excel": {
"command": "uvx",
"args": ["--from", "excel-mcp[all]", "excel-mcp"]
}
}
}
Docker(可流式传输http)
预构建图像发布到 GitHub容器注册表 每次向main推进。
# docker-compose.yml
services:
mcp-excel:
image: ghcr.io/av-volgin/excel-mcp:latest
container_name: mcp-excel
mem_limit: 256m
restart: unless-stopped
volumes:
- /path/to/excel/files:/data:ro
MCP端点位于 http://mcp-excel:8000/mcp (POST)。
健康检查端点: http://mcp-excel:8000/healthz (获取)。
内置健康检查,暴露端口8000。
要更新,请执行以下操作: docker compose pull mcp-excel && docker compose up -d mcp-excel
工具组
您只能启用所需的工具组:
excel-mcp --tools reader # 3 tools: list_sheets, read_sheet, read_cell_range
excel-mcp --tools writer # 8 tools: create, write, format, tables, templates, verify
excel-mcp --tools analyzer # 3 tools: get_formulas, get_cell_value, validate_totals
excel-mcp --tools all # all 14 tools (default)
工具
阅读器(3个工具)
| 工具 | 说明 |
|---|---|
list_sheets |
列出所有带有元数据(尺寸、表格)的工作表 |
read_sheet |
将工作表读取为具有自动标题、分页、总行跳过的表格 |
read_cell_range |
从特定范围读取原始单元格值 |
作家(8工具)
| 工具 | 说明 |
|---|---|
create_workbook |
使用命名图纸创建新的.xlsx文件 |
write_data |
将二维数据数组写入一个范围(批处理,而不是逐个单元格) |
write_formula |
将公式写入具有可选数字格式的单元格 |
format_range |
应用样式(字体、填充、边框、对齐方式、数字格式) |
create_table |
创建一个带有可选总计行的Excel表 |
add_conditional_format |
添加条件格式(单元格是、色阶、数据栏) |
open_template |
复制.xlsx模板,保留格式和公式 |
verify_workbook |
重新打开文件并验证行数、点值 |
分析仪(3个工具)
| 工具 | 说明 |
|---|---|
get_formulas |
使用可选的AST解析(形式化器)提取公式 |
get_cell_value |
按公式信息的坐标读取单个单元格 |
validate_totals |
将单元格值与预期值进行比较(0.01公差) |
CLI选项
excel-mcp [OPTIONS]
Options:
--tools {reader,writer,analyzer,all} Tool groups to register (default: all)
--transport {stdio,streamable-http} Transport protocol (default: stdio)
--host HOST Host to bind for HTTP (default: 127.0.0.1)
--port PORT Port for HTTP transport (default: 8000)
--no-dns-rebinding-protection Disable DNS rebinding protection (Docker/proxy)
建筑
┌──────────────────────────────────────────────────────┐
│ excel-mcp (MCP Server) │
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ reader │ │ writer │ │ analyzer │ │
│ │ (openpyxl) │ │ (openpyxl) │ │ (Formualizer │ │
│ │ │ │ │ │ + openpyxl │ │
│ │• list_sheets │ │• create_wb │ │ fallback) │ │
│ │• read_sheet │ │• write_data │ │ │ │
│ │• read_range │ │• write_formula│ │• get_formulas│ │
│ │ │ │• format_range│ │• get_cell_val│ │
│ │ Bulk data │ │• create_table│ │• validate │ │
│ │ extraction │ │• cond_format │ │ │ │
│ │ │ │• template │ │ Formula- │ │
│ │ │ │• verify │ │ aware │ │
│ └─────────────┘ └──────────────┘ └──────────────┘ │
│ │
│ Transport: stdio | streamable-http (/mcp) │
│ Health: /healthz (GET, HTTP mode only) │
└──────────────────────────────────────────────────────┘
发展
git clone https://github.com/avolgin/excel-mcp.git
cd excel-mcp
uv venv .venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pytest # 50 tests
ruff check src/
许可证
麻省理工学院——见 许可证.
