使用说明
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+
许可证
麻省理工学院
