
Private Journal MCP
https://github.com/obra/private-journal-mcp- Category
- AI Agents
- Rank
- No. 1001Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- obra
- GitHub
- 442 stars
- Latest release
- v2.0.1
- Date
About
Lightweight MCP server that gives Claude a private journal for processing thoughts and feelings between turns.
What it does
Private Journal MCP gives an agent persistent, structured notes with semantic retrieval. It separates project-specific material from global reflections, observations, collaborator context, engineering lessons, and general knowledge. Entries become timestamped Markdown with metadata, while locally generated embeddings support natural-language search, section filtering, recent-entry browsing, and full-entry reading.
Why it's ranked here
This is a focused memory system with unusually practical retrieval. Plain Markdown keeps the source material inspectable, while semantic search makes accumulated notes useful beyond exact keyword matches. Project and global storage scopes fit real engineering work. The main reservation is maturity at the edges: older design documents describe a much smaller tool, and runtime diagnostics expose more environment detail than this privacy-sensitive category warrants.
What's good
Writes remain useful without the server because entries use readable Markdown and YAML metadata. Project notes stay near their codebase, while broader knowledge follows the user across projects. Search runs with local embeddings and supports scope, section, date, and result-count controls. Full-entry reads reject non-Markdown targets, enforce journal roots, resolve symbolic links, and validate the resolved location again before reading.
Tradeoffs
Semantic retrieval adds a transformer dependency, model-loading latency, and separate embedding files beside every entry. Model initialization has a thirty-second timeout, and failed embedding generation leaves the journal entry written but not searchable. Startup diagnostics print home, profile, temporary-directory, user, and journal-location environment values to standard error. Storage relies on normal filesystem permissions, not application-level encryption or access control. Some design documents still describe the earlier write-only interface.
How to use it well
Use it for an agent that repeatedly works with the same person or codebases and should recall decisions, failed approaches, preferences, and technical lessons. Search before complex work, then record concise observations and outcomes afterward. Keep sensitive material within a trusted local account. It does not replace encrypted secrets storage, backups, synchronization, collaborative documentation, or a general project database.
Technical notes+
src/index.ts parses --journal-path, emits extensive diagnostics to stderr, and starts the stdio server. src/server.ts registers five MCP tools, although the README documents four, and its embedded server metadata disagrees with package.json. src/journal.ts splits project_notes from user-global sections, writes YAML-frontmatter Markdown, and attempts embedding generation without rolling back successful writes. src/embeddings.ts uses Xenova/all-MiniLM-L6-v2, mean pooling, normalized vectors, JSON .embedding sidecars, and cosine similarity. src/search.ts scans date-named directories, filters stored embeddings, and protects entry reads with extension, root, realpath, and post-symlink containment checks. src/paths.ts supports PRIVATE_JOURNAL_PATH, current-directory and home-directory resolution, then temporary-directory fallbacks. docs/spec.md and docs/implementation-plan.md describe the earlier write-only design, while docs/superpowers/plans/2026-04-11-journal-reflections-observations.md tracks the newer section model. Jest coverage is visible in tests/journal.test.ts, tests/paths.test.ts, and tests/setup.ts, but no server-level test file was provided.
Observed
- License
- MIT
- Primary language
- TypeScript targeting Node.js
- Packaging and install
- npm package with a command-line binary; documented direct execution from GitHub through npx
- Interface
- stdio-based MCP server with journal writing, semantic search, recent-entry listing, and entry reading tools
- Storage
- Timestamped Markdown entries with YAML frontmatter and JSON embedding sidecars in project-local or user-global directories
- Tests
- Repository contains Jest tests for journal writing and path resolution, with the transformer dependency mocked
Read from README.md, package.json, src/index.ts, src/server.ts, src/paths.ts, src/types.ts, src/search.ts, src/journal.ts, src/embeddings.ts, docs/spec.md, docs/implementation-plan.md, docs/superpowers/plans/2026-04-11-journal-reflections-observations.md, tests/setup.ts, tests/paths.test.ts, tests/journal.test.ts.
What it can do
Store thoughts and reflections
Text containing thoughts, feelings, or observations → Saved journal entry
Retrieve previous journal entries
Request for specific entries or time periods → Previously saved journal content
Process emotional context between conversations
Emotional state or feeling descriptions → Persistent emotional context for future interactions
Maintain conversation continuity
Information about ongoing topics or concerns → Contextual awareness across multiple chat sessions
Track thought patterns over time
Series of journal entries → Analysis of recurring themes or emotional patterns
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.