README
🚀 C++ Excel自动化MCP服务器
这是一个基于C++的Excel自动化MCP(模型上下文协议)服务器项目。它利用OpenXLSX库进行Excel文件操作,并旨在通过MCP协议,借助大语言模型(LLM)的能力,提供一套智能的Excel操作工具。
🚀 快速开始
本项目使用CMake进行构建,推荐安装Ninja以实现更快的编译速度。
准备环境
- 确保你已安装C++17编译器、CMake(版本 >= 3.15)和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)的可执行文件。
# 示例(根据需要调整路径)
./bin/ExcelAutoCpp
当你看到类似以下的输出时,服务器已成功启动并正在监听localhost:8888:
░█▀▀░█░█░█▀▀░█▀▀░█░░░█▀█░█░█░▀█▀░█▀█
░█▀▀░▄▀▄░█░░░█▀▀░█░░░█▀█░█░█░░█░░█░█
░▀▀▀░▀░▀░▀▀▀░▀▀▀░▀▀▀░▀░▀░▀▀▀░░▀░░▀▀▀
v0.0.2 By smileFAace
I(17:35:48) i18n: Successfully loaded language string for language code 'en'
I(17:35:48) i18n: Set current language to 'en'
W(17:35:48) lang.json not found at 'E:\prj\MCP-ExcelAutoCpp\bin\lang.json'. Using default language.
I(17:35:48) i18n: Set current language to 'en'
I(17:35:48) Current language set to: en
I(17:35:48) Starting MCP server at localhost:8888
I(17:35:48) Press Ctrl+C to stop the server
连接和使用
本服务器遵循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)语言。
- 服务器将在启动时自动检测并加载此文件。如果加载成功,它将使用
✨ 主要特性
- 简单易用的MCP接口:提供标准化的MCP工具,方便客户端(如AI助手)调用Excel自动化功能。
- 单文件部署:编译成单个可执行文件,便于部署和执行。
- 可定制的多语言支持:通过JSON文件轻松添加或修改界面语言。
🔧 技术细节
服务器功能
此MCP服务器提供以下工具,可由LLM调用以与xlsx电子表格文件进行交互:
open_excel_and_list_sheets
- 描述:打开一个Excel文件并列出所有表名。此工具还将设置当前Excel文件路径,以供后续操作使用。建议在进行任何操作之前或想要更改要修改的文件时,先运行此工具。
- 参数:
file_path(字符串):Excel文件的绝对路径。
get_sheet_range_content
- 描述:获取并输出特定工作表中指定范围内的表格内容。自动打开和关闭Excel文件。
- 参数:
sheet_name(字符串):要读取的工作表名称。first_row(数字):起始行号(从1开始索引)。first_column(数字):起始列号(从1开始索引)。last_row(数字):结束行号(从1开始索引)。last_column(数字):结束列号(从1开始索引)。cell_with_coord(布尔值,可选):输出非空单元格及其各自的坐标,适用于输出区域包含大量空单元格的情况。
set_sheet_range_content
- 描述:设置特定工作表中指定范围内的表格内容。自动打开和关闭Excel文件。
- 参数:
sheet_name(字符串):要写入的工作表名称。first_row(数字):起始行号(从1开始索引)。first_column(数字):起始列号(从1开始索引)。values(二维数组):要写入该范围的值的二维数组(支持null、布尔值、数字、字符串类型)。
create_xlsx_file_by_absolute_path
- 注意:此工具在代码中定义的名称为
create_xlsx_file_by_absolute_path,但JSON中的键为create_xlsx。 - 描述:使用给定的路径创建一个新的xlsx文件。创建完成后自动关闭Excel文件。
- 参数:
file_path(字符串):文件应创建的绝对路径。
(注意:工具描述中提到的自动打开/关闭行为是内部实现细节,不需要用户关注。)
📦 下载
你可以从发布页面下载最新版本。
微信扫一扫