Skip to main content
Glama

mcp-mem0

MCP-сервер для mem0 (self-hosted / open source) на базе Qdrant. Каждый запрос направляется в коллекцию Qdrant, имя которой задаётся HTTP-заголовком, поэтому клиенты, отправляющие одно и то же имя, разделяют воспоминания, а разные имена изолированы.

Инструменты

Инструмент

Назначение

add_memory

Сохранение воспоминаний (извлечение фактов через LLM или сырых с infer=false)

search_memory

Семантический поиск в коллекции запроса

update_memory

Замена содержимого воспоминания по id

delete_memory

Удаление воспоминания по id

get_memory

Получение одного воспоминания по id

list_memories

Список воспоминаний для области видимости

memory_history

История изменений воспоминания

delete_all_memories

Удаление всех воспоминаний для области видимости

Related MCP server: mem0-open-mcp

Как работает маршрутизация коллекций

  • Имя коллекции считывается из HTTP-заголовка (X-Collection по умолчанию) и сопоставляется с коллекцией Qdrant mem0_<name> (префикс настраивается; можно задать пустым, чтобы использовать значение как есть). Значение заголовка проверяется по ^[A-Za-z0-9_-]{1,64}$.

  • Совместное использование: любые клиенты, отправляющие одно и то же имя коллекции, разделяют одни и те же воспоминания. Разные имена изолированы.

  • Один экземпляр AsyncMemory создаётся и кэшируется для каждой коллекции.

  • Коллекция выбирается только по заголовку — user_id / agent_id / run_id никогда не влияют на выбор коллекции; они лишь сужают выбор внутри коллекции и необязательны. Поиск / список без них охватывает всю коллекцию.

  • Для add_memory всё равно требуется один id для сохранения (требование mem0); применяется значение по умолчанию user_id (MEM0_DEFAULT_USER_ID), если вызывающий опускает все три при записи.

Быстрый старт

# 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

Проверка работоспособности: curl localhost:8080/health

Docker

Dockerfile — многоступенчатый, с двумя целями: runtime (сервер) и test (набор тестов).

С docker compose (рекомендуется)

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

Внутри сети compose сервер обращается к Qdrant по адресу QDRANT_HOST=qdrant (задаётся автоматически); тесты обращаются к серверу по адресу MCP_URL=http://server:8080/mcp.

С обычным 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

Проверка

# 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

Конфигурация

Все настройки берутся из переменных окружения / .env — см. .env.example. Ключевые: MEM0_COLLECTION_HEADER, MEM0_COLLECTION_PREFIX, QDRANT_HOST/QDRANT_PORT (или QDRANT_URL+QDRANT_API_KEY), MEM0_EMBEDDING_DIMS (должны совпадать с эмбеддером), и блоки провайдеров MEM0_LLM_* / MEM0_EMBEDDER_* (openai / ollama / …).

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers