The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Claude Remind MCP listing page.
A Model Context Protocol (MCP) server that searches your local Claude Code conversation history. It indexes every past session under ~/.claude/projects/ with BM25, redacts secrets, and lets the running Claude agent recall and resume solutions you've already worked out — without re-explaining the problem from scratch.
If you've ever caught yourself solving the same Docker, deployment, or auth bug twice in a month, this is for you. The package is local-only (no network calls), pure-JS (no native modules), and ships as a single npx-installable binary.

Status: experimental (
v0.1.x). Tool surface is stable; internals may change.
From shell:
From any manually configurable mcp.json (Cursor, Windsurf, etc.):
No model downloads, no daemons, no database. The first query builds an index from ~/.claude/projects/ (a few seconds for a typical history) and persists it to ~/.claude-remind/. Subsequent queries reuse the index and only re-parse files whose mtime changed.
If npx resolves the wrong package, force resolution:
A few patterns where searching past Claude Code conversation history pays off:
ExpiredTokenException on the staging deploy last month — what was the fix?" One remind_search returns the exact session, the resolved snippet, and the resume command.~/.claude/projects/, so solutions from project A surface when you're working in project B.remind_search first and see if you already solved it. The default response is ~1.5 KB.claude --resume <id> command, plus the original cwd and gitBranch, so jumping back into a half-finished thread is one paste away.Four tools, designed to compose: search → read → resume.
remind_searchBM25 search over past messages. Returns ranked hits with a snippet, a solvedHint, a messageUuid, and a ready-to-paste claude --resume command.
Query tips: prefer concrete terms — exact error strings, tool/library names, file paths. Generic words like auth or docker on their own dilute relevance.
remind_messageFetch the full text of one message plus optional surrounding turns. Use after remind_search returns a messageUuid you want to read in full.
The matched message is flagged with isFocus: true inside the returned window.
remind_sessionStructured summary of a session: title, message count, tool names used, files touched, error count, time span, solved hint, last user message.
remind_resumeResolves a session id (full or 8-char prefix) to a ready-to-run claude --resume <id> command, plus the session's cwd and git branch. remind_search already returns this on every hit, so prefer that; this tool exists for the case where you only have an id.
~/.claude/projects/ line-by-line, with a 1 MB per-line cap and a 50 000 message-per-file cap to keep the indexer bounded.permission-mode, file-history-snapshot, attachment, system-reminder, etc.) so only real user and assistant turns are indexed.~/.claude-remind/.mtime changed are re-parsed.hasError, endedCleanly, last user message, and a conservative solvedHint (likely only on explicit positive sentiment or a clean end with no errors; unlikely only on explicit negative sentiment; unknown otherwise).The on-disk index is a single JSON file. It is safe to delete; the next query rebuilds it.
| Environment variable | Default | Purpose |
|---|---|---|
CLAUDE_CONFIG_DIR | ~/.claude | Where Claude Code stores its logs. |
CLAUDE_REMIND_DIR | ~/.claude-remind | Where the index is persisted. |
Both must be absolute paths if set; otherwise the default is used.
The index file at ~/.claude-remind/index.json is written with mode 0600 and contains the indexed text from your conversations. A built-in regex pass redacts well-known secret formats (OpenAI / Anthropic / GitHub / AWS / Stripe / Google / Slack keys, JWTs, private key blocks, common KEY=value env assignments) before content enters the index. This is best-effort; if you've pasted a custom credential format into a past conversation it may not be caught. Delete ~/.claude-remind/ to wipe the index.
The server runs entirely locally over stdio. It makes no network calls.
Scripts:
To point a Claude Code instance at a local checkout:
Smoke-test the MCP handshake from the shell:
Pre-commit runs lint-staged (ESLint + Prettier on staged files) via Husky.
~/.claude/projects/The package has two runtime dependencies: @modelcontextprotocol/sdk and minisearch. No native modules.