mcpField
N
Nelson MCP — LibreOffice

Nelson MCP — LibreOffice

本地服务
github.com生产力344 周前更新

关于 Nelson MCP — LibreOffice

Nelson MCP 是一个 LibreOffice 扩展,可将打开的 Writer 与 Calc 文档变为 MCP 服务,供外部 AI 客户端通过 HTTP 读取和编辑文档。默认仅监听本机,并支持访问令牌与可配置的工具端点。

主要功能

  1. 01145 个文档工具,按文档类型过滤
  2. 02支持 Writer、Calc、Draw 与 Impress
  3. 03可自定义 MCP 端点,仅暴露所需工具
  4. 04内置 Claude Code、Gemini CLI 与 OpenCode 启动器
  5. 05默认仅本机访问,可设置访问令牌
  6. 06可选 AI 图像生成与隧道功能

适用场景

  1. 01让 AI 客户端直接编辑当前打开的 Writer 报告
  2. 02在 Calc 表格中读取与修改单元格、公式与图表
  3. 03为小型模型提供仅含少量工具的受限端点

MCP 相关

Nelson MCP 在 LibreOffice 内运行 HTTP 形式的 MCP 服务(默认 http://localhost:8766/mcp),向 MCP 客户端暴露文档读取、编辑与格式设置等工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Nelson MCP

CI

一款 LibreOffice 扩展,可将文档变成 MCP 服务。外部 AI 客户端通过 HTTP 连接,并可完整使用文档工具——读取、编辑、导航、格式设置等。

适用于所有兼容 MCP 的客户端:Claude Code、OpenCode、Goose、ollmcp 等。

工作原理

Nelson MCP 在 LibreOffice 内部运行 HTTP 服务,并使用 Model Context Protocol。AI Agent 连接到它,并使用工具与打开的文档交互——无需复制粘贴,也无需导出文件。

┌─────────────────┐     HTTP/MCP     ┌────────────────┐
│  AI Client      │ ───────────────► │  LibreOffice   │
│  (Claude Code,  │    tools/call    │  + Nelson MCP  │
│  OpenCode…)     │ ◄─────────────── │                │
└─────────────────┘   tool results   └────────────────┘

效果展示

Agent 在空白的 Writer 文档中逐次调用工具,写出一份季度报告:

Agent 通过 Nelson 在 LibreOffice Writer 中编写 Q3 报告,包括文本、标题颜色、表格底纹、页脚和一条批注,Nelson MCP 侧边栏逐项列出每次调用

完成后的报告:内容为 Markdown,使用 style_set 设置标题颜色,带底纹的表格、Page {page} of {pages} 页脚,以及招聘相关行上的一条批注。Nelson MCP 侧边栏会记录每次调用。选择一条调用即可查看调用方、状态、耗时和参数。

Agent 编写的 Writer 报告,Nelson MCP 侧边栏逐项列出每次工具调用

所有设置都位于 工具 > 选项 > Nelson。例如,HTTP 页面可设置端口、绑定地址和访问令牌:

选项 > Nelson > Http:服务端口、绑定地址、访问令牌、允许的浏览器来源

功能

  • 145 个文档工具——读取内容、编辑文本、管理样式、插入图像、处理表格、图表、条件格式、超链接、修订、页眉/页脚、导航标题、搜索等。工具列表会根据当前文档类型筛选,因此客户端只会看到适用的工具(Writer 文档有 97 个,Calc 有 50 个)
  • 可自行配置的 Agent——启用配置 API 后,Agent 可自行读取和更改 Nelson 的设置(读取限制、交换格式、其所做更改的名称),而保护你的设置仍由“选项”保留。参见让 Agent 配置 Nelson
  • 自定义 MCP 端点——仅公开 Agent 所需的工具。可使用内置预设(minimal、writer-edit、writer-read、calc、gallery),也可创建自己的筛选端点
  • Writer、Calc、Draw、Impress——工具会适配当前文档类型
  • Calc =PROMPT()——直接在电子表格单元格中调用大模型
  • 内置启动器——只需单击一下,即可直接从 LibreOffice 启动 Claude Code、Gemini CLI 或 OpenCode。Nelson 会自动处理 MCP 配置、提示词注入和工作目录设置
  • AI 图像生成——使用 Stable Diffusion(A1111/Forge)、OpenAI 或 AI Horde,根据文本提示生成和编辑图像。可一键检测/安装/启动 Automatic1111
  • 适合初学者的设置流程——所有工具都附带安装按钮、现有安装的自动检测和引导式配置。无需手动编辑配置文件
  • 隧道——通过 ngrok、Cloudflare、bore 或 Tailscale 在外部公开 MCP 服务,并使用访问令牌保护
  • SSL——可选 HTTPS,并自动生成证书
  • 模块化——每项功能都是独立模块,拥有自己的配置、服务和工具

安装

  1. 从发布页面下载最新的 .oxt
  2. 在 LibreOffice 中:工具 > 扩展管理器 > 添加
  3. 重启 LibreOffice
  4. MCP 服务会自动启动(默认地址:http://localhost:8766/mcp)

快速开始

安装后,将 MCP 客户端指向服务:

{
  "mcpServers": {
    "nelson": {
      "type": "http",
      "url": "http://localhost:8766/mcp"
    }
  }
}

在 LibreOffice 中打开文档,然后让 AI 客户端读取或编辑它。

**面向 AI Agent:**参阅 QUICKSTART.md——这是一份分步指南,介绍 LLM Agent 如何发现文档、浏览文档结构并有效使用工具。

让 Agent 配置 Nelson

Agent 不必停下来请你打开“选项”。启用配置 API后,它就能通过同一个 HTTP 服务自行读取和更改 Nelson 的设置,且更改会立即生效。例如,它可以:

  • 在处理长文档前提高读取上限;
  • 切换到 HTML,以改写格式复杂的文档;
  • 用自己的名字标记它跟踪的修订。

在工具 > 选项 > Nelson > Http > 启用配置 API中启用,然后:

# Read one setting, a module, or everything
curl 'http://localhost:8766/api/config?key=writer.max_content_chars'
curl 'http://localhost:8766/api/config?module=writer'

# Change several at once
curl -X POST http://localhost:8766/api/config \
     -H 'Content-Type: application/json' \
     -d '{"writer.max_content_chars": 200000, "writer.change_author": "AI agent"}'

设置访问令牌后,添加 -H 'Authorization: Bearer <token>'。

该 API 可调整 Nelson 的行为,但无法更改保护你的设置。以下设置仅限在选项中更改,触及这些设置的请求会被拒绝,并返回 403,且不会进行任何更改:

  • http.*:令牌、地址、允许的源、SSL,以及配置 API 开关本身;
  • tunnel.* 和 debug.*;
  • launcher.*:Nelson 运行的命令;
  • *.instances:工具可以访问的文件夹,以及 AI 提供商的端点和密钥;
  • core.force_track_changes。

令牌和 API 密钥等机密信息在读取时会显示为 ***。

安全

任何能够与 Nelson 通信的人,都可以读取和编辑 LibreOffice 中打开的所有文档,也可以打开账户有权读取的任何文件。以下措施可以防止他人访问:

情况保护措施
默认:仅限本机服务绑定到 localhost。本机上的 MCP 客户端无需额外配置。
浏览器中的网页请求会被拒绝。你访问的网页无法调用 localhost:8766:除非你在允许的浏览器源中列出该源,否则浏览器源会被拒绝。
已设置访问令牌每个请求都必须携带令牌——使用 Authorization: Bearer <token>,或者对于无法设置请求头的客户端,使用 ?token=<token>。内置启动器会自动传递令牌。
可通过网络或隧道访问Nelson 拒绝绑定到 localhost 以外的地址,也拒绝启动隧道,直到设置令牌为止。

在选项 > Nelson MCP > HTTP > 访问令牌中设置令牌;更改无需重启即可生效。配置 API 无法更改该令牌或任何其他保护设置(见上文),但仍可读取和更改其余设置:在可从其他位置访问的计算机上,请关闭配置 API 和调试 API。

通过隧道公开 Nelson 之前,请阅读 docs/howto/connect-chatgpt-tailscale.md 顶部的警告。

模块

约 30 个模块;主要模块如下:

模块说明
core文档访问、配置、事件、格式设置
doc所有文档类型通用的工具——打开、保存、关闭、导出、打印、撤销/重做、超链接
writer内容编辑、批注、样式、表格、图像、页眉/页脚、修订跟踪
writer.nav标题树、书签、邻近导航
writer.index使用 Snowball 词干提取的全文搜索
calc单元格、工作表、公式、图表、条件格式、批注
draw形状、页面、幻灯片、占位符、母版幻灯片、切换效果(Draw 和 Impress)
images / documents图像和文档库提供程序(浏览并重复使用现有资源)
ai_imagesAI 图像生成与编辑(Stable Diffusion、OpenAI、AI Horde)
aiAI 文本提供程序,通过 Calc 的 =PROMPT() 函数调用
launcher从 LibreOffice 启动 Claude Code、Gemini CLI 或 OpenCode
panel侧边栏面板——MCP 操作日志、正在运行的作业
batch通过变量串联执行多个工具
http共享 HTTP 服务,可选 SSL
mcpMCP JSON-RPC 协议处理程序
tunnel隧道管理器(ngrok、Cloudflare、bore、Tailscale)

关闭不使用的功能

Nelson 提供了许多工具,但客户端不会看到全部工具,而且大多数筛选都会自动完成。以下按筛选力度从高到低排列:

调节方式作用位置
文档类型工具列表会随当前文档而变化:Writer 约有 97 个工具,Calc 约有 50 个,总计 145 个。此过程自动完成,发生变化时会通知客户端无需配置
未配置的功能会自动隐藏Gallery 和 AI 图像工具会完全隐藏,直到你配置图库或图像提供商。启动器和隧道不会公开任何工具无需配置
自定义端点在专属 URL 上仅公开你选择的工具,例如在 /mcp/minimal 上公开 8 个工具。这是让小型模型严格遵循指令的最可靠方式Options > Nelson MCP > MCP
预设现成的端点工具列表:minimal、writer-edit、writer-read、calc、galleryOptions > Nelson MCP > MCP
功能开关直接关闭 MCP 服务、HTTP 配置 API 或调试 API各模块的 Options
提供商选择选择要使用的隧道、启动器或 AI 提供商各模块的 Options
启动时扫描停止在启动时重新扫描图像和文档文件夹索引Gallery 模块的 Options

因此,Calc 用户无需进行任何设置,工具数量就已降至 48 个;自定义端点则可以进一步缩减到你想要的数量。

Nelson 有意不提供阻止模块加载的开关。这会成为第七个重复的控制项,实际作用却很有限:31 个模块的完整启动耗时约为 370 ms,而且可选功能系列已经不会显示在工具列表中。测量数据请参阅 #29。

开发

./install.sh              # Set up dev environment
make deploy               # Build + install + restart LO + show log
make test                 # Run tests
make release              # Tag, build and publish a release (see scripts/release.sh)

完整的开发者指南请参阅 DEVEL.md,模块框架参考请参阅 docs/modules.md。

使用 AI Agent 进行开发

本项目使用 AI 编码 Agent 开发,并借助 wbox-mcp 让这一过程切实可行。

Nelson 运行在 LibreOffice 内部,因此 Agent 必须实际运行 LibreOffice,才能验证修改;而无头进程无法显示徽标是否确实出现在页面页眉中。wbox-mcp 是一个 MCP 服务,它会在嵌套的 Wayland 合成器中为 Agent 提供一个沙盒化的 LibreOffice:Agent 可以终止、部署并重新启动扩展,操作 UI,读取 Nelson 日志,还可以对结果进行截图。

这样就形成了完整的验证闭环。Agent 编辑代码、重新部署、通过 MCP 调用工具,并查看渲染后的文档来确认修改生效,而不是仅仅假定它已生效。

文档

致谢

Nelson MCP 是通过合并并改造另外两个项目而来:

  • LocalWriter — 一个 LibreOffice 扩展,内嵌了一个可使用 AI 提供商(兼容 OpenAI 的 API、Ollama、AI Horde)的聊天机器人侧边栏。它最初由 Umut Çelik 创建,名为 LibreCalc AI Assistant,之后由 @balisujohn 分叉并扩展,再由 @KeithCu(Keith Curtis)大幅完善;他添加了 AI Horde 支持、多提供商管理、聊天机器人侧边栏,以及 Calc =PROMPT() 集成。模块框架、工具系统和模块级配置架构由 @quazardous 开发。

  • mcp-libre — 一个独立的 LibreOffice MCP 服务,通过 MCP 向外部 AI 客户端提供 Writer 工具。它表明,MCP 方案(外部 AI + 文档工具)比内嵌聊天机器人更灵活。Nelson MCP 采用以 MCP 为先的架构:移除了聊天机器人和 AI 提供商模块,扩展完全专注于为外部客户端提供工具服务。

许可证

MPL 2.0 — 参见 extension/registration/license.txt。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。