Memkeeper logo

Memkeeper

by teflon07

Local Rust MCP memory engine using SQLite, hybrid retrieval, optional ONNX embeddings, and cross-encoder reranking.

Install Memkeeper

Pick your client, then add it in one click or paste the config.

Streamable HTTP (Remote)
Server URL
https://api.openai.com/v1/embeddings

Remote servers are added in the app, not the config file: Customize → Connectors → Add custom connector, then paste this URL.

Overview

teflon07/memkeeper MCP server gives agents durable local memory through MCP over JSON-RPC on stdio. It stores memories in one SQLite file and retrieves them with lexical BM25/FTS search, optional on-device ONNX embeddings, and cross-encoder reranking. Reach for it when an agent needs persistent context across sessions without a hosted service, network calls, or API keys.

Use cases

  • Store durable agent preferences across sessions
  • Retrieve project decisions with local semantic search
  • Capture structured facts and entity relationships
  • Inject relevant memories into Claude Code prompts

Key features

  • SQLite-backed local memory store
  • MCP over JSON-RPC stdio
  • BM25 and full-text lexical retrieval
  • Optional on-device ONNX embeddings
  • Cross-encoder reranking
  • Claude Code retrieval hook

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 1d ago

Recent health check succeeded.

14/15 checks healthy over the last 87d

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars4Stargazers on the source repository.
Last commit2mo agoMost recent push to the default branch.
Directory activity2 viewsConfig copies, upvotes, and views on AllMCPs.

How Memkeeper works

What teflon07/memkeeper MCP server does

teflon07/memkeeper is a local memory engine for AI agents. It keeps durable, self-contained facts, decisions, preferences, and lessons in a SQLite database on the machine running the binary. An agent can call remember to capture a memory and search to retrieve relevant memories in a later session.

The project is intended for curated memory rather than automatic transcript logging. Each entry should express one complete idea with enough context to stand alone. The repository describes a retention model that can promote recurring, high-signal memories to a durable tier.

How it works

The MCP interface uses JSON-RPC 2.0 over stdio. An MCP client starts the native memkeeper executable with the mcp argument, then uses the same memory store and retrieval path exposed by the command-line interface.

Retrieval has a lexical baseline based on BM25 and full-text search. Optional local semantic retrieval uses ONNX embedding models, and a cross-encoder reranker can refine results. Lexical search works without downloaded models; running pull-models enables the default local semantic mode. The embedding backend is recorded in the store, so changing it requires re-embedding with reindex --embed.

The store uses atomic writes and schema-versioned storage. Memory records can also include validated aliases and typed relationships supplied by the calling agent as a bounded graph projection. The graph data and memory commit together when provided through the MCP request.

Setup and configuration

Install a tagged release binary, use the provided install script, download models if semantic retrieval is wanted, and initialize the store:

sh
memkeeper pull-models
memkeeper init

The default database path is ~/.memkeeper/store.sqlite. A different path can be selected with --store. JSON command input can be passed inline, read from a file using @<file>, or read from standard input.

For MCP, configure the client to launch the native binary:

config.json
{
  "mcpServers": {
    "memkeeper": {
      "command": "memkeeper",
      "args": ["mcp"]
    }
  }
}

The teflon07/memkeeper MCP server has no required Python runtime, hosted service, API key, or separate server process. The project is pre-release, and its APIs and wire protocol may change before version 1.0. Tagged releases are recommended instead of arbitrary main commits.

Tools and capabilities

  • remember stores a durable memory from an MCP client or script.
  • search retrieves memories using the configured retrieval pipeline.
  • init creates or initializes a store and can be rerun safely.
  • pull-models downloads the local semantic models.
  • reindex --embed re-embeds memories after an embedding backend change.
  • backup creates a copy of the SQLite store.
  • doctor checks the initialized store.
  • hook retrieve provides a Claude Code UserPromptSubmit hook that injects relevant memories into prompts.

Whole documents are not automatically chunked in the curated memory tier. The README points to a separate document-store RAG tier for files and folders, while short distilled takeaways can be stored as memories.

Limitations and notes

Memory capture is deliberate: memkeeper does not run a background extractor or automatically log transcripts. The host agent supplies structured graph fields when relationships are recorded.

Long entries can have weaker semantic recall because the embedder processes only roughly the first 512 tokens, although lexical BM25 indexes the full text. The project currently describes itself as pre-release. Upgrading from older schema versions requires attention to the documented migration and backup process; schema 6 stores cannot be opened by v0.2.x binaries.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Memkeeper

teflon07/memkeeper is an MCP server that connects AI agents to a local SQLite memory store. Its main tools are `remember`, which saves durable facts, and `search`, which retrieves them later. It communicates over JSON-RPC 2.0 on stdio and can use lexical search, on-device ONNX embeddings, and reranking.

Install a release binary with the provided install script, then initialize a store with `memkeeper init`. The binary is self-contained and does not require Python, an API key, or a separate server. Optionally run `memkeeper pull-models` to enable local semantic retrieval.

Configure the client to launch `memkeeper` with `mcp` as its argument. The MCP entry uses `{"command":"memkeeper","args":["mcp"]}` under the server name `memkeeper`; the server then communicates over JSON-RPC 2.0 via stdio.

Yes, teflon07/memkeeper works with Cursor because the README identifies Cursor as an MCP client that can connect to it. Configure Cursor to start the native binary with the `mcp` argument. Claude Code is also named as a supported MCP client.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewMemkeeper AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/teflon07-memkeeper?style=directory)](https://allmcps.com/mcp/teflon07-memkeeper)
HTML Embed
<a href="https://allmcps.com/mcp/teflon07-memkeeper"><img src="https://allmcps.com/api/badge/teflon07-memkeeper?style=directory" alt="Memkeeper on AllMCPs" /></a>