trilium-bolt
Lightning-fast MCP server for Trilium Notes — returns LLM-friendly markdown instead of raw HTML, so AI can read and write your notes naturally. Search, create, update, and organize your notes with AI.
README
trilium-bolt
Lightning-fast MCP server for Trilium Notes — returns LLM-friendly markdown instead of raw HTML, so AI can read and write your notes naturally. Search, create, update, and organize your notes with AI. Connect Claude to your personal knowledge base with minimal setup.
Quick Start
1. Get your Trilium token
In Trilium: Options → ETAPI → Create new ETAPI token
2. Configure Claude Code to use the MCP server
Add to your ~/.claude.json:
{
"mcpServers": {
"trilium": {
"command": "npx",
"args": ["-y", "trilium-bolt"],
"env": {
"TRILIUM_TOKEN": "your-token-here"
}
}
}
}
Not using Claude Code? See setup instructions for Cursor, Windsurf, VS Code, Cline, and other MCP clients
Running Trilium in Docker? See the Docker Setup Guide
3. Use it
You: Search my notes for "project ideas"
You: Create a new note called "Meeting Notes" under my Work folder
You: What's in my daily journal from last week?
That's it!
Why Lightweight?
Unlike traditional servers, trilium-bolt uses stdio transport - meaning:
- On-demand execution - Only runs when Claude needs it, not a 24/7 daemon
- Zero network ports - No HTTP server, no port conflicts, no firewall rules
- Minimal memory - ~20-30MB when active, 0MB when idle
- No background processes - Spawned by Claude, terminates when done
- Instant startup - No container spin-up, just a Node.js process
How it works
┌──────────────┐ stdin/stdout ┌─────────────┐ ETAPI ┌─────────────┐
│ MCP Client │ ◄──────────────────► │ trilium-bolt │ ◄────────────► │ Trilium │
│ (Claude Code,│ └─────────────┘ └─────────────┘
│ Cursor, etc)│ Runs on-demand Your notes
└──────────────┘ No daemon Local app
This is the simplest possible architecture - just a CLI that your MCP client invokes when you ask about your notes.
Markdown support
Trilium stores notes as HTML internally, but LLMs work much better with markdown. trilium-bolt handles the conversion transparently:
- Reading notes — HTML content is automatically converted to markdown before returning to the AI
- Creating/updating notes — Content is accepted as markdown by default and converted to HTML before saving to Trilium
- HTML pass-through — Set
contentFormat: "html"on create/update calls if you need to send raw HTML
No configuration needed — markdown is the default for both input and output.
Tools
| Tool | Description |
|---|---|
search_notes |
Full-text and attribute search |
get_note |
Retrieve note content (as markdown) and metadata |
get_note_tree |
Get children/hierarchy of a note |
create_note |
Create a new note — accepts markdown (default) or HTML |
update_note |
Update note title, content (markdown or HTML), or attributes |
delete_note |
Delete a note |
delete_attribute |
Delete an attribute (label or relation) from a note by name |
create_backup |
Create a backup of the Trilium database |
create_revision |
Create a revision snapshot of a note's current content |
Configuration
| Variable | Required | Default | Description |
|---|---|---|---|
TRILIUM_TOKEN |
Yes | - | Your ETAPI token |
TRILIUM_URL |
No | http://localhost:37840 |
Trilium server URL |
Examples
Search notes:
Search my Trilium notes for anything about "machine learning"
Find all my notes tagged with "recipe"
Show me notes that are tagged both "recipe" and "vegetarian"
Find all notes where the priority label is set to "high" and status is "active"
Find all notes whose titles start with "Meeting"
Create a note:
Create a note titled "Book Notes: Atomic Habits" with a summary of the key points
Create a note called "Pasta Carbonara" tagged with "recipe" and "italian"
Create/update notes with attributes:
Create a note "Sprint Planning" with labels priority=high and status=active
Add a "completed" tag to my "Q4 Report" note
Update the priority label on my "Bug Fix" note to "low"
Delete attributes:
Remove the "deprecated" tag from my "Old API" note
Delete the priority label from my "Task List" note
Backups and revisions:
Create a backup of my Trilium database called "before-cleanup"
Save a revision of my "Project Plan" note before I make changes
Explore hierarchy:
Show me the structure of my "Projects" folder
Building from source
git clone https://github.com/mursilsayed/trilium-bolt.git
cd trilium-bolt
npm install
npm run build
To use your local build instead of the published package, point your MCP client to the built output:
{
"mcpServers": {
"trilium": {
"command": "node",
"args": ["/absolute/path/to/trilium-bolt/dist/index.js"],
"env": {
"TRILIUM_TOKEN": "your-token-here"
}
}
}
}
For development, use npm run dev to rebuild on file changes.
Publishing to npm
npm run build
npm publish
To publish a pre-release or dry-run first:
npm publish --dry-run
Requirements
- Node.js 18+
- Trilium Notes running with ETAPI enabled
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。