
APISIX-MCP:利用 AI + MCP 拥抱 API 智能化管理
在职场办公的小伙伴们每天几乎不可少的工作内容就是数据处理,但凡数据处理相关工作也是必然离不开Excel。
But,面对一些数据规模灰常庞大,又要与不同业务部门频繁协作的应用场景,常规的手动操作Excel恐怕是会把我们整个人搞崩溃。Excel纯桌面应用客户端是很难满足高效、自动化、多端协同的需求场景,那么,怎么才能将Excel从本地工具升级为可编程、可集成的服务化平台呢?Excel-MCP-Server(下面简称EMS)就是解决这个问题的一大利器,下面将从功能解析、技术实现到应用场景,全面解读这一开源项目的方方面面。
Excel MCP Server是一款基于Python开发的服务器应用,它的神奇之处在于,支持用户在不安装Microsoft Excel的情况下,利用MCP协议提供对Excel文件的操作能力,并且支持工作簿的创建和修改,能够管理工作表和单元格范围数据处理。
同时支持处理格式和样式,甚至支持图表和透视表等高级功能,这就让我们在日常工作中面临自动化数据处理、报告生成以及数据分析等方面工作具有了一个神级助手,让我们面对复杂的数据处理工作场景不再束手无策,被搞的焦头烂额。
Excel MCP Server支持多维度数据管理工作,包括:
EMS采用分层架构,分为接口层、业务逻辑层、数据层:
其关键技术点在于,架构上采用异步任务队列,通过Celery实现异步处理,避免长时间操作阻塞主线程,以及动态模板引擎,允许用户上传Excel模板,并通过占位符动态填充数据,支持条件格式与图表生成。
Excel MCP Server的应用场景那是非常的广泛,下面我们就拿几个典型的使用场景举例来说:
可以使用以下环境变量配置服务器:
EXCEL_FILES_PATH:将存储Excel文件的目录(默认:
./excel_files)
我们也可以通过不同的方式进行设置:
set EXCEL_FILES_PATH=C:pathtoexcelfiles
uv run excel-mcp-server
$env:EXCEL_FILES_PATH="C:pathtoexcelfiles"
uv run excel-mcp-server
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
create_workbook(filepath: str) -> str
filepath:创建工作簿的路径;返回:包含已创建文件路径的成功消息;
create_worksheet(filepath: str, sheet_name: str) -> str
filepath:Excel文件的路径;
sheet_name:新工作表的名称;返回:Success message;
get_workbook_metadata(filepath: str, include_ranges: bool = False) -> str
filepath:Excel文件的路径
include_ranges:是否包含范围信息返回:工作簿元数据的字符串表示形式
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(
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(
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(filepath: str, sheet_name: str, start_cell: str, end_cell: str) -> str
filepath:Excel文件的路径;
sheet_name:目标工作表名称;
start_cell:范围的起始单元格;
end_cell:范围的结束单元格;返回:Success message;
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(filepath: str, sheet_name: str, cell: str, formula: str) -> str
filepath:Excel文件的路径;
sheet_name:目标工作表名称;
cell:目标单元格引用;
formula:要应用的Excel公式;返回:Success message;
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(
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(
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(filepath: str, source_sheet: str, target_sheet: str) -> str
filepath:Excel文件的路径;
source_sheet:要复制的图纸名称;
target_sheet:新工作表的名称;返回:Success message;
delete_worksheet(filepath: str, sheet_name: str) -> str
filepath:Excel文件的路径;
sheet_name:要删除的工作表的名称;返回:Success message;
rename_worksheet(filepath: str, old_name: str, new_name: str) -> str
filepath:Excel文件的路径;
old_name:当前图纸名称;
new_name:新工作表名称;返回:Success message;
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(
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(
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,如果大家有任何疑问或想法,欢迎在评论区留言交流!
友情提示:以上内容均为作者本人学习分享,旨在与大家学习交流,不代表任何官方平台观点(仅供学习参考),不构成任何工作建议、指导,请大家谨慎评估技术可行性后再做决策,感谢您对技术探索精神的理解与支持!