private-journal-mcp
Stores journal entries locally with semantic search using multilingual embeddings, and optionally syncs to a Git remote.
README
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_journal- Takes one or more of the six sections (
reflections,observations,project_notes,user_context,technical_insights,world_knowledge) and stores an entry.
- Takes one or more of the six sections (
search_journal- Performs semantic search with
query. - Optional args:
limit,sections
- Performs semantic search with
read_journal- Reads a full individual Markdown entry by
path.
- Reads a full individual Markdown entry by
list_journal- Lists recent entries.
- Optional args:
limit,days
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 build
Run locally:
node dist/index.js
The sync subcommand exits as a no-op when no Git remote is configured.
node dist/index.js sync
Install 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 build
Claude Code:
/plugin install /absolute/path/to/private-journal-mcp
Codex:
codex plugin install /absolute/path/to/private-journal-mcp
Manual MCP registration (without the plugin)
claude mcp add private-journal -- node /absolute/path/to/private-journal-mcp/dist/index.js
Git 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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.