openpyxl_mcp_server
这是什么?
OpenPyXl Python 库的精简包装器,将其部分功能公开为模型上下文协议 (MCP) 服务器。这使得 Claude 和其他 MCP 客户端能够从 Excel 文件中获取数据。
相关链接:
Related MCP server: Excel MCP Server
安装
一般步骤
从https://github.com/jonemo/openpyxl-mcp-server/releases下载最新版本的可执行文件。
openpyxl_mcp_server适用于 MacOS,openpyxl_mcp_server.exe适用于 Windows。对于 MacOS 用户,请确保在下载的文件上设置可执行权限:
chmod a+x /path/to/openpyxl_mcp_server(将/path/to/替换为您的实际下载位置)。配置您的 MCP 客户端。最常见的是 Claude Desktop,请参阅下一节的说明。
Windows 会尝试阻止您运行从互联网下载的随机可执行文件。您需要在不同位置点击“保留”或“仍然保留”,以阻止 Windows 删除该文件。具体操作取决于您使用的浏览器以及 Windows Defender 的设置。
或者,如果您不信任我的可执行文件,您也可以直接从此仓库安装源码版本。请参阅下面的“从源代码”部分。
配置 Claude 桌面
请注意,这仅适用于
已安装 Claude Desktop。
下载 MCP 服务器可执行文件(参见上一节)。前提是您已将可执行文件下载到“下载”文件夹。您也可以使用其他文件夹,请在下方配置中相应地调整路径。
在 Claude Desktop 中,打开“设置...”菜单:

导航到设置的“开发人员”部分。
点击“编辑配置”。如果您还没有 MCP 服务器配置文件,这将创建一个。该文件的默认位置是:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
在 MacOS 上,将以下内容添加到
claude_desktop_config.json文件中。将<YOUR-USERNAME>替换为您的 MacOS 用户名。如果您已经使用其他 MCP 服务器,则需要将 JSON 文件合并到现有内容中。{ "mcpServers": { "inspect_excel_xlsx_file": { "command": "/Users/<YOUR-USERNAME>/Downloads/openpyxl_mcp_server", "args": [] } } }在 Windows 上,将以下内容添加到
claude_desktop_config.json文件中。将<YOUR-USERNAME>替换为您的 MacOS 用户名。如果您已经使用其他 MCP 服务器,则需要将 JSON 文件合并到现有内容中。{ "mcpServers": { "inspect_excel_xlsx_file": { "command": "C:\\Users\\<YOUR-USERNAME>\\Downloads\\openpyxl_mcp_server.exe", "args": [] } } }更新配置文件后,您需要重新启动 Claude 应用程序才能使更改生效。关闭 Claude 应用程序窗口是不够的。在 Windows 上,您必须右键单击系统托盘中的 Claude 图标,然后选择“退出”。在 macOS 上,您可以使用 Command+Q。
如果遇到问题,请查阅以下资源:
Anthropic 开发人员文档中的“使用 Claude for Desktop 测试您的服务器”部分
有人还在https://claudedesktopconfiggenerator.com/上制作了一个配置文件生成器
配置其他 MCP 客户端
在其他支持 MCP 服务器的工具中配置 MCP 服务器的说明:
来自源代码(用于开发)
本节仅适用于您希望修改源代码或不信任所提供的可执行文件并希望从源代码运行的情况。
假设您已将您的 repo 克隆到/Users/jonas/repos/openpyxl_mcp_server ,则配置文件内容现在应更改为:
示例提示
示例 1
使用“利用移动监测方法的近港空气质量评估”数据集中的KimbroughEvelyn_A-5qg0_Dataset_20160624.xlsx文件,数据集来自https://catalog.data.gov/dataset/near-port-air-quality-assessment-utilizing-a-mobile-monitoring-approach
从描述和文件内容来看,我并不清楚这个数据集是关于什么端口的。我们来问问 Claude:
我在 ~/Downloads/KimbroughEvelyn_A-5qg0_Dataset_20160624.xlsx 目录下有一个 Excel 文件,其中包含一项关于美国一个或多个港口附近空气污染的研究数据。您能从文件内容推断出这项研究涵盖了哪些港口吗?
https://claude.ai/share/d87f67a9-dbc0-4223-86ff-3b4c1f9fa2e7
在对 MCP 服务器进行 11 次调用后,响应如下:
查看图 2 中的经纬度坐标并将其与位置信息相结合,我可以推断出这项研究的重点是南卡罗来纳州查尔斯顿港。
数据集中的坐标(大约纬度 32.83 和经度 -79.87)对应于查尔斯顿地区,对市中心、铁路站场和机场监测站的引用与港口城市周围的空气质量监测一致。
该数据集似乎包含在查尔斯顿港附近收集的空气污染测量数据(PM2.5 和 PM10),并对港口位置和背景/参考站点进行了比较。
示例 2:
我是一家拥有 10 个单元的小型业主协会的财务主管。我们的账簿记录在 Google 表格中的一个 Excel 文件中。该文件包含 9 个工作表,其中 9 个用于记录交易清单、会员会费账户和季度报告等内容。
该文件包含非公开信息,因此此示例仅显示提示、一些关键“见解”和最终答案:
~/Downloads/CASH FLOW 2024.xlsx 是我业主协会的财务状况。2024 年我们花了多少钱维护洒水系统?有多少笔交易构成了这个总额?每笔交易是什么时候发生的?
[...]
我看到一个“交易”表,里面可能包含详细的支出记录。让我在这个表中搜索“洒水器”来查找相关交易:
[...]
让我检查一下 2024 年的摘要表,看看洒水装置维护是否列为一个类别:
[...]
太棒了!我在 YEAR 2024 表格的第 24 行找到了“洒水器维护”类别。现在,我来查看与洒水器维护相关的实际交易:
[...]
让我通过在整个交易表中专门搜索“洒水器维护”来检查更多条目:
[...]
根据我对“CASH FLOW 2024.xlsx”文件中 HOA 财务记录的分析,我发现了有关 2024 年洒水系统维护费用的信息:
2024 年喷水灭火系统维护费用总额:565.00 美元 交易次数:1 笔 交易日期:2024 年 9 月 9 日
这笔费用在“交易”表中显示为单笔交易。电子表格中“2024 年实际支出与计划支出”表中还包含年度洒水装置维护预算金额 750.00 美元,并注明“尚未收到任何发票”(由于目前只记录了一张发票,因此该信息可能已过期)。您是否希望我分析一下您业主协会 (HOA) 洒水装置维护费用的其他方面,或电子表格中的其他财务信息?
真是个故事。我们家的洒水车工只在春天给我们开了一次账单,却忘了在年底把账单寄给我们。别担心,他拿到了工资,但账单已经记在2025年了。
示例 3:填写表格
我在谷歌上搜索了一些有趣的Excel工作簿,找到了加州自然资源局的DPR 973表格: https://www.parks.ca.gov/pages/22374/files/Annual%20Report%20DPR973.xls 。这似乎是一份由支持加州州立公园的“协会”填写的表格。需要说明的是,我与这些协会没有任何关系。但我把表格从.xls格式转换成.xlsx格式,并请Claude帮我填写:
我需要提交 DPR973 表格,因为我在加州州立公园的“合作协会”工作。我需要填写的表格是这个 Excel 表格:/Users/jonas/Downloads/Annual Report DPR973.xlsx。我们通过出版书籍来支持州立公园,并通过出售柴火来获得收入。我需要在工作簿的哪个单元格填写?
在对该工具调用 11 次之后,响应似乎是正确的,尽管我不明白为什么 Claude 根本没有查看剩余的表格:
根据我对 DPR973 表格的检查,我现在将指导您需要在何处填写出版书籍和销售木柴的合作协会的单元格:
第 1 页:
您需要填写协会信息(第一部分),其中包含您组织的详细信息(名称、地址、联系信息)
将单元格 C4 中的年份更新为当前报告年份
第 2 页(A) - 您将在此处记录销售信息:
对于您的图书销售(将被视为解释性/教育性):
* 第 1 行(单元格 F22):总销售额 - 材料(用于您出版的书籍) * 第 2 行(单元格 F23):任何退货或退款 * 第 3 行(单元格 F24):书籍销售成本
对于您的木柴销售:
* 第 23 行(单元格 F51):销售总额 - 柴火 * 第 24 行(单元格 F52):任何退款/退回/损坏的木柴 * 第 25 行(单元格 F53):木柴销售成本
表格将自动计算单元格 F25(账面利润)、F54(柴火利润)和 F58(净利润总额)中的总计
第 3 页- 财务摘要:
您的销售数据将自动从第 2 页 (A) 填充到:
* 第 6 行(单元格 F11):总销售额 * 第 7 行(单元格 F12):商品/服务总成本 + 退货/退款 * 第 8 行(单元格 H13):所有材料和服务的净利润
您需要手动输入:
* 任何捐赠/捐助(第 1 行,F6 单元格) * 会员费(如适用)(第 4 行,手机 H9) * 利息/投资收入(如有)(第 5 行,单元格 H10) * 筹款信息(如适用)(第 9-11 行) * 其他收入(如适用)(第 12 行,单元格 H17)
对于费用:
* 第 15 行(单元格 F21):向加州州立公园提供的任何直接拨款 * 第 16 行(单元格 F22):解说项目支持费用 * 第 17 行(单元格 F23):其他 CSP 程序支持 * 第 19 行(单元格 H25):管理和一般费用
对于资产/负债:
* 第 22 行(单元格 F30):总资产 * 第 23 行(单元格 H31):负债总额 * 第 24-26 行(单元格 F32-F34):按限制类型划分的净资产
第 4 页(未完全检查但可能包含):
附加说明、解释和签名
对于您的具体活动(图书出版和木柴销售),请重点准确完成:
第 2 页 (A) 上的解释性和教育性销售部分用于您的图书销售
第 2 页 (A) 上的“木柴销售”部分,用于记录您的木柴收入
完整的财务摘要在第 3 页
您希望我更详细地解释某个特定部分吗?
示例 4
它使用了来自自有和租赁物业清单 (IOLP) 数据集的文件2025-3-7-iolp-buildings.xlsx该数据集可从https://catalog.data.gov/dataset/inventory-of-owned-and-leased-properties-iolp获取。如果您关注最近几周的新闻,您就会知道为什么这是目前 data.gov 上最受欢迎的数据集。
迅速的:
使用“/Users/jonas/Downloads/2025-3-7-iolp-buildings.xlsx”中的 Excel 文件:犹他州面积最大的联邦大楼是多少平方英尺?
我反复使用此文件和提示作为测试用例并得到了混合结果:
由于达到上下文限制,聊天无响应终止。这种情况发生在 Claude 陷入一次查询多行数据的循环时。
由于 Claude 在过程中做出了“错误的假设”,导致答案错误。例如,在这次聊天中,它认定最大的建筑一定位于盐湖城,并开始在电子表格中搜索任意术语。
正确答案,例如此聊天:奥格登的 IRS 服务中心是犹他州名单上最大的联邦拥有的建筑。
脚注:国税局服务中心(IRS Service Center)是名单上最大的建筑,这一点是正确的。“Bumblehive”(又名“犹他州数据中心”),又名“情报界综合国家网络安全倡议数据中心”,几乎肯定更大,但并未包含在文件中。
贡献与发展
构建独立可执行文件
要创建不需要安装 Python 的独立可执行文件:
确保已安装所有依赖项:
pip install -r requirements.txt pip install -r requirements-dev.txt构建可执行文件:
pyinstaller openpyxl_mcp_server.spec
可执行文件将在dist目录中创建。在 Windows 上,它将被命名为openpyxl_mcp_server.exe 。在 macOS 上,它将被命名为openpyxl_mcp_server 。
注意:在 macOS 上构建时,您可能需要对可执行文件进行签名才能使其正常运行。您可以使用以下命令执行此操作:
MCP 服务器目录
openpyxl-mcp-server 目前列在这些 MCP 服务器目录中: