mcpField
O
openpyxl_mcp_server

openpyxl_mcp_server

本地服务
github.com/jonemo开发工具1926 周前更新

关于 openpyxl_mcp_server

openpyxl_mcp_server 封装 OpenPyXl 的部分功能,让 MCP 客户端读取 Excel 工作簿数据,适合通过 Claude 等客户端查询表格内容。

主要功能

  1. 01读取 Excel 文件数据
  2. 02封装 OpenPyXl 功能
  3. 03供 MCP 客户端调用

适用场景

  1. 01询问工作簿中的数据
  2. 02查找多个工作表中的内容

MCP 相关

它将 OpenPyXl 的部分功能作为 MCP 服务提供,使 Claude 等客户端能够读取 Excel 文件数据。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

openpyxl_mcp_server

这是什么?

这是一个围绕 OpenPyXl Python 库的轻量封装,可将其部分功能作为 Model Context Protocol(MCP)服务公开。这样,Claude 和其他 MCP 客户端就能从 Excel 文件中获取数据。

相关链接:

安装

常规步骤
  1. 从 https://github.com/jonemo/openpyxl-mcp-server/releases 下载最新版本的可执行文件。openpyxl_mcp_server 适用于 MacOS,openpyxl_mcp_server.exe 适用于 Windows。
  2. MacOS 用户请确保为下载的文件设置可执行权限:chmod a+x /path/to/openpyxl_mcp_server(将 /path/to/ 替换为实际的下载位置)。
  3. 配置 MCP 客户端。最常见的是 Claude Desktop,请参阅下一节的说明。

Windows 会试图阻止你运行从互联网下载的未知可执行文件。 你需要在多个位置点击“保留”或“仍然保留”,才能避免它删除该文件。 具体操作取决于你使用的浏览器以及 Windows Defender 设置。

或者,如果你不信任我的可执行文件,也可以直接从此仓库安装源代码版本。请参阅下文的“从源代码安装”一节。

配置 Claude Desktop

请注意,这仅适用于 Claude Desktop 桌面应用,不适用于在网页浏览器中运行的 Claude。

  1. 安装 Claude Desktop。
  2. 下载 MCP 服务的可执行文件(请参阅上一节)。 以下步骤假设你已将可执行文件下载到 Downloads 文件夹。 你也可以使用其他文件夹,并相应调整下面配置中的路径。
  3. 在 Claude Desktop 中,打开“Settings...”菜单: README 配图
  4. 转到设置中的“Developer”部分。
  5. 点击“Edit Config”。如果你还没有 MCP 服务配置文件,这会创建一个。 该文件的默认位置为:
    • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows:%APPDATA%\Claude\claude_desktop_config.json
  6. 在 MacOS 上,将以下内容添加到你的 claude_desktop_config.json 中。 将 <YOUR-USERNAME> 替换为你的 MacOS 用户名。 如果你已经使用其他 MCP 服务,需要将此 JSON 合并到现有内容中。
    {
      "mcpServers": {
        "inspect_excel_xlsx_file": {
          "command": "/Users/<YOUR-USERNAME>/Downloads/openpyxl_mcp_server",
          "args": []
        }
      }
    }
    
  7. 在 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": []
        }
      }
    }
    
  8. 更新配置文件后,需要重启 Claude 应用,使更改生效。仅关闭 Claude 应用窗口是不够的。在 Windows 上,必须右键点击系统托盘中的 Claude 图标并选择“Quit”。在 macOS 上,可以使用 Command+Q。

如果遇到问题,请参阅以下资源:

配置其他 MCP 客户端

配置其他支持 MCP 服务的工具的说明:

从源代码运行(开发)

仅当你希望修改源代码,或不信任提供的可执行文件并希望从源代码运行时,本节才适用。

git clone [email protected]:jonemo/openpyxl-mcp-server.git
cd openpyxl-mcp-server
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt

假设你已将仓库克隆到 /Users/jonas/repos/openpyxl_mcp_server,现在应将配置文件内容更改为:

{
  "mcpServers": {
    "inspect_excel_xlsx_file": {
      "command": "/Users/jonas/repos/openpyxl_mcp_server/venv/bin/python",
      "args": ["/Users/jonas/repos/openpyxl_mcp_server/openpyxl_mcp_server.py"]
    }
  }
}

示例提示词

示例 1

使用“Near-Port Air Quality Assessment Utilizing a Mobile Monitoring Approach”数据集中的文件 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 次后,得到的答复是:

查看 Fig 2 工作表中的纬度和经度坐标,并结合位置信息,我可以推断这项研究聚焦于南卡罗来纳州的查尔斯顿港。

数据集中的坐标(约为纬度 32.83、经度 -79.87)对应查尔斯顿地区,而市中心、铁路编组场和机场监测站的相关信息也与港口城市周边的空气质量监测相符。

该数据集似乎包含在查尔斯顿港附近采集的空气污染测量数据(PM2.5 和 PM10),并比较了港口位置与背景/参考地点的数据。

示例 2:

我是一个小型业主协会的财务主管,协会有 10 个住户。我们的账目记录在 Google Sheets 中的一个 Excel 文件里。该文件有 9 个工作表,分别记录交易清单、成员会费账户、季度报告等内容。

文件包含非公开信息,因此本示例只展示提示词、一些关键“洞察”和最终回答:

~/Downloads/CASH FLOW 2024.xlsx 是我所在业主协会的财务记录。2024 年我们为喷淋系统维护支付了多少费用?有多少笔交易计入了这笔总额?每笔交易分别发生在什么时候?

[...]

我看到有一个“Transactions”工作表,里面可能包含详细的支出记录。我来在这个工作表中搜索“sprinkler”,查找相关交易:

[...]

我来查看 YEAR 2024 汇总工作表,看看喷淋系统维护是否列为一个类别:

[...]

太好了!我在 YEAR 2024 工作表第 24 行找到了“Sprinkler Maintenance”这一类别。现在,我来查看与喷淋系统维护相关的实际交易:

[...]

我来在整个 Transactions 工作表中专门搜索“Sprinkler Maintenance”,查看更多条目:

[...]

根据我对你们业主协会在“CASH FLOW 2024.xlsx”文件中的财务记录所做的分析,以下是我找到的 2024 年喷淋系统维护费用信息:

2024 年喷淋系统维护的总费用:$565.00 交易笔数:1 笔 交易日期:2024 年 9 月 9 日

这笔费用在 Transactions 工作表中显示为一笔交易。电子表格还在“YEAR 2024 Actuals vs Planned”工作表中列出了全年喷淋系统维护的预算金额 $750.00,并附有备注“尚未收到任何发票”(这条备注可能已过时,因为现在已有一张发票记录在案)。 你还想让我分析这份电子表格中业主协会喷淋系统维护费用的其他情况,或其他财务信息吗?

这是真事。我们的喷淋系统维护人员只向我们收取了春季那次上门服务的费用,后来忘了寄出年内后续工作的账单。别担心,他已经收到了款项,只是这笔费用记在 2025 年账上。

示例 3:填写表单

我在 Google 上搜索有趣的 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. 第 1 页:

    • 您需要填写协会信息(第一部分),包括组织的详细信息(名称、地址、联系信息)
    • 将单元格 C4 中的年份更新为当前报告年度
  2. 第 2 页(A)——在此记录销售信息:

    • 对于图书销售(应归类为解说/教育类):

      • 第 1 行(单元格 F22):总销售额——材料(出版的书籍)
      • 第 2 行(单元格 F23):退货或退款
      • 第 3 行(单元格 F24):图书销售成本
    • 对于木柴销售:

      • 第 23 行(单元格 F51):总销售额——木柴
      • 第 24 行(单元格 F52):退还/退回/损坏木柴的金额
      • 第 25 行(单元格 F53):木柴销售成本
    • 表单会自动计算单元格 F25(图书利润)、F54(木柴利润)和 F58(净利润总额)

  3. 第 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. 第 4 页(未全面检查,但可能包含):

    • 补充说明、解释和签名

对于您的具体活动(出版书籍和销售木柴),请重点准确填写:

  1. 第 2 页(A)上的解说和教育类销售部分,填写图书销售情况
  2. 第 2 页(A)上的木柴销售部分,填写木柴收入
  3. 第 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 服务中心的说法是正确的,前提是指名单中最大的大楼。“Bumblehive”,又称“犹他州数据中心”,也称“情报界综合国家网络安全倡议数据中心”,几乎可以肯定更大,但未列入该文件。

贡献与开发

构建独立可执行文件

如需创建无需安装 Python 的独立可执行文件:

  1. 确保已安装所有依赖项:

    pip install -r requirements.txt
    pip install -r requirements-dev.txt
    
  2. 构建可执行文件:

    pyinstaller openpyxl_mcp_server.spec
    

可执行文件将创建在 dist 目录中。在 Windows 上,文件名为 openpyxl_mcp_server.exe;在 macOS 上,文件名为 openpyxl_mcp_server。

注意:在 macOS 上构建时,可能需要对可执行文件签名才能正常运行。可以使用以下命令完成:

codesign --force --deep --sign - dist/openpyxl_mcp_server
MCP 服务目录

openpyxl-mcp-server 目前列在以下 MCP 服务目录中:

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。