Skip to main content
Glama

MCP TriliumNext

by RadonX
README.md7.73 kB
# MCP TriliumNext A Model Context Protocol (MCP) server for [TriliumNext](https://github.com/TriliumNext/Trilium), providing AI assistants with seamless access to your note-taking workflow. ## Overview This MCP server enables AI assistants like Claude to interact with your TriliumNext notes through a standardized protocol. It provides tools for creating, searching, reading, and updating notes, as well as accessing recent notes as a resource. ## Features ### 🛠️ Tools - **create_note** - Create new notes with title, content, and type - **search_notes** - Search notes using fulltext or structured queries - **get_note** - Retrieve complete note details and content - **update_note** - Update existing note content ### 📚 Resources - **trilium://recent-notes** - Access to 10 most recently modified notes ### ✨ Key Capabilities - Full CRUD operations for notes - Advanced search with TriliumNext query syntax - Structured data preservation for AI consumption - Comprehensive error handling and validation - Production-ready logging and monitoring ## Installation ### Prerequisites - Node.js 18.0.0 or higher - TriliumNext server running and accessible - ETAPI token from your TriliumNext instance ### Setup 1. **Clone and install** ```bash git clone git@github.com:RadonX/mcp-trilium.git cd mcp-trilium npm install ``` 2. **Configure environment** Create a `.env` file with your settings: ```env TRILIUM_URL=http://localhost:8080 TRILIUM_AUTH_TOKEN=your_etapi_token_here REQUEST_TIMEOUT=30000 LOG_LEVEL=info ``` 3. **Get your ETAPI token** - Open TriliumNext web interface - Go to Options → ETAPI - Create a new token or use existing one - Copy the token to your `.env` file 4. **Test connectivity** ```bash npm run test-connectivity ``` ## Usage ### With Claude Code Add the MCP server directly using Claude Code: ```bash claude mcp add trilium-mcp node /path/to/mcp-trilium/src/index.js --env TRILIUM_URL=http://localhost:8080 --env TRILIUM_AUTH_TOKEN=your_etapi_token_here --env REQUEST_TIMEOUT=30000 --env LOG_LEVEL=info ``` ### With Claude Desktop Add to your Claude Desktop configuration (`~/.claude/claude_desktop_config.json`): ```json { "mcpServers": { "trilium": { "command": "node", "args": ["/path/to/mcp-trilium/src/index.js"], "env": { "TRILIUM_URL": "http://localhost:8080", "TRILIUM_AUTH_TOKEN": "your_token_here" } } } } ``` ### With MCP Inspector ```bash npx @modelcontextprotocol/inspector src/index.js ``` ### Standalone Usage ```bash npm start ``` ## Examples ### Creating a Note ```javascript // Ask Claude: "Create a note about TypeScript basics" { "tool": "create_note", "arguments": { "title": "TypeScript Basics", "content": "# TypeScript Fundamentals\n\nTypeScript is a typed superset of JavaScript...", "type": "text", "parentNoteId": "root" } } ``` ### Searching Notes ```javascript // Ask Claude: "Find all notes about JavaScript" { "tool": "search_notes", "arguments": { "query": "javascript #programming", "limit": 10 } } ``` ### Updating Content ```javascript // Ask Claude: "Update my JavaScript notes with new ES6 features" { "tool": "update_note", "arguments": { "noteId": "note123abc", "content": "Updated content with ES6 features..." } } ``` ## Search Query Syntax TriliumNext supports powerful search queries: - **Fulltext**: `machine learning algorithms` - **Exact match**: `"neural networks"` - **Labels**: `#programming #javascript` - **Combined**: `"react hooks" #programming type:code` - **Date filters**: `dateCreated:>2024-01-01` ## Development ### Running Tests ```bash # Run all tests npm test # Watch mode npm run test:watch # Coverage report npm run test:coverage ``` ### Project Structure ``` src/ ├── index.js # Main MCP server ├── tools/ # MCP tool implementations │ ├── create-note.js │ ├── search-notes.js │ ├── get-note.js │ └── update-note.js ├── resources/ # MCP resource implementations │ └── recent-notes.js └── utils/ # Shared utilities ├── trilium-client.js ├── validation.js └── logger.js ``` ### API Reference #### TriliumNext ETAPI This server uses TriliumNext's External API (ETAPI). Key endpoints: - `GET /notes` - Search notes - `POST /create-note` - Create note - `GET /notes/{id}` - Get note details - `PUT /notes/{id}/content` - Update note content See [docs/trilium-etapi-specification.md](docs/trilium-etapi-specification.md) for complete API documentation. ## Configuration ### Environment Variables - `TRILIUM_URL` - TriliumNext server URL (default: `http://localhost:8080`) - `TRILIUM_AUTH_TOKEN` - ETAPI authentication token (required) - `REQUEST_TIMEOUT` - API request timeout in ms (default: `30000`) - `LOG_LEVEL` - Logging level: `error`, `warn`, `info`, `debug` (default: `info`) ### Note Types Supported note types: - `text` - Rich text notes (default) - `code` - Code snippets with syntax highlighting - `file` - File attachments - `image` - Image notes - `search` - Saved searches - `book` - Book/chapter organization - `relationMap` - Visual relation maps - `canvas` - Freeform canvas notes ## Troubleshooting ### Common Issues **Authentication Failed** ```bash # Check your token curl -H "Authorization: Bearer your_token" http://localhost:8080/etapi/app-info ``` **Connection Refused** - Verify TriliumNext is running - Check `TRILIUM_URL` in `.env` - Ensure ETAPI is enabled in TriliumNext settings **Content Stored as [Object]** - Fixed in v0.1.0 - content now properly sent as text/plain - Update to latest version if experiencing this issue ### Debug Mode ```bash LOG_LEVEL=debug npm start ``` ## Contributing 1. Fork the repository 2. Create a feature branch: `git checkout -b feature-name` 3. Make your changes with tests 4. Run the test suite: `npm test` 5. Submit a pull request ## License MIT License - see [LICENSE](LICENSE) file for details. ## Related Projects - [TriliumNext](https://github.com/TriliumNext/Trilium) - The note-taking application - [Model Context Protocol](https://github.com/modelcontextprotocol/servers) - MCP specification - [Claude Desktop](https://claude.ai/desktop) - AI assistant with MCP support ## Future Enhancements The following features may be added in future versions: ### 🚀 Planned Features - **Enhanced note types support** - Full support for all TriliumNext note types (relationMap, canvas, etc.) - **Advanced search features** - Attribute-based queries, date range filters, and complex search operators - **Performance optimizations** - Caching, batch operations, and streaming for large note collections - **Note relationship management** - Tools for managing note relationships and hierarchies - **Bulk operations** - Create, update, or delete multiple notes in a single operation - **Attachment handling** - Support for file uploads and downloads - **Real-time updates** - WebSocket integration for live note synchronization ### 💡 Potential Integrations - **Export capabilities** - Export notes to various formats (Markdown, PDF, etc.) - **Template system** - Predefined note templates for common use cases - **Backup and restore** - Automated backup functionality through MCP - **Analytics and insights** - Note usage statistics and content analysis ## Changelog ### v0.1.0 - Initial release with full CRUD operations - MCP resource for recent notes - Comprehensive test coverage (94 tests) - Production-ready error handling and validation --- Made with ❤️ for the TriliumNext and MCP communities

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RadonX/mcp-trilium'

If you have feedback or need assistance with the MCP directory API, please join our Discord server