返回市场
开源表格处理MCP服务器

开源表格处理MCP服务器

作者:jonemo18 星标更新:2025-04-24

项目介绍

openpyxl_mcp_server

这是什么?

这是一个围绕OpenPyXl Python库的轻量级封装,它将一些功能暴露为模型上下文协议(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应用,而不适用于在Web浏览器中运行的Claude。

  1. 确保已安装Claude Desktop。
  2. 已下载MCP服务器可执行文件(请参阅上一节)。 假设您已将可执行文件下载到您的下载文件夹。 您可以使用任何其他文件夹,根据配置中的路径进行相应调整。
  3. 在Claude Desktop中,打开“设置...”菜单:
  4. 导航到设置中的“开发者”部分。
  5. 点击“编辑配置”。这将在您没有配置文件的情况下创建一个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图标并选择“退出”。在macOS上,您可以使用Command+Q。

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

配置其他MCP客户端

有关在支持它们的其他工具中配置MCP服务器的说明:

从源代码(用于开发)

本节仅适用于希望修改源代码或不信任提供的可执行文件并希望从源代码运行的情况。

git clone git@github.com: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

使用来自“利用移动监测方法评估近港空气质量”的数据集中的文件KimbroughEvelyn_A-5qg0_Dataset_20160624.xlsx,该数据集可以从https://catalog.data.gov/dataset/near-port-air-quality-assessment-utilizing-a-mobile-monitoring-approach获得。

从快速浏览描述和文件内容来看,我不清楚这个数据集涉及哪些港口。让我们问Claude:

我有一个Excel文件位于~/Downloads/KimbroughEvelyn_A-5qg0_Dataset_20160624.xlsx,其中包含与美国某个或某些港口附近空气污染研究相关的数据。你能从文件内容推断出这项研究覆盖了哪些港口吗?

https://claude.ai/share/d87f67a9-dbc0-4223-86ff-3b4c1f9fa2e7

经过11次调用MCP服务器后,响应如下:

查看Fig 2表格中的经纬度坐标,并结合位置信息,我可以推测这项研究集中在南卡罗来纳州查尔斯顿港。

数据集中的坐标(大约纬度32.83,经度-79.87)对应查尔斯顿地区,而提到的市中心、铁路场站和机场监测站与港口城市的空气质量监测一致。

这个数据集似乎包含了查尔斯顿港附近的空气污染测量值(PM2.5和PM10),并与港口地点和背景/参考站点进行了比较。

示例2:

我是一个小规模10户业主协会的财务主管。我们的记账发生在Google Sheets中的一个Excel文件中。该文件有9个工作表,分别记录了交易列表、会员费用账户、季度报告等。

该文件包含非公开信息,因此此示例仅显示提示、几个关键“见解”和最终答案:

~/Downloads/CASH FLOW 2024.xlsx是我业主协会的财务状况。我们在2024年为喷灌系统维护支付了多少费用?有多少笔交易贡献了这个总额?每笔交易发生的时间是什么时候?

[...]

我看到一个“交易”工作表,很可能包含详细的支出记录。让我在这个工作表中搜索“喷灌”以找到相关的交易:

[...]

让我检查“2024年总结”工作表,看看是否列出了喷灌维护类别:

[...]

很好!我在“2024年总结”工作表的第24行找到了“喷灌维护”类别。现在,让我检查与喷灌维护相关的实际交易:

[...]

让我通过在整个“交易”工作表中搜索“喷灌维护”来检查更多条目:

[...]

根据我对“CASH FLOW 2024.xlsx”文件中HOA财务记录的分析,以下是关于2024年喷灌系统维护费用的发现:

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

这项费用作为一笔交易出现在“交易”工作表中。电子表格中还有一个预算金额,即“2024年实际与计划”工作表中的$750.00,附带注释“尚未收到任何发票”(这可能过时了,因为现在有一笔发票被记录下来)。 您是否希望我进一步分析HOA的喷灌维护费用或其他电子表格中的财务信息?

真实情况是,我们的喷灌工只在春季为我们提供了一次服务,并忘记发送后来一年工作的账单。别担心,他已经收到了付款,但账单被记录在2025年。

示例3:填写表格

我在Google搜索有趣的工作簿时发现了由加利福尼亚自然资源局发布的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页

    • 您需要填写协会信息(第I部分),包括组织的详细信息(名称、地址、联系方式)
    • 更新单元格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上最受欢迎的数据集。

提示:

使用Excel文件“/Users/jonas/Downloads/2025-3-7-iolp-buildings.xlsx”:犹他州最大的联邦建筑是多少平方英尺?

我多次使用此文件和提示作为测试案例,结果好坏参半:

  • 因为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服务器目录中: