private-journal-mcp

private-journal-mcp

Stores journal entries locally with semantic search using multilingual embeddings, and optionally syncs to a Git remote.

Category
Visit Server

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.
  • search_journal
    • Performs semantic search with query.
    • Optional args: limit, sections
  • read_journal
    • Reads a full individual Markdown entry by path.
  • list_journal
    • Lists recent entries.
    • Optional args: limit, days

Storage Locations

Journal data

Priority order:

  1. PRIVATE_JOURNAL_PATH
  2. $XDG_DATA_HOME/private-journal
  3. ~/.local/share/private-journal

Model cache

Priority order:

  1. $XDG_CACHE_HOME/private-journal/models
  2. ~/.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 login or equivalent Git credentials.

Behavior:

  • Right after a write_journal save, it attempts commit + pull --rebase + push on a best-effort basis.
  • node dist/index.js sync handles pull and 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 timestamp wins.
  • If the timestamp is identical, the local version takes precedence.
  • The .embedding file may be regenerated based on the adopted Markdown.

Recommended Servers

playwright-mcp

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured