内容
# MCP LibreOffice Calc
用于通过UNO控制LibreOffice Calc工作簿的MCP服务器。
该项目专注于对已经打开的工作簿或由服务器显式打开的工作簿进行可靠的电子表格操作。它避免了LibreOffice外部的静默文件重写,并提供了用于编写单元格、范围、超链接和可重用的可视化模板的实用工具。
## 演示

演示展示了`create_gpu_purchase_dashboard_live`工具通过UNO从头开始重建仪表盘:创建工作表、样式和填充每个部分、添加本地Calc图表,因此每次更改都可以在LibreOffice中可见。
更高质量的版本可在[assets/demo.mp4](assets/demo.mp4)中找到。
## 可用工具
- `libreoffice_status`:检查UNO连接并列出可达的Calc工作簿。
- `open_calc`:通过LibreOffice打开Calc或Excel工作簿。
- `ensure_calc_document`:重用已经打开的工作簿,或在缺失时显式打开。
- `list_calc_documents`:列出通过UNO可达的Calc工作簿。
- `list_sheets`:列出工作簿工作表。
- `add_sheet`:如果工作表不存在,则添加。
- `remove_sheet`:删除工作表,但拒绝删除最后一个工作表。
- `activate_sheet`:激活工作表并选择单元格以进行实时可视化工作流。
- `read_cell`:读取单元格值和公式。
- `write_cell`:直接写入一个单元格。
- `write_range`:从起始单元格写入2D表。
- `set_hyperlink`:向Calc单元格添加Ctrl-click超链接。
- `set_internal_hyperlink`:向另一个工作表/单元格添加Ctrl-click超链接。
- `link_url_range`:将范围内的纯文本URL转换为Ctrl-click超链接。
- `apply_calc_template`:应用可视化模板,包括`pc_nostalgia`。
- `create_gpu_purchase_dashboard_live`:通过UNO为实时演示构建GPU购买仪表盘,包括本地Calc图表。
- `auto_fit_sheets`:调整列宽、行高和换行。
- `save_document`:保存工作簿。
构建实时GPU购买仪表盘,包括图表:
```text
create_gpu_purchase_dashboard_live(
path="/path/to/workbook.xlsx",
dashboard_sheet="Dashboard_live",
recreate=true,
pause_seconds=0.25
)
```
## 手动启动
```bash
cd /home/maxime/.local/share/mcp-libreoffice-calc
uv run python src/main.py
```
服务器启动或加入`127.0.0.1:2002`上的LibreOffice UNO监听器。
## 代码配置
示例`~/.code/config.toml`条目:
```toml
[mcp_servers.libreoffice_calc]
command = "uv"
args = ["run", "python", "/home/maxime/.local/share/mcp-libreoffice-calc/src/main.py"]
cwd = "/home/maxime/.local/share/mcp-libreoffice-calc"
[mcp_servers.libreoffice_calc.env]
PYTHONPATH = "/home/maxime/.local/share/mcp-libreoffice-calc/src:/usr/lib/python3.14/site-packages"
```
## 注意
LibreOffice必须通过UNO访问,以控制已经打开的工作簿。推荐的流程是调用`ensure_calc_document`一次,然后使用`add_sheet`、`write_cell`、`write_range`、`set_hyperlink`或`link_url_range`。
MCP服务器在进程启动时加载工具定义。在更改服务器代码或配置后,请重启或重新加载MCP客户端。
从原始基础项目复制的文件仍受其原始许可的约束。`src/`中的主服务器已为此集中的Calc工作流重写。