everlog-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EVERLOG_DIR | No | Everlog data directory. Default: `~/Library/Group Containers/group.hummingbird`. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Read-only access to the user's private Everlog journal (macOS journaling app).
Entry ids come from search_entries / on_this_day; pass them to get_entry for the full text.
Dates are Everlog's own local days (America/Denver), formatted YYYY-MM-DD.
search_entries uses SQLite FTS5 syntax: bare words are ANDed, "exact phrase", prefix*, OR, NOT, and stemming is on (run matches running). Omit
queryto browse by filter/date only.get_entry shows attachments as placeholders like [image a1b2c3d4]; use get_attachment_image with the attachment_id from the entry's attachments list to view a photo (or pass include_images=true).
Journal content is personal; quote only what is needed to answer the question.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_journalsA | List all journals with entry_count, first_date, last_date (YYYY-MM-DD) and a hidden flag.
Trashed entries are excluded. Use the names with the |
| list_tagsA | List all tags (hierarchical tags appear as 'Parent/Child') with entry_count, most used first. A tag filter on a parent also matches its descendants. |
| search_entriesA | Search and browse journal entries. Returns total match count and a page of results, each with entry_id, date, journal, title, tags, word_count and a snippet (matches wrapped in «»). query: full-text (SQLite FTS5): words are ANDed; "exact phrase"; prefix*; OR; NOT; stemmed. Invalid syntax falls back to matching all words. Omit to filter without text search. journal: journal name (case-insensitive). tag: tag path; also matches child tags. start_date / end_date: inclusive YYYY-MM-DD bounds on the entry's local day. sort: relevance (default with query) | newest (default without) | oldest. limit: 1-100 (default 20); offset for paging. Fetch full text with get_entry. |
| get_entryA | Get one entry in full: markdown text (attachments shown as placeholders such as [image a1b2c3d4], [audio a1b2c3d4 2:31]) plus date, modified time, journal, tags, location/coordinates/timezone, weather, bookmarked/pinned, word_count, the Everlog AI summary (if any) and an attachments list (attachment_id, type, size/duration, transcription). With include_images=true, up to max_images photos are returned as images after the entry. |
| get_attachment_imageA | Return an image attachment as JPEG, shrunk so its longest side is at most max_size pixels (default 1568). attachment_id is the id from get_entry's attachments list (the 8-char prefix in placeholders also works if unambiguous). Errors if the attachment is not an image or its bytes are missing. |
| on_this_dayB | Entries written on the same month/day in earlier years, newest first, with years_ago. date: YYYY-MM-DD reference day (default: today in America/Denver); only years before it are included. Same result shape as search_entries. |
| journal_statsA | Writing statistics: entries and total words per year (or month, 'YYYY-MM'), plus totals. Optionally restricted to one journal and/or an inclusive YYYY-MM-DD date range. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 7 tools
Each tool targets a distinct resource or operation: journal/tag listing, entry search, full-entry fetch, attachment retrieval, date-based recall, and aggregates. The only near-neighbors (search_entries vs on_this_day) are clearly separated by the 'same month/day in prior years' semantics.
Five of seven names follow a clean verb_noun pattern (list_journals, list_tags, search_entries, get_entry, get_attachment_image). on_this_day and journal_stats break the pattern but are readable and unambiguous, so this is a minor deviation rather than a problem.
Seven tools is well-scoped for a journaling server: metadata lists, search, fetch, attachment access, a recall view, and stats. No tool appears redundant or filler.
The surface is purely read-only and covers browsing, retrieval, and stats well, but there is no way to create, update, delete, or tag entries. Agents can read the journal completely but cannot write to it, which is a notable lifecycle gap.