Trilium 的接入:ETAPI 与 MCP

Hermes Agent 的应用 · 第 2 篇

0x00 序

想让 agent 操作知识库(Trilium),就得给它一条通道。一开始我用的 ETAPI——上一篇讲邮件接入时,建笔记、删分支、改属性,全是手写 ETAPI 脚本干的。后来 Trilium 更新(0.103.0+)内置了 MCP server,接进来之后 23 个 note 工具直接可用,操作知识库变得跟聊天一样自然。这篇记录两条通道:ETAPI 怎么用、MCP 怎么接、按什么选。

0x01 先有 ETAPI,后有 MCP

顺序是这样的:ETAPI 是 Trilium 从 v0.50 就有的完整 REST API,我在邮件接入那会儿就一直在用——所有知识库操作都是现写 Python 脚本调它。直到后来升级 Trilium,发现 0.103.0+ 内置了 MCP server(Model Context Protocol,AI 工具的标准协议),才把这条新通道接进来。

所以两条通道不是同时出现的:ETAPI 是老通道、一直在用;MCP 是新通道、升级后发现就接上了。现在 Hermes 操作 Trilium 优先走 MCP 工具,批量脚本仍用 ETAPI。

0x02 ETAPI:脚本化的完整 API

ETAPI 是 Trilium 的完整 REST API,35+ 个端点覆盖全部操作:笔记/分支/属性/附件的增删改查、搜索、导出导入、历史版本、日历/inbox、metrics。鉴权用 token(Authorization: Bearer <token>),token 在 Trilium 设置页生成。

ETAPI 适合脚本化和批量操作:固定流程、定时任务、跨机器访问。我的博客发布脚本、Hermes 系列的结构重组,都是走 ETAPI 完成的。

0x03 MCP:交互式的 note 工具

Trilium 内置的 MCP server 挂在主服务上:http://127.0.0.1:8080/mcp(与 ETAPI 同端口,路径 /mcp),无认证、仅本机可访问。接进来之后暴露 23 个工具:search_notes、get_note、get_note_content、set_note_content、create_note、delete_note、rename_note、move_note、clone_note、属性读写、附件读写、子节点/子树查询等——笔记 CRUD 全覆盖。

MCP 适合交互式操作:agent 在对话中直接调工具,不用现写脚本。判断连对了没:握手时 serverInfo 返回 trilium-notes 才是真的 Trilium(记忆引擎系列接入时踩过端口认错的坑,别连到别的服务上)。

0x04 怎么选

两条通道不冲突,按场景选:

  • ETAPI:脚本、批量、定时、跨机器——token 认证、端点全、适合自动化流程
  • MCP:agent 对话中即时操作——工具化、会话内直接调、不用写代码

现在 Hermes 操作 Trilium 优先走 MCP 工具,批量脚本仍用 ETAPI。两个都是官方通道,按需用。

0xFF 跋

知识库的读写通道都打通了:ETAPI 管批量,MCP 管交互。实际评估过现有的自动化脚本,结论是一致的:

  • 配置同步(skills/SOUL 监听)——ETAPI:常驻轮询、无状态、大量小请求,MCP 的 session 会话反成负担
  • 双向记忆同步(fact_store ↔ 知识图谱)——ETAPI:全量扫描比对几百个实体/事实,MCP 只有单笔记工具,没有批量接口
  • 博客发布 / RSS 生成——ETAPI:批处理、定时任务
  • agent 对话中操作(写笔记、改属性、查知识)——MCP:交互式、单点操作、会话感

所以规律很简单:机器对机器用 ETAPI,agent 对人用 MCP。MCP 不是 ETAPI 的替代,是互补——它把 agent 操作知识库从写脚本变成对话。以后写笔记、发博客、整理知识图谱,agent 直接动手;定时任务和批量同步,脚本继续跑。这条路接好之后,邮件进来的事处理完,结果可以直接落进知识库。

“您的支持是我持续分享的动力”

微信收款码
微信
支付宝收款码
支付宝

目录