所有文章 > AI驱动 > Excel MCP Server:无需安装Microsoft Excel也可以高效制作表格!
Excel MCP Server:无需安装Microsoft Excel也可以高效制作表格!

Excel MCP Server:无需安装Microsoft Excel也可以高效制作表格!

Excel MCP Server:职场数据处理的神级助手

在职场办公的小伙伴们每天几乎不可少的工作内容就是数据处理,但凡数据处理相关工作也是必然离不开Excel。

image

But,面对一些数据规模灰常庞大,又要与不同业务部门频繁协作的应用场景,常规的手动操作Excel恐怕是会把我们整个人搞崩溃。Excel纯桌面应用客户端是很难满足高效、自动化、多端协同的需求场景,那么,怎么才能将Excel从本地工具升级为可编程、可集成的服务化平台呢?Excel-MCP-Server(下面简称EMS)就是解决这个问题的一大利器,下面将从功能解析、技术实现到应用场景,全面解读这一开源项目的方方面面。

Excel MCP Server是个啥东西?

Excel MCP Server是一款基于Python开发的服务器应用,它的神奇之处在于,支持用户在不安装Microsoft Excel的情况下,利用MCP协议提供对Excel文件的操作能力,并且支持工作簿的创建和修改,能够管理工作表和单元格范围数据处理。

image

同时支持处理格式和样式,甚至支持图表和透视表等高级功能,这就让我们在日常工作中面临自动化数据处理、报告生成以及数据分析等方面工作具有了一个神级助手,让我们面对复杂的数据处理工作场景不再束手无策,被搞的焦头烂额。

Excel MCP Server核心功能

Excel MCP Server支持多维度数据管理工作,包括:

  • 版本控制,完整记录单元格级修改历史
  • 权限体系:支持RBAC角色管理与行级数据隔离
  • 格式兼容:完美兼容xlsx/xlsm/csv等多种格式;
  • 计算引擎方面,内置VBA宏转译器,支持Python/JS自定义函数,以及实时数据透视分析,秒级响应百万级数据查询
  • 支持自动化报表生成系统,支持PDF/HTML多格式导出
  • 协同工作流处理,支持WebSocket实时协同编辑,冲突智能检测,以及工作流引擎支持审批链自动化,并且适配移动端,微信小程序同步查看

Excel MCP Server的技术实现

EMS采用分层架构,分为接口层、业务逻辑层、数据层:

  • 接口层:基于FastAPI构建,提供OpenAPI标准文档,支持快速集成到现有系统;
  • 业务逻辑层:利用Pandas处理数据,结合OpenPyXL操作Excel文件,确保高性能计算;
  • 数据层:支持本地文件存储或云存储(如AWS S3),并通过Redis缓存高频查询数据;

其关键技术点在于,架构上采用异步任务队列,通过Celery实现异步处理,避免长时间操作阻塞主线程,以及动态模板引擎,允许用户上传Excel模板,并通过占位符动态填充数据,支持条件格式与图表生成。

Excel MCP Server的主要应用场景有哪些?

Excel MCP Server的应用场景那是非常的广泛,下面我们就拿几个典型的使用场景举例来说:

  • 企业数据管理方面:Excel文件在企业里的核心地位是不可替代的,它是企业数据的主要载体。Excel MCP Server可以帮助企业统一数据管理,将分散在不同部门的Excel文件集中存储和管理。
  • 自动化报表生成:自动生成日报、周报和月报,减少人工操作,以及数据安全方面,可以通过权限管理和加密技术,确保企业核心数据的安全性。

image

  • 数据分析与决策支持方面:对于需要频繁进行数据分析的企业,Excel MCP Server更是提供了强大的支持:能够快速处理和分析大规模数据,为决策提供依据,包括预测性分析,利用机器学习算法,预测未来趋势和风险,以及大数据可视化展示,通过图表和仪表盘,直观展示数据洞察。
  • 开发人员:对于我们开发人员而言,Excel MCP Server也更是提供了一个灵活的开发平台,API接口:通过RESTful API,方便开发者进行二次开发,支持插件系统,满足自定义插件,扩展系统的功能需求场景。同时开发人员可以积极参与开源社区,与其他开发者分享经验和代码,相互沟通解决技术难题。

Excel MCP 服务配置流程

前置条件

  • Python 3.10+ 版
  • MCP 软件开发工具包 1.2.0+
  • OpenPyXL 3.1.2+

环境配置

可以使用以下环境变量配置服务器:

EXCEL_FILES_PATH:将存储Excel文件的目录(默认:

./excel_files)

我们也可以通过不同的方式进行设置:

  • Windows CMD
set EXCEL_FILES_PATH=C:pathtoexcelfiles
uv run excel-mcp-server
  • Windows PowerShell
$env:EXCEL_FILES_PATH="C:pathtoexcelfiles"
uv run excel-mcp-server
  • Linux/MacOS
export EXCEL_FILES_PATH=/path/to/excel/files
uv run excel-mcp-server

或者在Claude Desktop配置中:

{
"mcpServers": {
"excel": {
"command": "uv run excel-mcp-server",
"transport": "sse",
"env": {
"EXCEL_FILES_PATH": "/path/to/excel/files"
}
}
}
}

下一步,我们启动服务器:

uv run excel-mcp-server

服务器将以SSE模式启动并等待来自MCP客户端的连接。在Cursor IDE中连接,启动服务器后,连接到Cursor IDE中的SSE端点:

http://localhost:8000/sse

Excel MCP 工具将通过代理提供,关键工具及其用法,如下:

工作簿操作

  • create_workbook:创建新的Excel工作簿。
create_workbook(filepath: str) -> str

filepath:创建工作簿的路径;返回:包含已创建文件路径的成功消息;

  • create_worksheet:在现有工作簿中创建新工作表。
create_worksheet(filepath: str, sheet_name: str) -> str

filepath:Excel文件的路径;

sheet_name:新工作表的名称;返回:Success message;

  • get_workbook_metadata:获取有关工作簿的元数据,包括工作表和范围。
get_workbook_metadata(filepath: str, include_ranges: bool = False) -> str

filepath:Excel文件的路径

include_ranges:是否包含范围信息返回:工作簿元数据的字符串表示形式

数据操作

  • write_data_to_excel:将数据写入Excel工作表。
write_data_to_excel(
    filepath: str,
    sheet_name: str,
    data: List[Dict],
    start_cell: str = "A1"
) -> str

filepath:Excel文件的路径;

sheet_name:目标工作表名称;

data:包含要写入的数据的字典列表;

start_cell:起始单元格(默认值:“A1”);返回:Success message;

  • read_data_from_excel:从Excel工作表中读取数据。
read_data_from_excel(
    filepath: str,
    sheet_name: str,
    start_cell: str = "A1",
    end_cell: str = None,
    preview_only: bool = False
) -> str

filepath:Excel文件的路径;

sheet_name:源工作表名称;

start_cell:起始单元格(默认值:“A1”);

end_cell:可选的结束单元格;

preview_only:是否仅返回预览;返回:数据的字符串表示形式;

格式化操作

  • format_range:将格式应用于单元格区域。
format_range(
    filepath: str,
    sheet_name: str,
    start_cell: str,
    end_cell: str=None,
    bold: bool=False,
    italic: bool=False,
    underline: bool=False,
    font_size: int=None,
    font_color: str=None,
    bg_color: str=None,
    border_style: str=None,
    border_color: str=None,
    number_format: str=None,
    alignment: str=None,
    wrap_text: bool=False,
    merge_cells: bool=False,
    protection: Dict[str, Any] =None,
    conditional_format: Dict[str, Any] =None
) -> str

filepath:Excel文件的路径;

sheet_name:目标工作表名称;

start_cell:范围的起始单元格;

end_cell:范围的可选结束单元格;各种格式选项(请参阅参数);返回:Success message;

  • merge_cells:合并单元格区域。
merge_cells(filepath: str, sheet_name: str, start_cell: str, end_cell: str) -> str

filepath:Excel文件的路径;

sheet_name:目标工作表名称;

start_cell:范围的起始单元格;

end_cell:范围的结束单元格;返回:Success message;

  • unmerge_cells:取消合并以前合并的单元格区域。
unmerge_cells(filepath: str, sheet_name: str, start_cell: str, end_cell: str) -> str

filepath:Excel文件的路径;

sheet_name:目标工作表名称;

start_cell:范围的起始单元格;

end_cell:范围的结束单元格;返回:Success message;

公式操作

  • apply_formula:将Excel公式应用于单元格。
apply_formula(filepath: str, sheet_name: str, cell: str, formula: str) -> str

filepath:Excel文件的路径;

sheet_name:目标工作表名称;

cell:目标单元格引用;

formula:要应用的Excel公式;返回:Success message;

  • validate_formula_syntax:验证Excel公式语法而不应用它。
validate_formula_syntax(filepath: str, sheet_name: str, cell: str, formula: str) -> str

filepath:Excel文件的路径;

sheet_name:目标工作表名称;

cell:目标单元格引用;

formula:要验证的Excel公式;返回:Validation result message;

图表操作

  • create_chart:在工作表中创建图表。
create_chart(
    filepath: str,
    sheet_name: str,
    data_range: str,
    chart_type: str,
    target_cell: str,
    title: str = "",
    x_axis: str = "",
    y_axis: str = ""
) -> str

filepath:Excel文件的路径;

sheet_name:目标工作表名称;

data_range:包含图表数据的范围;

chart_type:图表类型(折线图、条形图、饼图、散点图、面积图);

target_cell:放置图表的单元格;

title:可选图表标题;

x_axis:可选X轴标签;

y_axis:可选Y轴标签;返回:Success message;

数据透视表操作

  • create_pivot_table:在工作表中创建数据透视表。
create_pivot_table(
    filepath: str,
    sheet_name: str,
    data_range: str,
    target_cell: str,
    rows: List[str],
    values: List[str],
    columns: List[str] = None,
    agg_func: str = "mean"
) -> str

filepath:Excel文件的路径;

sheet_name:目标工作表名称;

data_range:包含源数据的范围;

target_cell:放置数据透视表的单元格;

rows:行标签的字段;

values:值的字段;

columns:列标签的可选字段;

agg_func:聚合函数(sum、count、average、max、min);返回:Success message;

工作表操作

  • copy_worksheet:在工作簿中复制工作表。
copy_worksheet(filepath: str, source_sheet: str, target_sheet: str) -> str

filepath:Excel文件的路径;

source_sheet:要复制的图纸名称;

target_sheet:新工作表的名称;返回:Success message;

  • delete_worksheet:从工作簿中删除工作表。
delete_worksheet(filepath: str, sheet_name: str) -> str

filepath:Excel文件的路径;

sheet_name:要删除的工作表的名称;返回:Success message;

  • rename_worksheet:重命名工作簿中的工作表。
rename_worksheet(filepath: str, old_name: str, new_name: str) -> str

filepath:Excel文件的路径;

old_name:当前图纸名称;

new_name:新工作表名称;返回:Success message;

Range操作

  • copy_range:将单元格区域复制到其他位置。
copy_range(
    filepath: str,
    sheet_name: str,
    source_start: str,
    source_end: str,
    target_start: str,
    target_sheet: str = None
) -> str

filepath:Excel文件的路径;

sheet_name:源工作表名称;

source_start:源范围的起始单元格;

source_end:源范围的结束单元格;

target_start:开始粘贴单元格;

target_sheet:可选的目标工作表名称;返回:Success message;

  • delete_range:删除单元格区域并移动其余单元格。
delete_range(
    filepath: str,
    sheet_name: str,
    start_cell: str,
    end_cell: str,
    shift_direction: str = "up"
) -> str
filepath:Excel文件的路径;
sheet_name

:目标工作表名称;

start_cell:范围的起始单元格;

end_cell:范围的结束单元格;

shift_direction:移动单元格的方向(“向上”或“向左”);返回:Success message;

  • validate_excel_range:验证范围是否存在以及格式是否正确。
validate_excel_range(
    filepath: str,
    sheet_name: str,
    start_cell: str,
    end_cell: str = None
) -> str

filepath:Excel文件的路径;

sheet_name:目标工作表名称;

start_cell:范围的起始单元格;

end_cell:范围的可选结束单元格;返回:Validation result message;

以上Excel MCP服务配置流程以及相关工具讲解就介绍到这里,感兴趣的小伙伴可自己动手验证。

写在最后

Excel MCP Server作为一个专注于Excel数据处理的开源工具,无论是企业用户,还是我们个人用户,它都为我们提供了一个高效、灵活的解决方案,在自动化数据处理、高效数据分析,还是灵活的系统集成方面,它都能满足用户的需求。但是,想要娴熟地把这个工具玩儿转起来,大家还是需要投入一定的时间和精力进行学习和配置。希望这篇文章能够帮助你更好地了解Excel MCP Server,如果大家有任何疑问或想法,欢迎在评论区留言交流!

友情提示:以上内容均为作者本人学习分享,旨在与大家学习交流,不代表任何官方平台观点(仅供学习参考),不构成任何工作建议、指导,请大家谨慎评估技术可行性后再做决策,感谢您对技术探索精神的理解与支持!

原文转载自:https://mp.weixin.qq.com/s/yrDz5qTwj1RANgRnEmiJEw

#你可能也喜欢这些API文章!