Skip to main content
Glama
bsahane

Memory MCP Server

by bsahane

Memory MCP Server

Python 3.12+ Tests License: Apache 2.0

Ein MCP-Server (Model Context Protocol), der KI‑Agenten ein persistentes Gedächtnis verleiht. Gedächtnisinhalte werden in einer lokalen SQLite-Datenbank gespeichert (automatisch erstellt, keine Konfiguration erforderlich) und über vierzig Werkzeuge in einer tools‑first Architektur zugänglich gemacht. Das System basiert auf dem Produktionsgerüst template-mcp-server (FastMCP + FastAPI, strukturierte Protokollierung, Container, OpenShift‑Manifeste, CI).

Funktionen

  • 40 MCP‑Tools in vier Domänen: Gedächtnis, Aufgaben, Zeit (Erinnerungen/Alerts), Dashboard

  • Sieben Gedächtnis‑Tools: store, get, search, list, update, delete, projects

  • Sieben Todo‑Tools: create/search/list/get/update/complete/delete mit Priorität und Fälligkeit

  • Acht Kanban‑Tools: Boards mit konfigurierbaren Spalten; Karte hinzufügen/verschieben/ändern/löschen

  • Sieben Tracker‑Tools: Statustracker, dessen Einträge in Fortschrittskennzahlen aggregieren

  • SQLite‑Persistenz über aiosqlite – eine Datei, optimierte WAL‑Basis, automatische Erstellung

  • Volltext‑Keywordsuche – „whole‑word“- und Porter‑Stemming‑Matches über einen FTS5‑Index, sortiert nach Relevanz (bester Treffer zuerst)

  • Tags und Metadaten für Gedächtnisinhalte und Todos

  • FastMCP + FastAPI mit mehreren Transports (HTTP, SSE, Streamable‑HTTP)

  • Pydantic‑Konfiguration über Umgebungsvariablen

  • Strukturiertes JSON‑Logging mit structlog

  • OAuth‑Integration (standardmäßig deaktiviert; siehe docs/authentication.md)

  • Container‑Ready (Red‑Hat‑UBI‑Basisimage) und OpenShift‑Manifeste inklusive

Such- und Speicherverhalten

Die Suche (memory_search, todo_search) arbeitet mit ganzen Worten über einem Porter‑gestemmten Volltextindex: Teilwörter treffen nie (die Abfrage check matcht nicht checklist), Satzzeichen und Operatoren werden wörtlich interpretiert, und die Ergebnisse sind nach bm25‑Relevanz sortiert – stärkster Treffer zuerst, bei Gleichstand der neueste zuerst. Hinweis: Die unicode61‑Tokenisierung behandelt einen gesamten CJK‑Satz als ein Token, daher setzt die „Ganz‑Wort“-Suche Leerzeichen‑getrennte Skripte voraus.

Die Datenbank läuft im WAL‑Modus mit synchronous=NORMAL: Kurz zurückliegende Transaktionen können bei einem Betriebssystemabsturz oder Stromausfall verloren gehen (ein bewusster Kompromiss für Notizen/Aufgaben – nicht für ein „System of Record“ geeignet). Die WAL‑Dateigröße bleibt durch wal_autocheckpoint stabil (ca. 1000 Seiten ≈ 4 MB); journal_size_limit (8 MB) erlaubt es SQLite lediglich, die WAL‑Datei nach einem Checkpoint zu kürzen. Wartungsarbeiten (PRAGMA optimize und ein wal_checkpoint(TRUNCATE)‑Durchlauf) werden alle zehn Poll‑Tick in der Erinnerungsschleife ausgeführt und können einen Tick kurz verzögern; sie sind durch das „Timeout des jeweiligen Hooks“ und das Busy‑Timeout der Datenbank begrenzt.

Related MCP server: Agent Progress Tracker MCP Server

Schnellstart

git clone https://github.com/redhat-data-and-ai/memory-mcp-server
cd memory-mcp-server
make install        # creates venv, installs deps + pre-commit hooks
make local          # starts server on localhost:5001

In einem anderen Terminal überprüfen:

curl http://localhost:5001/health

Manuelle Einrichtung (ohne Make):

# Create venv and install
uv venv && source .venv/bin/activate
uv pip install -e ".[dev]"
pre-commit install

# Configure and run
cp .env.example .env
memory-mcp-server

# Verify
curl http://localhost:5001/health

Tools

Gedächtnis

Tool

Zweck

memory_store(content, tags?, metadata?)

Neues Gedächtnis speichert und gibt dessen id zurück

memory_get(id)

Holt einen Gedächtnis per id

memory_search(query, limit?) / memory_search(query, limit?, output_format?)

Volltext-Keywordsuche über den Inhalt, sortiert nach Relevanz

memory_list(limit?, offset?, tag?)

Durchsuchen der Gedächtnisse, neueste zuerst

memory_update(id, content?/tags?/metadata?)

Aktualisiert ein Gedächtnis teilweise

memory_delete(id)

Entfernt ein Gedächtnis anhand der id

Todos

Tool

Zweck

todo_create(title, description?, priority?, status?, due_date?, tags?)

Fügt eine strukturierte Aufgabe hinzu

todo_search(query, limit?, offset?)

Ganz‑Wort‑Keywordsuche über Titel/Beschreibung, nach Relevanz geordnet

todo_list(status?, tag?, limit?, offset?)

Durchsucht Todos mit Filtern

todo_get(id) / todo_update(id, ...) / todo_complete(id) / todo_delete(id)

Verwaltet einzelne Todos

Kanban

Tool

Zweck

board_create(name, description?, columns?)

Neues Board; Standard: backlog/todo/in_progress/done

board_list() / board_delete(board_id)

Boards aufzählt oder löscht

board_view(board_id)

Kompletter Board‑Zustand, nach Spalten gruppiert

card_add(board_id, title, ...) / card_move(card_id, column, position?)

Arbeit platzieren und neu sortieren

card_update(card_id, ...) / card_delete(card_id)

Karten bearbeiten oder entfernen

Erinnerungen & Alerts

Tool

Zweck

reminder_create(title, due_at, notes?, repeat?)

Zeitpläne für zukünftige Benachrichtigung (keine/stündliche/tägliche/wöchentliche Wiederholungen)

reminder_get(id) / reminder_update(id, ...)

Zeitplan anzeigen oder bearbeiten

reminder_list(status?, limit?, offset?)

Nächstfällige zuerst

reminder_cancel(id) / reminder_snooze(id, minutes?) / reminder_delete(id)

Zeitpläne verwalten

alert_list(acknowledged?, limit?) / alert_ack(id) / alert_ack_all()

Ausgelöste Alerts prüfen und bestätigen

Ein Hintergrund‑Schedder erstellt aus fälligen Erinnerungen server‑seitig Alerts; diese können beim Session‑Start mit alert_list(acknowledged=false) abgefragt werden.

Dashboard

Tool

Zweck

overview()

Domänenübergreifende Zähler, unbeantwortete Alerts und das Nächstgeplante (next due)

Tracker

Tool

Zweck

tracker_create(name, description?) / tracker_list() / tracker_delete(id)

Tracker verwalten

entry_add(tracker_id, name, status?) / entry_update_status(entry_id, status) / entry_remove(entry_id)

Einträge verfolgen (not_started/in_progress/blocked/done)

tracker_status(tracker_id)

Fortschritt: Total/done/Prozent plus Zähler pro Status

Alle Tools geben ein Wörterbuch der Form {status: "success" | "error", ...} zurück und lösen nie eine Ausnahme über die Tool‑Grenze aus.

Konfiguration

Variable

Standard

Beschreibung

MEMORY_DB_PATH

./data/memory.db

SQLite‑Datenbankdatei (automatisch erstellt, Ordner werden angelegt)

REMINDER_POLL_SECONDS

30

Hintergrund‑Schedulerintervall zum Auslösen fälliger Erinnerungen

MCP_HOST

localhost

Binde‑Adresse des Servers

MCP_PORT

5001

Serverport (1024–65535)

MCP_TRANSPORT_PROTOCOL

http

Transportprotokoll (http, sse, streamable-http)

MCP_SSL_KEYFILE / MCP_SSL_CERTFILE

None

SSL‑Schlüssel/zertifikate für HTTPS

ENABLE_AUTH

False*

OAuth‑Authentifizierung (siehe docs/authentication.md)

PYTHON_LOG_LEVEL

INFO

Protokollierungsstufe

* ENABLE_AUTH ist in .env.example standardmäßig False. Kopieren Sie .env.example immer zu .env, um mit Auth aktiviert zu starten.

Verbinden eines MCP‑Clients

Richten Sie Ihren MCP‑Client auf den Serverendpunkt:

{
  "mcpServers": {
    "memory": {
      "url": "http://localhost:5001/mcp"
    }
  }
}

Ein funktionierendes Beispiel in examples/fastmcp_client.py zeigt, wie Sie Erinnerungen speichern und suchen.

Entwicklung

make lint     # ruff + mypy
make test     # pytest with coverage
make pre-commit  # run all pre-commit hooks

Funktionen

Leitfaden

Beschreibung

Architektur

Systemdiagramme, Code‑Struktur, Hauptkomponenten

Entwicklung

Einrichtung, lokale Ausführung, Tests, Codequalität

Deployment

Podman, OpenShift, Container‑Konfiguration

Authentifizierung

OAuth‑Einrichtung, Auth‑Modi, Fehlerbehebung

Lizenz

Apache 2.0 – abgeleitet von redhat-data-and-ai/template-mcp-server.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides persistent local memory functionality for AI assistants, enabling them to store, retrieve, and search contextual information across conversations with SQLite-based full-text search. All data stays private on your machine while dramatically improving context retention and personalized assistance.
    3
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to track, search, and retrieve their progress across projects with persistent memory using SQLite storage and LLM-powered summarization. Supports logging completed work, searching previous entries, and retrieving context for multi-step or multi-agent workflows.
    12 npm
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides AI coding assistants with persistent memory storage using a local SQLite database. Enables tools to remember project details, notes, and relationships across sessions to maintain context and reduce repetitive explanations.
    17
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Gives AI coding agents persistent memory by storing observations, decisions, and learnings in a local SQLite database with vector search, full-text search, and a rules engine.
    4
    MIT