Excel自动化服务器

一个通过xlwings COM实现Excel自动化的服务器,支持处理DRM保护文件及实时交互。

  • by geniuskey
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 geniuskey/mcp-server-xlwings

使用说明

mcp服务器xlwings

通过xlwings COM实现Excel自动化的MCP服务器。适用于DRM保护的文件。

为什么是xlwings?

图书馆喜欢 openpyxl 或 pandas 读 .xlsx 文件直接从磁盘。在以下情况下失败:

  • DRM/文件级加密 应用(在企业环境中很常见)
  • 你需要与 实时Excel会话 (公式、宏、插件)
  • 文件被其他进程锁定

mcp-server-xlwings 用途 COM自动化 与正在运行的Excel进程通信,以便它可以读取和写入Excel本身可以打开的任何文件,包括受DRM保护的文档。

xlwings独有的功能

这些特征是 不可能 使用openpyxl等基于文件的库:

  • 读取用户的当前选择 --准确查看用户正在查看的内容
  • 获取活动工作簿 --无需指定文件路径
  • 运行VBA宏 --执行现有宏并获取其返回值
  • 实时公式结果 --设置一个公式并立即得到计算值
  • 强制重新计算 --触发Excel重新计算所有公式

安装

使用uvx(推荐)

uvx mcp-server-xlwings

使用pip

pip install mcp-server-xlwings

配置

克劳德桌面版

添加 %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "xlwings": {
      "command": "uvx",
      "args": ["mcp-server-xlwings"]
    }
  }
}

克劳德代码

claude mcp add xlwings -- uvx mcp-server-xlwings

房间代码(VS代码)

添加到Roo Code MCP设置或创建 <project-root>/.roo/mcp.json:

{
  "mcpServers": {
    "xlwings": {
      "command": "uvx",
      "args": ["mcp-server-xlwings"]
    }
  }
}

光标

添加 %USERPROFILE%\.cursor\mcp.json:

{
  "mcpServers": {
    "xlwings": {
      "command": "uvx",
      "args": ["mcp-server-xlwings"]
    }
  }
}

帆板运动

添加 %USERPROFILE%\.codeium\windsurf\mcp_config.json:

{
  "mcpServers": {
    "xlwings": {
      "command": "uvx",
      "args": ["mcp-server-xlwings"]
    }
  }
}

继续(VS代码)

添加 ~/.continue/config.yaml:

mcpServers:
  - name: xlwings
    command: uvx
    args:
      - mcp-server-xlwings

可用工具(11)

所有工具默认为 活动工作簿 当 workbook 省略。

工具 说明
get_active_workbook 获取活动工作簿信息、工作表和当前选择的数据
manage_workbooks 列出、打开、保存、关闭或重新计算工作簿
read_data 读取一个范围 merge_info, header_row, sheet="*" 批量读取,以及 detail 模式
write_data 编写二维数组(data)或单细胞配方(formula)
manage_sheets 列出、添加、删除、重命名、复制、激活工作表。插入/删除行和列
find_replace 搜索文本,可选择替换文本
format_range 应用格式(粗体、斜体、颜色、边框、对齐方式、数字格式等)
run_macro 执行VBA宏并获取其返回值
get_formulas 获取具有可选计算值的范围内的所有公式
get_cell_styles 获取某个范围内单元格的格式/样式信息(粗体、颜色、边框等)
get_objects 在图纸上列出图表、图像和形状

例子

查看用户正在处理的内容

“我打开的电子表格中有什么?”

代理人打电话来 get_active_workbook() 要获取工作簿名称、工作表和选择数据,请执行以下操作 read_data() 取整张纸。

汇总所选数据

“总结我选择的数据”

代理人打电话来 get_active_workbook() --响应直接包括选择数据。

运行宏

“运行UpdateReport宏”

代理人打电话来 run_macro(macro_name="UpdateReport") 并返回结果。

构建摘要行

“在C10中添加一个总计C2:C9的SUM公式”

代理人打电话来 write_data(start_cell="C10", formula="=SUM(C2:C9)") 并返回计算值。

设置标题行格式

“将第1行加粗,居中为黄色背景”

代理人打电话来 format_range(cell_range="A1:D1", bold=true, alignment="center", bg_color="#FFFF00").

一次阅读所有表格

“给我每张纸的摘要”

代理人打电话来 read_data(sheet="*") --在一次调用中返回所有工作表摘要。

正确读取合并的单元格

“读取B6:C20并填写合并的单元格值”

代理人打电话来 read_data(cell_range="B6:C20", merge_info=true)。合并的单元格返回父值,而不是null。

查找所有公式

“显示此工作表中的所有公式”

代理人打电话来 get_formulas(cell_range="A1:Z100", values_too=true) 并得到每个公式及其计算值。

插入行

“在第5行插入3行空白行”

代理人打电话来 manage_sheets(action="insert_rows", position=5, count=3).

需求

  • 视窗 (Excel COM自动化仅适用于Windows)
  • 微软Excel 已安装
  • Python 3.10+

许可证

麻省理工学院