Trilium MCP Server

Single static Go binary. No runtime dependencies. Talks to your local Trilium over HTTP(S) and to the client over stdio.

Remote serverstreamable-httpGo

What is the Trilium MCP MCP server?

Connect Trilium MCP to Claude, Cursor or any other MCP client and it stops being a tab you switch to. Single static Go binary. No runtime dependencies. Talks to your local Trilium over HTTP(S) and to the client over stdio. The trilium mcp mcp server is what makes that connection.

What the server does

  • Capture stuff into your notes (reading lists, decisions, research dumps)
  • Maintain structured "tables" by creating notes-as-rows under a parent and tagging them with labels-as-columns
  • Search your existing KB and feed snippets back into a conversation

Installation

Because this one is hosted, setup is mostly authentication — you point your client at the endpoint and approve access. Nothing runs on your machine, so there is no runtime to keep patched.

Available tools

The toolset is worth reading before you wire it up, because it tells you what the integration is really for:

  • create_note — Create a note (optionally under a parent, with labels in one shot)
  • batch_create_notes — Create many notes in one call — saves per-call schema overhead during restructuring
  • get_note — Fetch note metadata; optionally include body content
  • get_note_subtree — Recursively fetch a note + descendants up to N levels as a nested tree — replaces N+1 get_note calls
  • update_note — Partial update: include only the fields you want to change; omitted fields stay as-is
  • append_content — Append text to the body with a configurable separator
  • delete_note — Delete a note and its subtree
  • batch_delete_notes — Delete many notes; partial failures don't stop the rest
  • move_note — Re-parent a note in two ETAPI calls (vs the old read-recreate-delete dance)
  • clone_note — Add the note under an additional parent — Trilium-native multi-parent links
  • delete_branch — Remove one parent-child link without deleting the note (un-clone)
  • search_notes — Full-power Trilium search (#label, ~relation, note.title %= "regex", ancestor scoping, etc.)

Credentials and setup notes

Configuration is passed through the environment: TRILIUM_URL, TRILIUM_TOKEN. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.

Worth knowing first

  • Your data travels to the provider's service, so the usual questions apply about what you send and what they retain.
  • With 14 tools registered it takes up a noticeable share of the context window; turn it off in projects that never touch Trilium MCP.
  • Missing credentials fail quietly in some clients — if no tools show up, check the environment block first.
  • Keep per-call confirmation enabled while you learn its behaviour; it is the cheapest safeguard you have.

Where it fits

Among the planning and project tracking options, the useful question is rarely "what can it do" but "what does it cost you to run" — permissions, credentials, and how much of your context its toolset consumes. Trilium MCP's toolset — create_note, batch_create_notes, get_note and 11 more — is a fair guide to whether it matches your workflow. It is maintained by ovden13; worth a glance at recent repository activity before you build anything load-bearing on it.

SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.

Available tools

ToolWhat it does
create_noteCreate a note (optionally under a parent, with labels in one shot).
batch_create_notesCreate many notes in one call — saves per-call schema overhead during restructuring.
get_noteFetch note metadata; optionally include body content.
get_note_subtreeRecursively fetch a note + descendants up to N levels as a nested tree — replaces N+1 get_note calls.
update_notePartial update: include only the fields you want to change; omitted fields stay as-is.
append_contentAppend text to the body with a configurable separator.
delete_noteDelete a note and its subtree.
batch_delete_notesDelete many notes; partial failures don't stop the rest.
move_noteRe-parent a note in two ETAPI calls (vs the old read-recreate-delete dance).
clone_noteAdd the note under an additional parent — Trilium-native multi-parent links.
delete_branchRemove one parent-child link without deleting the note (un-clone).
search_notesFull-power Trilium search (#label, ~relation, note.title %= "regex", ancestor scoping, etc.).
add_labelAttach a label (#key=value) — acts as a "column" in collection views.
add_relationAttach a relation (~name → noteId) — like a foreign key between notes.

Configuration

VariableDescriptionRequired
TRILIUM_URLEndpoint or connection string the server talks to.Yes
TRILIUM_TOKENCredential the server authenticates with.Yes

Example prompts to try

  • Use Trilium MCP to create note.
  • Use Trilium MCP to batch create notes.
  • Use Trilium MCP to get note.

Frequently asked questions

It connects Trilium MCP to MCP-compatible AI assistants such as Claude and Cursor, exposing 14 tools (create_note, batch_create_notes, get_note, and more) that the assistant can call on your behalf. Instead of copying data back and forth by hand, the assistant works with Trilium MCP directly.