excel-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@excel-mcp-serverIncrease all mage skill attacks by 20%"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ExcelMCP: 游戏开发 Excel 配置表 MCP 服务器
基于 Python FastMCP + openpyxl + sqlglot 的 Excel 配置表 MCP 服务器。 SQL-over-Excel 查询、批量操作、结构管理,为游戏开发者设计。
快速开始
方式一:Skill 接入(首推)
将 Excel skill 接入你的 AI 编码工具,首次调用自动创建 venv + 从 GitHub 安装,后续通过 self-update 更新。
Claude Code
全局(所有项目可用):
git clone https://github.com/TangentDomain/excel-mcp-server.git
cp -r excel-mcp-server/.omp/skills/excel ~/.claude/skills/excel
# 首次运行——自动创建 venv + 从 GitHub 安装依赖
python ~/.claude/skills/excel/bin/excel-cli.py query --file data.xlsx --sql "SELECT * FROM Sheet1"项目级(仅当前项目,随仓库走):
cp -r /path/to/excel-mcp-server/.omp/skills/excel .claude/skills/excel
python .claude/skills/excel/bin/excel-cli.py query --file data.xlsx --sql "SELECT * FROM Sheet1"Cursor
全局:
git clone https://github.com/TangentDomain/excel-mcp-server.git
cp -r excel-mcp-server/.omp/skills/excel ~/.cursor/skills-cursor/excel
python ~/.cursor/skills-cursor/excel/bin/excel-cli.py query --file data.xlsx --sql "SELECT * FROM Sheet1"项目级:
cp -r /path/to/excel-mcp-server/.omp/skills/excel .cursor/skills-cursor/excel
python .cursor/skills-cursor/excel/bin/excel-cli.py query --file data.xlsx --sql "SELECT * FROM Sheet1"全局 vs 项目级:全局装一次所有项目可用;项目级随仓库走,适合团队协作(skill 定义随仓库提交,协作者 clone 即用)。
后续使用
# venv 安装后可直接用 exe(跳过自举,更快)
~/.claude/skills/excel/.venv/Scripts/excel-cli.exe query --file data.xlsx --sql "SELECT * FROM Sheet1"
# 检查更新
excel-cli self-update --check
excel-cli self-update # 更新到最新版详见 SKILL.md。
方式二:MCP Server(AI 客户端集成)
# uvx(推荐,无需安装)
uvx excel-mcp-server-fastmcp
# pip
pip install excel-mcp-server-fastmcpCursor 配置
设置 → MCP → Add Server
Name:
excelmcpCommand:
uvxArgs:
"excel-mcp-server-fastmcp"
Claude Code 配置
claude mcp add excelmcp -- uvx excel-mcp-server-fastmcp方式三:源码直接调用(开发环境)
uv run python -m excel_mcp_server_fastmcp.cli <command> [options]Related MCP server: Excel MCP Server
26 个 MCP 工具
查询类(9 个)
工具 | 说明 |
| SQL 查询引擎(首选)— WHERE/LIKE/IN/JOIN/窗口函数/CTE/UNION 等 |
| 查看表结构(列名+类型+样本值),支持双行表头自动检测 |
| 获取表头信息(中文+英文) |
| 按精确坐标读取数据(如 A1:C10) |
| 在工作表中搜索单元格文本 |
| 跨文件搜索 Excel |
| 定位数据末行(追加数据前必用) |
| 列出所有工作表名称 |
| 按 ID 列对比两个工作表差异 |
写入类(7 个)
工具 | 说明 |
| SQL UPDATE 批量修改(支持 dry_run 预览) |
| SQL INSERT 插入数据(单行/多行) |
| SQL DELETE 删除数据(必须 WHERE) |
| 精确坐标写入(默认覆盖,insert_mode=True 插入) |
| 按主键插入或更新单行(幂等安全) |
| 写入 Excel 公式 |
| 执行 Python 脚本(沙箱环境,注入 query/update/insert/delete) |
结构操作类(7 个)
工具 | 说明 |
| 创建新 Excel 文件 |
| 创建工作表 |
| 删除工作表 |
| 重命名工作表 |
| 复制工作表 |
| 插入/删除行列 |
| 重命名列(表头) |
格式化类(2 个)
工具 | 说明 |
| 设置样式(字体/合并/边框/预设样式) |
| 设置行高或列宽 |
备份类(1 个)
工具 | 说明 |
| 备份创建/列表/恢复 |
SQL 功能
已支持(169 条差分测试验证,19 类别 100% 通过)
类别 | 功能 |
基础 | SELECT, DISTINCT, AS, |
条件 | WHERE, LIKE, IN, NOT IN, BETWEEN, AND/OR, 子查询, WHERE 引用 SELECT 别名 |
聚合 | COUNT, SUM, AVG, MAX, MIN, GROUP BY, HAVING |
排序 | ORDER BY, LIMIT, OFFSET, NULLS FIRST/LAST |
窗口 | ROW_NUMBER, RANK, DENSE_RANK, NTILE, LAG, LEAD, FIRST_VALUE, LAST_VALUE, NTH_VALUE, AVG/SUM/MIN/MAX/COUNT OVER, GROUP_CONCAT, PARTITION BY, ROWS BETWEEN, WHERE 引用窗口别名 |
多表 | INNER/LEFT/RIGHT/FULL JOIN(同文件跨 Sheet + 跨文件 |
高级 | CASE WHEN, CTE(WITH), EXISTS, UNION/UNION ALL, INTERSECT/EXCEPT, NULLIF, COALESCE |
字符串 | UPPER, LOWER, TRIM, LENGTH, CONCAT, REPLACE, SUBSTRING |
数学 | ABS, CEIL, FLOOR, SQRT, POWER, ROUND |
NULL | IS NULL, IS NOT NULL, COALESCE, 三值逻辑(与 SQLite 对齐) |
关键语义(与 SQLite 3.x 对齐)
GROUP BY / ORDER BY:NULL 排最前(ASC),排最后(DESC)
ROUND:四舍五入(round half away from zero),非 banker's rounding
整数除法:截断向零(int(a/b)),与 SQLite 一致
NULL 三值逻辑:NULL = NULL → UNKNOWN(FALSE),NULL != 0 → UNKNOWN(FALSE)
LIKE:
%匹配任意字符,_匹配单字符,大小写不敏感
SQL 限制
跨文件 JOIN 需用
表名@'文件路径'语法(同文件跨 Sheet 直接用表名)Excel 空字符串
""往返后变为 NULL(xlsx 格式固有限制)WHERE 引用窗口函数别名时自动重写为子查询(透明支持)
WHERE 引用 SELECT 别名(非窗口)已支持(物化为临时列)
技术规格
版本: 1.17.0
Python: >= 3.10
依赖: FastMCP / openpyxl / sqlglot / pandas
测试: 1447 passed, 3 skipped, 1 xfailed
SQL 准确率: 169 条差分测试 100% 通过(与 SQLite 交叉校验)
工具数量: 26 个 MCP 工具
支持格式: .xlsx, .xlsm
架构
server.py MCP 工具层 (FastMCP) — 26 个工具
└─ api/
├─ advanced_sql_query.py SQL 查询引擎 (10395 行)
├─ excel_operations.py 通用 Excel 操作 (2776 行)
├─ script_runner.py Python 脚本沙箱 (281 行)
└─ header_analyzer.py 双行表头检测
└─ core/
├─ excel_reader.py 读取 (calamine → openpyxl 降级)
├─ excel_writer.py 写入 (传统模式, 1948 行)
├─ excel_manager.py 工作表管理
├─ excel_search.py 搜索
├─ excel_compare.py 比较
└─ excel_converter.py 格式转换
└─ utils/
├─ validators.py SecurityValidator + ExcelValidator
├─ formatter.py 结果格式化
├─ formula_cache.py 公式计算缓存
└─ concurrent_utils.py 并发工具
└─ calibrator/
└─ core.py SQLite 交叉校准工具
└─ verification/
└─ runner.py baseline 驱动验证关键设计
双表头支持:自动检测游戏配表常见的双层表头(中文描述 + 英文字段名),SQL 工具中英文名都可用
性能路径:calamine (Rust 引擎) 纯数据读取 → openpyxl 格式化/公式读取降级 → StreamingWriter 大文件流式写入
安全:所有工具路径验证(防穿越/符号链接),SQL 通过 sqlglot AST 解析(非拼接),run-python 沙箱限制文件/进程操作
SQL 校准器:将 Excel 导入 SQLite 跑同一条 SQL 做对比,定位引擎 bug(开发调试用)
SQL 校准器(开发调试工具)
将 Excel 导入 SQLite 后跑同一条 SQL,跟 excel_query 的返回结果做对比,定位 bug。
CLI 使用
# 导入 Excel 到 SQLite
python -m excel_mcp_server_fastmcp.calibrate import <xlsx路径> [数据库名]
# 执行查询
python -m excel_mcp_server_fastmcp.calibrate query <数据库名> "<SQL>"
# 列出所有表
python -m excel_mcp_server_fastmcp.calibrate tables [数据库名]
# 查看表结构
python -m excel_mcp_server_fastmcp.calibrate schema <数据库名> <表名>Python API
from excel_mcp_server_fastmcp.calibrator.core import cmd_import, cmd_query, cmd_tables, cmd_schema
result = cmd_import("/path/to/data.xlsx", "my_db")
result = cmd_query("my_db", "SELECT * FROM table1 LIMIT 10")
result = cmd_tables("my_db")
result = cmd_schema("my_db", "table1")开发
# 安装依赖
uv sync --extra dev
# 运行全部测试
uv run python -m pytest tests/ -q --timeout=60
# 运行不变量测试
uv run python -m pytest tests/invariants/ -q --timeout=30
# Lint
ruff check src/ tests/ && ruff format --check src/ tests/测试体系
层级 | 目录 | 说明 |
L1 结果结构 |
| API 返回格式不变量 |
L2 架构 |
| 代码结构不变量 |
L3 SQL 功能 |
| SQL 准确率差分测试 |
L4 限制消除 |
| 引擎限制修复验证 |
对抗测试 |
| 随机 fuzz 读写 |
功能测试 |
| 各模块功能测试 |
详见 开发者指南。
常见问题
MCP 连接失败
uv --version # 确认 uv 已安装
uvx excel-mcp-server-fastmcp --force-reinstall # 重装
# 重启 AI 客户端Excel 文件读取失败
文件路径要完整(不要用
~/)确认文件是
.xlsx格式文件没有被 Excel 软件打开
大文件卡顿
用 WHERE 过滤减少数据量
分批处理:
"先读取前1000行"
贡献
GitHub Issues — 报告 Bug / 功能建议
许可证
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/TangentDomain/excel-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server