everlog-memory-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@everlog-memory-mcpfind entries about writing goals from January"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
everlog-memory-mcp
Unofficial local-first MCP server and private dashboard for structured reflection over Everlog exports.
everlog-memory-mcp is not another diary app. Everlog remains the place where
writing happens. This project treats exported diary files as a local evidence
layer, lets agents query that evidence through MCP, and stores structured
agent-written artifacts as a private, versioned self-model.
Status: early prototype / personal MVP. The core loop works, but the product, automation, encryption, and UI still need iteration.
Why
LLM diary reflection often becomes either a raw summary or generic advice. This project explores a different loop:
Everlog export
-> local metadata index
-> MCP evidence tools
-> agent updates structured self-model artifacts
-> private growth-map UIThe goal is to preserve change over time: threads, high-signal moments, tensions, belief shifts, decisions, questions, and writing or research seeds.
Related MCP server: engram
Features
Reads Everlog JSON exports, extracted
Entries.jsonfolders, zip exports, Markdown, and plain text diary exports.Builds a local SQLite metadata index.
Defaults to
store_plaintext_index: false, so diary bodies are not persisted into the metadata database.Exposes an MCP stdio server with bounded evidence tools.
Saves structured agent artifacts into a local private artifact store.
Provides a local web dashboard for Growth Map, Threads, High-Signal Moments, Open Loops, Seeds, Library, and Source Vault.
Non-Goals
It does not read Everlog's private app database.
It does not bypass Everlog passcode, Touch ID, iCloud, or app sandboxing.
It does not sync your diary to a hosted service.
It does not call an LLM from the browser UI.
It is not a security boundary against cloud model providers. If an agent sends diary excerpts to a cloud model, that provider can receive them.
Privacy Model
The default mode is conservative:
config.jsonis ignored by Git because it can contain private paths.data/is ignored by Git because it contains local indexes and artifacts.The metadata index stores ids, dates, paths, hashes, sizes, and mtimes.
Diary bodies are read from export files on demand unless plaintext indexing is explicitly enabled.
MCP tools return bounded excerpts and require the client or agent to call tools intentionally.
For stronger local privacy, keep Everlog exports and this project's data/
directory inside FileVault, an encrypted APFS volume, or an encrypted disk image.
Installation
The project currently uses only the Python standard library.
git clone git@github.com:visionary-5/everlog-memory-mcp.git
cd everlog-memory-mcp
python3 -m everlog_memory_mcp --helpCreate a local config file:
python3 -m everlog_memory_mcp init-config --path config.jsonconfig.json is intentionally ignored by Git.
Everlog JSON Export Workflow
Everlog manual exports may produce a zip file or an extracted folder with a name like:
Everlog Export YYYY-MM-DD_HH-MM-SSInside the export, this project looks for Everlog JSON data such as
Entries.json. It can read either:
an extracted export folder containing
Entries.json, ora zip file containing Everlog JSON.
Recommended setup:
Create a stable local inbox outside the Git repository:
~/Documents/Everlog ExportsPut each new Everlog export zip or extracted export folder inside that inbox.
Point this project at the inbox, not at one timestamped export folder:
python3 -m everlog_memory_mcp configure-source \ "$HOME/Documents/Everlog Exports" \ --config config.json \ --source-mode everlog \ --no-store-plaintext-index \ --scan
Entry ids are based on Everlog entry identifiers, so repeated exports should update the same entries instead of duplicating them.
For a one-off test, you can also point at a single extracted export folder:
python3 -m everlog_memory_mcp configure-source \
"$HOME/Documents/Everlog Exports/Everlog Export YYYY-MM-DD_HH-MM-SS" \
--config config.json \
--source-mode everlog \
--no-store-plaintext-index \
--scanUpdating the Index
Manual scan:
python3 -m everlog_memory_mcp scan --config config.jsonForeground watcher:
python3 -m everlog_memory_mcp watch --config config.json --interval 30macOS LaunchAgent:
python3 -m everlog_memory_mcp install-launch-agent --config config.json --interval 30
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/io.github.visionary5.everlog-memory.watch.plistStop the LaunchAgent:
launchctl bootout gui/$(id -u) ~/Library/LaunchAgents/io.github.visionary5.everlog-memory.watch.plistLocal Web Dashboard
Run:
python3 -m everlog_memory_mcp demo --config config.json --host 127.0.0.1 --port 8765Open:
http://127.0.0.1:8765The dashboard does not call an LLM. It renders the local index and saved artifacts.
MCP Setup
Run the MCP server over stdio:
python3 -m everlog_memory_mcp mcp --config config.jsonGenerate client config snippets:
python3 -m everlog_memory_mcp mcp-config --client codex --config config.json
python3 -m everlog_memory_mcp mcp-config --client claude-desktop --config config.json
python3 -m everlog_memory_mcp mcp-config --client generic-json --config config.jsonGeneric MCP config shape:
{
"mcpServers": {
"everlog-memory": {
"command": "python3",
"args": [
"-m",
"everlog_memory_mcp",
"mcp",
"--config",
"/absolute/path/to/everlog-memory-mcp/config.json"
],
"cwd": "/absolute/path/to/everlog-memory-mcp"
}
}
}MCP Tools
Evidence tools:
privacy_statusscan_exportssearch_entriesget_entrysummarize_period_contexttrace_themecompare_periods
Artifact tools:
save_artifactlist_artifactsread_artifactsave_reflectionlist_reflectionsread_reflection
Agents should cite dates and entry ids, keep direct quotations short, separate evidence from interpretation, and update existing self-model objects instead of creating duplicate summaries.
Agent Artifact Workflow
The intended agent loop is:
Read the latest saved artifact with
list_artifactsandread_artifact.Run
scan_exports.Read only new or evidence-critical entries in full.
Update the existing self-model instead of appending another standalone summary.
Save one complete new artifact with
save_artifact.
The model should contain:
threads: long-running lines of thought, work, life, research, or identity.moments: concrete high-signal details that should not be flattened into a macro summary.tensions: recurring conflicts, tradeoffs, and unresolved contradictions.beliefs: judgments whose confidence or framing changed over time.seeds: diary-grounded writing, product, research, or project ideas.decisions: active path choices with options and current bias.questions: open loops for future journals.
Each object carries basis metadata such as diary_evidence,
prior_artifact, conversation_context, agent_hypothesis, or mixed, so the
UI can distinguish diary-grounded observations from hypotheses or project
planning.
See Artifact Schema and Agent Demo Prompts.
Current Product Shape
Growth Map: current diary-grounded self-model overview.High-Signal Moments: concrete details the agent should not compress away.Threads: second-level view for long-running changes.Open Loops: decisions and questions to keep tracking.Seeds: diary-grounded ideas that may become writing, research, or projects.Library: versioned saved artifacts.Source Vault: raw diary entries for evidence checks only.
Roadmap
Near-term:
Better update protocol across multiple artifacts.
Stable object ids and artifact diffing.
Duplicate detection for recurring threads and seeds.
More reliable automatic export-folder watching for repeated Everlog exports.
Encrypted artifact storage.
Local or hybrid retrieval so agents do not reread old entries unnecessarily.
More polished private web UI and object-level history pages.
See Iteration Plan for the current split between design, engineering, and product-innovation work.
Documentation
License
MIT.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/visionary-5/everlog-memory-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server