Local Memory MCP

Local Memory MCP

Persistent local semantic memory for MCP tools, enabling storing and searching notes by meaning using local embeddings and SQLite.

Category
Visit Server

README

Local Memory MCP

Persistent, local semantic memory for tools that speak the Model Context Protocol. A connected client can save notes, context, and preferences during one session and recall them later by meaning rather than exact wording. Everything is kept in a single SQLite file on your machine, and embeddings are computed locally on the CPU.

License: MIT Python 3.11+ Tauri

Overview

The server runs over stdio and exposes three tools: one to store text, one to search it semantically, and one to clear a namespace. Stored text is embedded with a small sentence-transformer model and indexed for vector search with sqlite-vec. After a one-time model download, no network connection is needed.

An optional desktop application is included for inspecting and managing what has been stored.

Features

  • Three tools over MCP: store_memory, search_memory, wipe_project_memories.
  • Local embeddings with all-MiniLM-L6-v2 (384 dimensions).
  • Vector search backed by sqlite-vec in a single SQLite database.
  • Per-project namespaces through a project_tag field.
  • An importance score for each memory that decays with age and rises each time the memory is recalled.
  • A blacklist that stops chosen terms, such as .env or password, from being stored or written to the log.
  • An optional desktop dashboard with an activity feed, a memory table, and privacy controls.

How it works

flowchart LR
    C["MCP client"] -- "stdio" --> S["server.py (FastMCP)"]
    S --> E["memory_engine.py"]
    E -- "embeddings" --> M["all-MiniLM-L6-v2 (local CPU)"]
    E -- "read / write (WAL)" --> DB[("memory.db: SQLite + sqlite-vec")]
    UI["Desktop dashboard"] -- "read / delete / blacklist" --> DB

The server and the dashboard share one SQLite file in WAL mode. The dashboard can read and manage memory while the server is writing to it, and neither side blocks the other.

Requirements

  • Python 3.11 or newer
  • uv
  • For the desktop app: Rust, Node.js, and a C/C++ toolchain. On Windows that means the Visual Studio C++ Build Tools. See the Tauri prerequisites for other platforms.

Running the server

git clone https://github.com/AQuietRiver/local-memory-mcp.git
cd local-memory-mcp
uv sync
uv run python server.py

The first run downloads the embedding model (about 90 MB) and caches it. Later runs do not touch the network.

Connecting a client

Add a server entry to your MCP client's configuration file, using an absolute path:

{
  "mcpServers": {
    "local-memory": {
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/local-memory-mcp", "python", "server.py"]
    }
  }
}

Restart the client and the three tools become available.

Tools

Tool Signature Purpose
store_memory (content, metadata="", project_tag="global") Embed and save a piece of text. Rejected if it matches a blacklisted term.
search_memory (query, project_tag="global", limit=5) Rank stored text by semantic similarity to the query.
wipe_project_memories (project_tag) Delete every memory in a namespace.

Each tool has a docstring that the client reads to decide when to call it.

Desktop dashboard

A companion application for watching and managing the memory bank. It sits in the system tray and opens to three panels.

Panel Function
Activity Feed A chronological log of tool calls, showing the tool, the project, the text passed, and the result.
Memory Vault A searchable table of stored memories with their tag, timestamp, and importance score, plus a per-row delete.
Privacy Center A control to erase all memory at once, and a manager for blacklisted terms.

Deleting from the dashboard removes the embedding from disk as well as the row, not just the metadata.

Building

cd tauri-ui
npm install
npm run dev      # development window with hot reload
npm run build    # standalone installer and executable

The Windows vector extension (vec0.dll) is included under tauri-ui/src-tauri so the app can load sqlite-vec and remove embeddings. For macOS or Linux, place the matching vec0.dylib or vec0.so from the sqlite-vec releases in the same directory and update the resources entry in tauri.conf.json.

Scoring and blacklist

The importance score is 100 * 0.5^(age_days / 30) plus a small capped bonus for each recall, clamped to the range 0 to 100. Recency is the main factor; recalling a memory slows its decay. The Python engine and the dashboard compute the score the same way.

The blacklist is checked before any text is embedded. Comparison is case-insensitive and substring-based. A match is rejected, nothing is stored, and the activity log keeps a redacted record instead of the original text.

Data location

All data lives in a single file at ~/.config/local_memory_mcp/memory.db. There is no separate index or cache to manage.

Project layout

local-memory-mcp/
├── memory_engine.py     # database and embedding engine
├── server.py            # FastMCP server exposing the tools
├── pyproject.toml       # packaging and dependencies
├── test_smoke.py        # engine and tool-layer tests
├── test_features.py     # blacklist, scoring, activity, and wipe tests
└── tauri-ui/            # optional desktop dashboard
    ├── src/             # frontend (HTML, CSS, JavaScript)
    └── src-tauri/       # Rust backend (tray and read/write database layer)

Testing

uv run python test_smoke.py
uv run python test_features.py

cd tauri-ui/src-tauri
cargo test

License

MIT. See LICENSE.

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