Trilium MCP Server for Gemini CLI
This project provides a Model Context Protocol (MCP) server, a specialized Gemini Skill, and an autonomous Agent for managing Trilium Notes directly from your terminal using the Gemini CLI.
Features
- Full ETAPI Integration: Create, search, move, and edit notes using natural language.
- Autonomous Agent: A dedicated
trilium-assistantagent for complex organizational tasks. - Specialized Skill: Expert guidance on Trilium's note tree structure and attributes.
- Secure: Uses a
.envfile to protect your API tokens.
๐ ๏ธ Setup & Installation
1. Prerequisites
- Python 3.10+
- Node.js (for Gemini CLI)
- Trilium Notes (with ETAPI enabled)
2. Clone the Repository
git clone https://github.com/dhiraj-ydv/trilium-mcp.git
cd trilium-mcp
3. Install Dependencies
pip install -r requirements.txt
4. Configure Environment Variables
Copy the example environment file and fill in your Trilium details:
cp .env.example .env
Open .env and provide:
TRILIUM_SERVER_URL: Your Trilium instance URL (e.g.,http://localhost:8080).TRILIUM_ETAPI_TOKEN: Your ETAPI token (generated in Trilium Settings > Options > ETAPI).
๐ Usage with Gemini CLI
Initialization
Simply run gemini inside the project directory. The CLI will automatically discover the MCP server, Agent, and Skill defined in the .gemini/ folder.
Commands
Using the Autonomous Agent
The agent can handle multi-step tasks like finding a note and moving it:
@trilium-assistant move my 'Drafts' note into the 'Projects' folder.
Using Direct MCP Tools
Perform surgical actions directly:
mcp_trilium-mcp_create_note title="Meeting Notes" parentNoteId="root" content="Hello World"
Activating the Skill
Get expert advice on how to structure your notes:
activate_skill trilium-notes
๐ Project Structure
server.py: The MCP server implementation..gemini/settings.json: Configuration for the Gemini CLI to load the server..gemini/agents/trilium-assistant.md: The autonomous agent definition..gemini/skills/trilium-notes/: Specialized knowledge for Trilium workflows.
๐ก๏ธ Security
This project uses a .gitignore to ensure your .env file is never pushed to GitHub. Never share your .env file or ETAPI token.
๐ License
MIT