Private Journal MCP Server

MCP server for a private Claude journal: logs reflections, observations and project notes locally and searches them by meaning, with no outbound calls

  • 457 ★ on the repository
  • Last commit
  • MIT
MCP server

Extended access

Why this level

  • Writes personal reflections and technical notes to the home directory and project repository without encryption
  • On first run downloads and runs an embeddings model that processes every entry's text on the machine
All reasons and checks

obra/private-journal-mcp

Install

In your terminal, with SkillFoxx CLI

npx skillfoxx add mcp/private-journal-mcp-server

Detects the agents on your machine, shows the access level and pins the version.

Other ways to install

Access and checks

How we review

Extended accessThe tool runs code or makes network calls and only reads external data.

  • Writes personal reflections and technical notes to the home directory and project repository without encryption
  • On first run downloads and runs an embeddings model that processes every entry's text on the machine

This is third-party code. Review the repository files before installing.

What it does

Private Journal MCP Server gives Claude a process_thoughts tool with six optional sections: reflections, observations, project_notes, user_context, technical_insights, world_knowledge. Project notes land in a .private-journal folder inside the repository, personal thoughts and user observations go to ~/.private-journal in the home directory. Each entry gets a microsecond timestamp and a YAML header. Search runs through search_journal: a natural-language query is turned into a vector by the @xenova/transformers model and compared against the embedding files of every entry. All of this runs on the machine, with no outbound API calls. list_recent_entries shows recent entries for a chosen number of days, and read_journal_entry opens one file by the path a search result returned. The server starts through npx with no install: the MCP configuration points the command at npx with the argument github:obra/private-journal-mcp. The PRIVATE_JOURNAL_PATH variable moves both the project and the personal journal into one directory, useful for containers where the usual home-directory lookup does not apply.

Who it is for. For developers who want Claude Code to keep technical observations and project context between sessions and find them by meaning, not by exact word match.

Good fit when

  • Claude Code hits a project detail worth remembering next session, and process_thoughts with the project_notes section captures it
  • An old note needs to surface by meaning rather than an exact phrase: search_journal with a result limit and a section filter
  • Several projects share one machine, and each project's entries should stay next to its repository in .private-journal
  • A container environment has no normal home directory: PRIVATE_JOURNAL_PATH sets one path for both the project and personal journal
  • Checking what Claude logged recently through list_recent_entries filtered to project or user

Not a fit when

  • A team needs a shared knowledge base: the journal is local to one machine and does not sync between people
  • Entries must survive project restructuring predictably: search depends on embedding files regenerated on startup
  • You want notes in one file for manual editing: the format spreads them across dated folders with a separate embedding file per entry
  • You need sync with an external notes service: the server never sends data to any service

Example request

Write to the private journal why we chose this cache structure, and find my old notes about testing this module

MCP

Transport
stdio
Authentication
not required

Environment variables

PRIVATE_JOURNAL_PATH
Moves both the project and personal journal into one chosen directory instead of the separate default paths.

Limitations

Search runs only locally through the @xenova/transformers model, so the first launch spends time downloading the model and building an index over every existing entry. The journal is not encrypted: files sit in plain text in .private-journal and the home directory, readable by anyone with filesystem access. .private-journal ends up in the repository unless it is added to .gitignore, risking a commit of personal notes. The server offers no way to delete or edit a single entry: the only cleanup is removing files by hand.

How to disable. Remove the private-journal entry from the MCP client configuration. The .private-journal folder in the project and ~/.private-journal in the home directory can be deleted by hand if the entries are no longer needed: the server does not touch them once removed from the config.

FAQ

How do I install Private Journal MCP in Claude Code?

Run claude mcp add-json private-journal '{"type":"stdio","command":"npx","args":["github:obra/private-journal-mcp"]}' -s user. The server runs through npx with no separate install.

Where are journal entries stored?

Project notes live in a .private-journal folder inside the repository, and personal thoughts and user observations go to ~/.private-journal. PRIVATE_JOURNAL_PATH moves both journals into one chosen directory.

How does search work if I don't remember the exact phrase?

search_journal turns the query into a vector with the local @xenova/transformers model and compares it to entries' embedding files, so it finds entries close in meaning, not just matching words.

Does any journal data leave the machine?

No. All processing, including building search vectors, runs locally; the server makes no outbound API calls and does not sync files to any service.

How do I keep the project journal out of git?

Add .private-journal to the repository's .gitignore. The server does not exclude the folder from version control on its own.

Discussion

No questions or reviews yet.

Minutes

minutes

Official

A local-first MCP server for meeting memory: on-device recording and transcription into Markdown, searchable from Claude Code, Codex, Cursor and any MCP client

MCP serverExtended access1.6KRepository stars

A local MCP server for safe read, search and edit of notes in an Obsidian vault, restricted to the vault root

MCP serverExtended access1.7KRepository stars

Obsidian MCP Server

obsidian-mcp-server

An MCP server for an Obsidian vault: read, search and precisely edit notes, sections, frontmatter and tags

MCP serverExtended access699Repository stars

Obsidian MCP

obsidian-mcp

A local MCP server for Obsidian vaults: reads and edits explicitly configured folders of Markdown files, Obsidian need not be open

MCP serverBroad access742Repository stars

An MCP server for an Obsidian vault via the Local REST API plugin: search, read, append and patch notes

MCP serverExtended access4.5KRepository stars
Official

A Rust MCP server for a folder of Markdown notes: an agent searches and reads notes and sees backlinks, tags, tasks and version history

MCP serverExtended access1.3KRepository stars

Comparison with similar tools

Entries that share the main search query, and how they differ.

EntryOfficialAuthenticationRepository starsMain difference
Private Journal MCP Server (this entry)nonot required457
MegaMemorynonot required725an entity and decision graph for coding agents, not a personal journal with user-context sections
OpenContextno1,269a CLI project-context store for reuse across sessions, with no personal-observations section

README in short

The front page covers the four MCP tools and the entry format with its YAML header and category sections. The configuration section shows a one-liner for Claude Code and a manual JSON snippet for other clients, plus the PRIVATE_JOURNAL_PATH variable and the --journal-path CLI flag. The README ends with tips for prompting Claude to use the journal more often.

README badge

Report a problem

Foxx AIPrivate Journal MCP Server
Foxx AI

I am Foxx AI and I have already vetted this tool. Ask about install, setup or anything else, and I will keep it simple.