ExcelHelper 是一个基于 Model Context Protocol (MCP) 的服务器,提供 Excel 文件操作功能。它允许用户通过 MCP 工具执行各种 Excel 相关的操作,如打开文件、读写单元格、进行跨表查询等。
今天我们对 ExcelHelper 进行了以下改进:
- 在
excel-server/src/index.ts
文件中添加了 "get_all_sheets" 功能的实现。 - 修改了 "get_all_sheets" 工具的返回格式,现在它会返回一个格式化的 sheet 列表。
- 添加了更多的日志输出,以便更好地诊断潜在问题。
- 测试并验证了 "open_excel" 和 "get_all_sheets" 功能。
- 分析了 Sheet1(奖励类型和格式说明)和 Sheet2(实际配置)的内容,并提供了改进建议。
ExcelHelper 提供以下功能:
- 打开 Excel 文件(包括 .xlsx 和 .csv 格式)
- 读取单元格值
- 写入单元格值
- 批量写入多个单元格
- 批量读取多个单元格
- 读取单元格公式
- 执行跨表查询
- 验证公式
- 获取所有 sheet 名称
-
确保你的系统已安装 Node.js(版本 12 或更高)。
-
克隆此仓库到本地:
git clone 本仓库 cd ExcelHelper
-
安装依赖:
npm install
-
构建项目:
cd excel-server npm run build
-
启动服务器:
node build/index.js
注意:在执行构建和启动操作之前,请确保你已经进入 excel-server
目录。
要在 Roo Code 中启动 ExcelHelper 服务,请按照以下步骤操作:
-
打开 Roo Code 界面。
-
在命令面板中输入以下命令来启动服务:
node F:/MCPExcelRooCode/excel-server/build/index.js
注意:请确保路径与你的实际项目路径相匹配。
-
服务启动后,你会在控制台看到相关的日志信息。
要将 ExcelHelper 配置为 MCP 服务,请按照以下步骤操作:
-
打开 Roo Code 的设置文件。通常位于:
C:\Users\[YourUsername]\AppData\Roaming\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\mcp_settings.json
-
在
mcpServers
对象中添加 ExcelHelper 服务的配置:{ "mcpServers": { "ExcelHelper": { "command": "node", "args": ["F:/MCPExcelRooCode/excel-server/build/index.js"] } } }
注意:请确保路径与你的实际项目路径相匹配。
-
保存设置文件。
-
重启 Roo Code 或重新加载窗口以使更改生效。
现在,ExcelHelper 服务应该可以作为 MCP 服务使用了。
以下是使用 ExcelHelper 的一些示例:
-
打开 Excel 文件:
const result = await mcpClient.callTool("ExcelHelper", "open_excel", { filePath: "path/to/your/file.xlsx" }); console.log(result.content[0].text);
-
读取单元格值:
const result = await mcpClient.callTool("ExcelHelper", "read_cell", { workbookId: "1", sheet: "Sheet1", cell: "A1" }); console.log(result.content[0].text);
-
写入单元格值:
const result = await mcpClient.callTool("ExcelHelper", "write_cell", { workbookId: "1", sheet: "Sheet1", cell: "B2", value: "Hello, World!" }); console.log(result.content[0].text);
-
批量写入多个单元格:
const result = await mcpClient.callTool("ExcelHelper", "write_multiple_cells", { workbookId: "1", sheet: "Sheet1", cells: [ { cell: "A1", value: "Name" }, { cell: "B1", value: "Age" }, { cell: "A2", value: "John" }, { cell: "B2", value: "30" } ] }); console.log(result.content[0].text);
-
批量读取多个单元格:
const result = await mcpClient.callTool("ExcelHelper", "read_multiple_cells", { workbookId: "1", sheet: "Sheet1", range: "A1:B2" }); console.log(JSON.parse(result.content[0].text));
-
获取所有 sheet 名称:
const result = await mcpClient.callTool("ExcelHelper", "get_all_sheets", { workbookId: "1" }); console.log(result.content[0].text);
注意:在使用这些功能之前,请确保你已经通过 MCP 客户端连接到 ExcelHelper 服务器。
欢迎提交问题和拉取请求。对于重大更改,请先开issue讨论您想要改变的内容。