Server data from the Official MCP Registry
Lightweight MCP for infinite agent memory. Any agent, any session, anytime.
Lightweight MCP for infinite agent memory. Any agent, any session, anytime.
Lore is a well-architected MCP server for local agent memory indexing with strong security fundamentals. Authentication is not applicable (local-only, single-user tool). Code quality is high with proper input validation, secure credential handling (optional redaction), and no evidence of malicious patterns. Permissions align with purpose: file I/O for transcript indexing, SQLite database access, and stdio for MCP communication. Minor issues around error handling breadth and optional secret redaction do not pose meaningful security risks. Supply chain analysis found 4 known vulnerabilities in dependencies (1 critical, 3 high severity). Package verification found 1 issue.
6 files analyzed Β· 8 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-jordanhindo-lore": {
"args": [
"-y",
"@jordanhindo/lore"
],
"command": "npx"
}
}
}From the project's GitHub README.
Any agent. Any session. Anytime.
Your agents forget everything the moment a session compacts or ends. You spend an hour getting one deep into a gnarly problem, the window fills up, and suddenly it's a stranger again. Sure, compaction helps, untill you're 10 compats into a session.
Lore fixes that. It quietly indexes every session your agents have ever had and hands it back, fully searchable, right where they work. An agent can pull up a decision from last Tuesday as easily as the line it just wrote. Local, private, and yours forever.
https://github.com/user-attachments/assets/b5c0f077-47da-4502-bf78-2ce08abf034f
getUserById, foo.bar.ts, and trust-metadata
stay findable as whole words, not shredded into noise.~/.lore/lore.db on your
machine. Nothing phones home. Ever.Lore sets itself up. Drop the blurb below into any coding agent. It clones the repo, installs Lore, indexes your own history, registers itself into its own MCP config, figures out the reload step for your client, and proves search works before it calls itself done.
Clone https://github.com/jordanhindo/lore into a directory of your choosing
and cd into it, then set up Lore (full-fidelity session memory over MCP)
for yourself. Read AGENT-ONBOARD.md in the repo you just cloned and follow
it top to bottom: install + build, run `lore setup` to index my history
and self-verify, register the Lore MCP server in your own client config,
reload so the tools load, then prove it by calling search_memory for a word
from a past session. Tell me any manual step (like restarting) that I have
to do.
The deterministic recipe the agent follows lives in
AGENT-ONBOARD.md. Prefer to drive it yourself? The one
command that does the indexing half is lore setup (below).
The fact that Lore can onboard itself, on a machine it's never seen, is the demo. If an agent can stand it up from a paste, it works.
npm install -g @jordanhindo/lore # puts the `lore` command on your PATH
Requires Node 22+. That's the whole install. lore setup (below) takes it from
here. If npm install chokes on better-sqlite3, or lore isn't found
afterward, the Troubleshooting
section has you covered (Windows included).
Cloning is for contributors, or for writing a new adapter (which needs the source tree):
git clone https://github.com/jordanhindo/lore && cd lore
npm install
npm run build
npm link # optional: puts `lore` on your PATH
lore setup is the fast path. It sniffs out the harnesses on your machine,
indexes each one, checks that search works, and prints how to wire Lore into
your MCP client.
lore setup
Want finer control? Point lore index at a transcript directory. For Claude
Code that's ~/.claude/projects:
lore index ~/.claude/projects # primary transcripts
lore index ~/.claude/projects --subagents # include subagent transcripts
lore index ~/.claude/projects --redact # opt-in secret redaction (see Privacy)
Other harnesses come in with --source. Codex is built in:
lore index ~/.codex/sessions --source codex
Re-run any of these whenever. Unchanged files get skipped, so repeat runs are cheap.
lore serve starts the MCP server over stdio. Point any MCP client at it.
Claude Code (add to ~/.claude/settings.json):
{
"mcpServers": {
"lore": { "command": "lore", "args": ["serve"] }
}
}
Cursor / Cline and friends: add an stdio server entry with the same
command / args shape in the client's MCP config.
| Tool | What it does |
|---|---|
search_memory | Keyword search across every transcript, ranked by bm25, with filters. |
find_relevant | Like search_memory, but blends relevance with recency. |
get_message | Fetch one message by id (full=true returns the un-elided text). |
get_context | The neighbor window around an anchor message. |
get_session | One logical session as a folded, paginated timeline. |
list_sessions | Session rollups (counts, first / last activity), filterable. |
timeline | Bucketed activity over time, by day or hour. |
Every search tool takes the same dimension filters: project, branch,
source, agent, skill, tool, role, model, since, until, limit.
Your agent calls search_memory with a query (plus any filters) and gets back a
count and a ranked list of hits. Each hit carries the matched text and full
provenance, so the agent knows where the memory came from and can pull the rest
with get_message:
// search_memory({ query: "fts tokenizer", source: "claude-code", limit: 2 })
{
"count": 2,
"hits": [
{
"messageId": "9f3cβ¦a71b", // synthetic, stable across re-index
"sessionId": "0c1d2e3f-β¦",
"sourceFileId": "claude-code:β¦",
"role": "assistant",
"timestamp": "2026-06-05T18:22:41.103Z",
"project": "/Users/you/lore",
"branch": "main",
"model": "claude-opus-4",
"agent": null,
"score": 11.27, // higher is a better match (bm25)
"text": "Switched the FTS5 tokenizer to unicode61 with tokenchars '_-.' so getUserById and foo.bar.ts stay wholeβ¦",
"textTruncated": false
}
// β¦one more hit
]
}
Long messages come back elided with a marker telling the agent how to fetch the
full text via get_message(message_id, full=true) β so one giant transcript can
never blow the context window.
Compaction is the moment memory matters most, so catch the session right before
the window gets wiped. Wire lore hook into your harness's lifecycle hooks. It
reads the hook payload on stdin, indexes just that one file, and always exits 0
(it will never crash your harness).
For Claude Code, add to ~/.claude/settings.json:
{
"hooks": {
"PreCompact": [{ "hooks": [{ "type": "command", "command": "lore hook" }] }],
"SessionEnd": [{ "hooks": [{ "type": "command", "command": "lore hook" }] }]
}
}
Don't see your agent on the list? lore sample <transcript-dir> summarizes its
on-disk format, and the bundled lore-setup skill (skills/lore-setup/)
walks an agent from "installed" to "my sessions are searchable," including writing
and proving a new adapter, or using the live push path when a harness keeps no
files at all.
~/.lore/lore.db), lives outside any repo, and *.db
is gitignored. Move it with LORE_DB.--redact to lore index / lore hook and a
conservative credential scrubber runs over message text and tool payloads first
(OpenAI / GitHub / AWS / Slack keys, Bearer tokens, PEM private-key blocks).
Think of it as a safety net, not a guarantee.source
namespace (claude-code, codex, ...). Any MCP client can read everyone's
history.source_file_id is a physical transcript file (the unit of
ingestion and the resume watermark). A session_id is a logical session shared
across a primary file and its subagent files. Each message gets a synthetic
message_id = hash(source_file_id + uuid + seq) because raw uuids collide.| Var | Default | Meaning |
|---|---|---|
LORE_DB | ~/.lore/lore.db | Store location. |
LORE_LOG_LEVEL | info | debug / info / warn / error. |
npm run check # typecheck + lint + format + test
npm run test:watch
License: MIT.
Be the first to review this server!
by Modelcontextprotocol Β· Developer Tools
Read, search, and manipulate Git repositories programmatically
by Modelcontextprotocol Β· Developer Tools
Web content fetching and conversion for efficient LLM usage
by Toleno Β· Developer Tools
Toleno Network MCP Server β Manage your Toleno mining account with Claude AI using natural language.