Skip to main content
Glama

mcp-mem0

Ein MCP-Server für mem0 (selbst gehostet / Open Source), unterstützt durch Qdrant. Jede Anfrage zielt auf eine Qdrant-Collection, die über einen HTTP-Header benannt wird, sodass Clients, die denselben Namen senden, Erinnerungen teilen und verschiedene Namen isoliert bleiben.

Werkzeuge

Werkzeug

Zweck

add_memory

Speichert Erinnerungen (LLM-Fakttextraktion oder roh mit infer=false)

search_memory

Semantische Suche in der Collection der Anfrage

update_memory

Ersetzt den Inhalt einer Erinnerung anhand der ID

delete_memory

Löscht eine Erinnerung anhand der ID

get_memory

Ruft eine Erinnerung anhand der ID ab

list_memories

Listet Erinnerungen für einen Bereich auf

memory_history

Änderungsverlauf einer Erinnerung

delete_all_memories

Löscht alle Erinnerungen für einen Bereich

Related MCP server: mem0-open-mcp

Wie das Collection-Routing funktioniert

  • Der Collection-Name wird aus einem HTTP-Header gelesen (standardmäßig X-Collection) und auf die Qdrant-Collection mem0_<name> abgebildet (Präfix konfigurierbar; leer setzen, um den Wert unverändert zu verwenden). Der Header-Wert wird gegen ^[A-Za-z0-9_-]{1,64}$ validiert.

  • Teilen: Alle Clients, die denselben Collection-Namen senden, teilen dieselben Erinnerungen. Verschiedene Namen sind isoliert.

  • Pro Collection wird eine AsyncMemory-Instanz erstellt und gecacht.

  • Die Collection wird ausschließlich über den Header gewählt – user_id / agent_id / run_id beeinflussen nie, welche Collection verwendet wird; sie grenzen nur innerhalb einer Collection ein und sind optional. Suchen / Auflisten ohne eines davon umfasst die gesamte Collection.

  • add_memory benötigt weiterhin eine ID zum Speichern (mem0-Anforderung); eine Standard-user_id (MEM0_DEFAULT_USER_ID) wird angewendet, wenn der Aufrufer beim Schreiben alle drei weglässt.

Schnellstart

# 1. Start Qdrant
docker compose up -d qdrant

# 2. Configure
cp .env.example .env
# edit .env: set OPENAI_API_KEY (or switch to the Ollama block for a key-free setup)

# 3. Run the server (streamable-HTTP on :8080/mcp)
uv run -m mcp_mem0

Health-Check: curl localhost:8080/health

Docker

Das Dockerfile ist mehrstufig mit zwei Zielen: runtime (der Server) und test (die Testsuite).

Mit docker compose (empfohlen)

cp .env.example .env          # set OPENAI_API_KEY (or the Ollama block)

# Qdrant + server together
docker compose up -d --build qdrant server
curl localhost:8080/health

# Run unit tests (no Qdrant / keys needed)
docker compose run --rm tests

# End-to-end smoke against the running server (needs an embedder key)
docker compose run --rm tests python tests/smoke.py

Im Compose-Netzwerk erreicht der Server Qdrant unter QDRANT_HOST=qdrant (automatisch gesetzt); Tests erreichen den Server unter MCP_URL=http://server:8080/mcp.

Mit einfachem Docker

# Service image
docker build --target runtime -t mcp-mem0 .
docker run --rm -p 8080:8080 --env-file .env -e QDRANT_HOST=host.docker.internal mcp-mem0

# Test image
docker build --target test -t mcp-mem0-test .
docker run --rm mcp-mem0-test            # pytest -q

Überprüfen

# Unit tests (no Qdrant needed)
uv run pytest -q

# End-to-end smoke test (server + Qdrant + embedder must be running)
uv run python tests/smoke.py

# Confirm per-client collections were created
curl localhost:6333/collections

Konfiguration

Alle Einstellungen stammen aus Umgebungsvariablen / .env – siehe .env.example. Wichtige: MEM0_COLLECTION_HEADER, MEM0_COLLECTION_PREFIX, QDRANT_HOST/QDRANT_PORT (oder QDRANT_URL+QDRANT_API_KEY), MEM0_EMBEDDING_DIMS (muss zum Embedder passen), und die MEM0_LLM_* / MEM0_EMBEDDER_*-Anbieterblöcke (openai / ollama / …).

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers