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.

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.

-
license - not tested
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Persistent memory for AI agents. Search, store, and recall across sessions.

  • Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.

  • Universal memory for AI agents and tools. Save, organize and search context anywhere.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/bsahane/memory-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server