这是一个基于C++的Excel自动化MCP(模型上下文协议)服务器项目。它利用OpenXLSX库进行Excel文件操作,并通过MCP协议提供一套智能的Excel操作工具,利用LLM的能力。
此MCP服务器提供了以下工具,可以通过LLM调用来与xlsx电子表格文件交互:
open_excel_and_list_sheets:
file_path (字符串):Excel文件的绝对路径。get_sheet_range_content:
sheet_name (字符串):要读取的工作表名称。first_row (数字):起始行号(从1开始计数)。first_column (数字):起始列号(从1开始计数)。last_row (数字):结束行号(从1开始计数)。last_column (数字):结束列号(从1开始计数)。cell_with_coord (布尔值,可选):输出非空单元格及其相应的坐标,适用于输出区域包含大量空单元格的情况。set_sheet_range_content:
sheet_name (字符串):要写入的工作表名称。first_row (数字):起始行号(从1开始计数)。first_column (数字):起始列号(从1开始计数)。values (二维数组):要写入范围的值的二维数组(支持null、布尔值、数字、字符串类型)。create_xlsx_file_by_absolute_path:(注意:工具名称在代码中定义为这个,但在JSON中的键是create_xlsx)
file_path (字符串):文件应创建的绝对路径。(注意:工具描述中提到的自动打开/关闭行为是内部实现细节,无需用户关注。)
该项目使用CMake进行构建。推荐安装Ninja以加快编译速度。
构建步骤:
git clone https://github.com/smileFAace/MCP-ExcelAutoCpp.git# 切换到项目目录(如果不在根目录下)
# cd MCP-ExcelAutoCpp
# 生成构建文件(推荐使用Ninja)
cmake -G "Ninja" -S . -B build
# 执行编译
cmake --build build
编译后的可执行文件通常位于bin/目录中。成功编译后,在./bin/目录中找到名为ExcelAutoCpp(Linux/macOS)或ExcelAutoCpp.exe(Windows)的可执行文件。
启动服务器
只需运行可执行文件即可启动MCP服务器。
# 示例(根据需要调整路径)
./bin/ExcelAutoCpp
当看到类似以下输出时,表示服务器已成功启动并在localhost:8888上监听:
░█▀▀░█░█░█▀▀░█▀▀░█░░░█▀█░█░█░▀█▀░█▀█
░█▀▀░▄▀▄░█░░░█▀▀░█░░░█▀█░█░█░░█░░█░█
░▀▀▀░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀░░▀░░▀▀▀
v0.0.2 By smileFAace
I(17:35:48) i18n: 成功加载语言字符串,语言代码为'en'
I(17:35:48) i18n: 设置当前语言为'en'
W(17:35:48) 在'E:\prj\MCP-ExcelAutoCpp\bin\lang.json'未找到lang.json。使用默认语言。
I(17:35:48) i18n: 设置当前语言为'en'
I(17:35:48) 当前语言设置为:en
I(17:35:48) 正在localhost:8888启动MCP服务器
I(17:35:48) 按Ctrl+C停止服务器
连接和使用:
此服务器遵循MCP协议。您可以使用任何兼容MCP的客户端(如Roo、cline、claude、cherry studio等)连接到服务器的SSE端点(默认:http://localhost:8888/sse),以调用提供的Excel自动化工具。
例如,要在cline中配置此MCP服务器,只需在服务器成功运行后,将以下内容添加到插件提供的mcp配置JSON文件中,然后刷新:
{
"mcpServers": {
"excel-auto-cpp": {
"url": "http://localhost:8888/sse"
}
}
}
更改和自定义服务器语言:
服务器默认界面语言为英语(en)。您可以通过创建自定义语言文件来更改语言:
定位包含服务器可执行文件的目录(通常是bin/)。
在该目录中创建一个名为lang.json的文本文件。
将所需语言的完整键值对复制到此lang.json文件中。
lang/目录下的*.json文件作为模板(例如,lang/zh-cn/lang.json包含中文翻译)。lang.json文件需要包含程序界面和日志所需的所有翻译条目。保存lang.json文件并重启服务器。
lang.json中定义的语言。lang.json文件不存在、格式不正确或缺少必要的翻译条目,服务器将回退到默认的英语(en)语言。您可以从发布页面下载最新版本。