private-journal-mcp
Enables automatic syncing of journal entries to a Git remote, with commit, pull --rebase, and push on write, as well as a session-start sync hook.
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., "@private-journal-mcpwrite a reflection on today's team meeting"
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.
private-journal-mcp
An MCP server that stores journal entries in local files and searches them semantically with multilingual embeddings. Search and embedding inference run locally; the embedding model is downloaded and cached once on first use. Optionally, entries can be auto-synced to a Git remote.
Tools
write_journalTakes one or more of the six sections (
reflections,observations,project_notes,user_context,technical_insights,world_knowledge) and stores an entry.
search_journalPerforms semantic search with
query.Optional args:
limit,sections
read_journalReads a full individual Markdown entry by
path.
list_journalLists recent entries.
Optional args:
limit,days
Related MCP server: mesh-memory
Storage Locations
Journal data
Priority order:
PRIVATE_JOURNAL_PATH$XDG_DATA_HOME/private-journal~/.local/share/private-journal
Model cache
Priority order:
$XDG_CACHE_HOME/private-journal/models~/.cache/private-journal/models
The default embedding model is Xenova/multilingual-e5-small.
Install / Build
npm install
npm run buildRun locally:
node dist/index.jsThe sync subcommand exits as a no-op when no Git remote is configured.
node dist/index.js syncInstall as a Plugin (recommended)
This repo is a plugin for both Claude Code (.claude-plugin/plugin.json) and Codex
(.codex-plugin/plugin.json). Installing it registers the MCP server and the
SessionStart sync hook in one step — no manual settings.json/config.toml edits,
no absolute paths. The bundled hooks/hooks.json and .mcp.json resolve the plugin's
own install path via ${CLAUDE_PLUGIN_ROOT} (Claude Code) / ${PLUGIN_ROOT} (Codex).
Build first so dist/ exists, then install:
npm install && npm run buildClaude Code:
/plugin install /absolute/path/to/private-journal-mcpCodex:
codex plugin install /absolute/path/to/private-journal-mcpManual MCP registration (without the plugin)
claude mcp add private-journal -- node /absolute/path/to/private-journal-mcp/dist/index.jsGit Sync (optional)
Git sync is enabled only when PRIVATE_JOURNAL_GIT_REMOTE is set.
export PRIVATE_JOURNAL_GIT_REMOTE="git@github.com:youruser/my-journal.git"Recommended prerequisites:
You must already be authenticated for that remote via
gh auth loginor equivalent Git credentials.
Behavior:
Right after a
write_journalsave, it attemptscommit + pull --rebase + pushon a best-effort basis.node dist/index.js synchandlespulland pushing any pending commits before a session starts.
SessionStart sync hook
When installed as a plugin, the SessionStart sync hook is registered automatically
(see hooks/hooks.json) — nothing to configure. It exits as a no-op unless
PRIVATE_JOURNAL_GIT_REMOTE is set.
To wire it up manually instead, add to ~/.claude/settings.json:
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "node /absolute/path/to/private-journal-mcp/dist/index.js sync"
}
]
}
]
}
}Conflict Handling
Distinct entries mostly coexist automatically because filenames include a microsecond suffix.
When two entries share a filename, the one with the larger frontmatter
timestampwins.If the
timestampis identical, the local version takes precedence.The
.embeddingfile may be regenerated based on the adopted Markdown.
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/baleen37/private-journal-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server