npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@beledarian/mcp-local-memory

v2.0.1

Published

Local memory server for AI agents using SQLite and MCP

Readme

Local Memory MCP Server

A local-first MCP server that gives AI agents shared, durable memory through hybrid semantic search, SQLite FTS5, and a knowledge graph—without Docker or a required cloud service.

Local Memory MCP demo

Why use it?

  • Shared across agents: one SQLite database can serve Codex, Claude, desktop clients, IDE integrations, and custom MCP clients.
  • Hybrid recall: when sqlite-vec is available, local all-MiniLM-L6-v2 embeddings and FTS5 keyword evidence are merged. FTS remains available as the explicit fallback.
  • Temporal recall: search natural-language periods such as last week or in 2025, or pass an explicit ISO startDate and endDate.
  • Adaptive ranking: relevance, time-decayed importance, tags, and bounded recent familiarity work together without rewriting importance on every recall.
  • Auditable lifecycle: memories can be reinforced, marked outdated or incorrect, restored, exported, or forgotten.
  • Structured context: entities, relations, observations, conversations, tasks, and todos live beside free-form memories.
  • Local by default: memory data stays in your configured SQLite file. Optional LLM features send input only to the OLLAMA_URL you configure.

For every option and tool, see the extended guide.

Requirements

  • Node.js 22 or newer on a supported LTS release.
  • Python and C++ build tools when better-sqlite3 has no matching prebuild.
  • Windows users can install Desktop development with C++ through Visual Studio Build Tools.

Windows ARM64 semantic search is supported by a bundled, checksum-verified sqlite-vec v0.1.9 DLL. WSL2 remains a supported alternative.

Quick start

Add the published package to an MCP client:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@beledarian/mcp-local-memory@2"],
      "env": {
        "ARCHIVIST_STRATEGY": "nlp"
      }
    }
  }
}

The default database is ~/.memory/memory.db. The first semantic recall may download the local embedding model.

Global installation provides both memory and mcp-local-memory:

npm install -g @beledarian/mcp-local-memory@2
memory --help

From source:

git clone https://github.com/Beledarian/mcp-local-memory.git
cd mcp-local-memory
npm install
npm run build
npm start

See the Codex + WSL2 setup when the database or server runs inside Linux.

Essential configuration

| Variable | Default | Purpose | | :--- | :--- | :--- | | MEMORY_DB_PATH | ~/.memory/memory.db | SQLite database location. | | ARCHIVIST_STRATEGY | nlp | passive, nlp, llm, or a comma-separated combination. | | OLLAMA_URL | http://localhost:11434/api/generate | Optional LLM generation endpoint. | | MEMORY_SEMANTIC_WEIGHT | 0.9 | Retrieval relevance versus decayed importance. | | MEMORY_MIN_RELEVANCE | 0.55 | Minimum relevance required before a candidate can be returned. | | MEMORY_RECALL_FAMILIARITY_MAX_BOOST | 0.03 | Maximum temporary familiarity contribution; 0 disables future recording and scoring but does not purge existing rows. | | MEMORY_RECALL_FAMILIARITY_WINDOW_DAYS | 30 | Recent exposure window. | | USE_WORKER | false | Run archivist processing in a worker while retaining durable acknowledgement. | | EXTENSIONS_PATH | unset | Directory containing opt-in JavaScript extensions. |

All scoring, context, archivist, task, and extension variables are documented in the configuration reference.

How recall works

recall supports both topical and temporal questions:

  • Semantic vector and FTS5 keyword candidates are retrieved independently and merged, so an exact term is not hidden by a semantic result.
  • Natural-language dates such as yesterday, last week, and in 2025 are recognized in the query. ISO startDate and endDate filters are also available.
  • Weak matches are omitted, near-duplicates are collapsed, and outdated or incorrect memories stay hidden unless explicitly requested.
  • Relevant results are ranked using retrieval evidence, query coverage, tags, time-decayed importance, and a small recent-familiarity signal.
  • Each returned active memory can record one familiarity exposure per normalized-query hash and UTC day. The contribution is temporary and bounded to 0.03 by default; it does not rewrite importance or refresh decay.

reinforce_memory provides the stronger, durable feedback path:

  • used or important record positive evidence.
  • irrelevant lowers importance.
  • incorrect or outdated suppresses the memory without deleting history.
  • restore returns a suppressed memory to active recall.

The extended scoring guide documents the formula, thresholds, deduplication, privacy limits, decay, and every familiarity control.

Entities, relations, and the graph

Free-form memories and structured knowledge complement each other:

  • Entities represent people, projects, places, topics, or other named concepts. Each has a type, importance, and appendable observations.
  • Relations are directional triples such as Project A --[uses]--> SQLite. Creating a relation also creates any missing endpoint as an Unknown entity.
  • Automatic extraction can identify entities and relations while saving a fact. Use ARCHIVIST_STRATEGY=nlp for local extraction, llm for the configured Ollama endpoint, or passive for manual graph maintenance.
  • Graph exploration can return an overview or a centered one- or two-hop neighborhood with entity observations, relations, and related memories.
  • Graph maintenance supports renaming or deleting entities, removing exact observations, and deleting individual relations. Entity renames update connected relations.
  • Clustering groups semantically related memories and entities into topic overviews when embeddings are available.

Use recall for ranked free-form retrieval and read_graph when connections between named concepts matter. They are complementary views of the same local knowledge base.

MCP surface

| Area | Tools and resources | | :--- | :--- | | Memory | remember_fact, remember_facts, recall, reinforce_memory, list_recent_memories, forget, export_memories | | Graph | create_entity, update_entity, delete_entity, create_relation, delete_relation, delete_observation, read_graph, cluster_memories | | Conversations | init_conversation, add_task, update_task_status, list_tasks, delete_task | | Todos | add_todo, complete_todo, list_todos | | Optional extraction | consolidate_context when ENABLE_CONSOLIDATE_TOOL=true | | Resources | memory://current-context, memory://turn-context, task and todo resources |

See the complete tool reference for arguments and lifecycle behavior.

Upgrading safely

When upgrading from 1.x:

  • move to Node.js 22;
  • back up MEMORY_DB_PATH;
  • expect automatic additive schema migration;
  • note that MEMORY_SEMANTIC_WEIGHT now means relevance versus importance;
  • recall no longer raises importance or refreshes decay;
  • run importance normalization only if you want to reset historical passive popularity.

The project does not claim crash-proof, zero-loss migration under every interruption scenario, so a verified backup remains the safety boundary.

Older releases passively increased importance and access_count during recall. Preview normalization before changing anything:

npm run normalize:importance -- --db ~/.memory/memory.db

Applying normalization is optional and requires an explicit, non-existing backup path. See the migration and normalization guide.

Documentation

Development

These commands require a source checkout:

npm install
npm run build
npm test

npm test covers scoring, schema migration, lifecycle and familiarity, privacy/provenance, MCP contracts, packaging, and native vector or FTS fallback.

License

MIT