@pinkpixel/mem0-mcp MCP-сервер ✨
Сервер Model Context Protocol (MCP), который интегрируется с Mem0.ai для предоставления возможностей постоянной памяти для LLM. Он позволяет агентам ИИ хранить и извлекать информацию между сеансами.
Этот сервер использует mem0ai Node.js SDK для своей основной функциональности.
Особенности 🧠
Инструменты
add_memory: Сохраняет фрагмент текстового содержимого как память, связанную с определеннымuserId.Обязательно:
content(строка),userId(строка)Необязательно:
sessionId(строка),agentId(строка),orgId(строка),projectId(строка),metadata(объект)Расширенный (Cloud API):
includes(строка),excludes(строка),infer(логическое значение),outputFormat(строка),customCategories(объект),customInstructions(строка),immutable(логическое значение),expirationDate(строка)Сохраняет предоставленный текст, позволяя вызывать его при будущих взаимодействиях.
search_memory: Поиск сохраненных воспоминаний на основе запроса на естественном языке для определенногоuserId.Требуется:
query(строка),userId(строка)Необязательно:
sessionId(строка),agentId(строка),orgId(строка),projectId(строка),filters(объект),threshold(число)Расширенный (Cloud API):
topK(число),fields(массив),rerank(логическое значение),keywordSearch(логическое значение),filterMemories(логическое значение)Извлекает соответствующие воспоминания на основе семантического сходства.
delete_memory: удаляет определенную память из хранилища по ее идентификатору.Обязательно:
memoryId(строка),userId(строка)Необязательно:
agentId(строка),orgId(строка),projectId(строка)Удаляет указанную память навсегда.
Предварительные условия 🔑
Этот сервер поддерживает два режима хранения:
Режим облачного хранения ☁️ (рекомендуется)
Требуется API-ключ Mem0 (предоставляется как переменная среды
MEM0_API_KEY)Воспоминания постоянно хранятся на облачных серверах Mem0.
Локальная база данных не требуется
Режим локального хранения 💾
Требуется ключ API OpenAI (предоставляется как переменная среды
OPENAI_API_KEY)Воспоминания хранятся в векторной базе данных в памяти (по умолчанию она непостоянна)
Данные теряются при перезапуске сервера, если они не настроены для постоянного хранения.
Установка и настройка ⚙️
Вы можете запустить этот сервер тремя основными способами:
1. Глобальная установка (рекомендуется для частого использования)
Установите пакет глобально и используйте команду mem0-mcp :
После глобальной установки вы можете запустить сервер напрямую:
Настройте свой клиент MCP для использования глобальной команды:
Конфигурация облачного хранилища (глобальная установка)
Конфигурация локального хранилища (глобальная установка)
2. Использование npx (рекомендуется для эпизодического использования)
Настройте свой MCP-клиент (например, Claude Desktop, Cursor, Cline, Roo Code и т. д.) для запуска сервера с помощью npx :
Конфигурация облачного хранилища (npx)
Конфигурация локального хранилища (npx)
3. Запуск из клонированного репозитория
Примечание: этот метод требует сначала клонирования репозитория с помощью git.
Клонируйте репозиторий, установите зависимости и соберите сервер:
Затем настройте клиент MCP для запуска созданного скрипта напрямую с помощью node :
Конфигурация облачного хранилища (клонированный репозиторий)
Конфигурация локального хранилища (клонированный репозиторий)
Важные примечания:
Замените
/absolute/path/to/mem0-mcp/на фактический абсолютный путь к вашему клонированному репозиторию.Используйте файл
build/index.js, а неsrc/index.tsСерверу MCP требуется чистый stdout для протокольной связи — любые библиотеки или код, которые записывают в stdout, могут помешать протоколу.
Идентификатор пользователя по умолчанию (необязательный резерв)
Инструменты add_memory и search_memory требуют аргумент userId для связывания воспоминаний с конкретным пользователем.
Для удобства во время тестирования или в однопользовательских сценариях вы можете опционально задать переменную окружения DEFAULT_USER_ID при запуске сервера. Если эта переменная установлена, а аргумент userId опущен при вызове инструмента search_memory , сервер будет использовать значение DEFAULT_USER_ID для поиска.
Примечание: хотя этот резервный вариант и существует, обычно рекомендуется, чтобы вызывающий агент (LLM) явно предоставлял правильный userId как для добавления, так и для поиска воспоминаний, чтобы избежать неоднозначности.
Пример конфигурации с использованием DEFAULT_USER_ID :
Или при запуске напрямую с node :
Облако против локального хранилища 🔄
Облачное хранилище (API Mem0)
Постоянный по умолчанию — ваши воспоминания остаются доступными во время сеансов и перезапусков сервера.
Локальная база данных не требуется — все данные хранятся на серверах Mem0
Более высокое качество поиска — использует оптимизированные алгоритмы поиска Mem0
Дополнительные поля — поддерживает параметры
agent_idиthresholdТребуется - API-ключ Mem0
Локальное хранилище (API OpenAI)
В памяти по умолчанию - данные хранятся только в оперативной памяти и не являются постоянными в долгосрочной перспективе . Хотя некоторое кэширование может иметь место, не следует полагаться на это для постоянного хранения.
Риск потери данных . Данные памяти будут потеряны при перезапуске сервера, перезагрузке системы или в случае завершения процесса.
Рекомендуется для — разработки, тестирования или временного использования.
Для постоянного хранения — используйте опцию облачного хранилища с API Mem0, если вам нужна надежная долговременная память.
Использует вложения OpenAI — для функциональности поиска векторов
Автономность — все данные остаются на вашем компьютере
Требуется - API-ключ OpenAI
Развитие 💻
Клонируйте репозиторий и установите зависимости:
Сборка сервера:
Для разработки с автоматической пересборкой при изменении файла:
Отладка 🐞
Поскольку серверы MCP взаимодействуют через stdio, отладка может быть сложной. Вот несколько подходов:
Используйте MCP Inspector : этот инструмент может контролировать связь по протоколу MCP:
Ведение журнала консоли : при добавлении журналов консоли всегда используйте
console.error()вместоconsole.log()чтобы избежать вмешательства в протокол MCP.Файлы среды : используйте файл
.envдля локальной разработки, чтобы упростить настройку ключей API и других параметров конфигурации.
Технические заметки по реализации 🔧
Расширенные параметры API Mem0
При использовании режима Cloud Storage с API Mem0 вы можете использовать дополнительные параметры для более сложного управления памятью. Хотя они явно не представлены в схеме инструмента, их можно включить в объект metadata при добавлении воспоминаний:
Расширенные параметры для add_memory :
Параметр | Тип | Описание |
| объект | Сохраните дополнительный контекст о памяти (например, местоположение, время, идентификаторы). Это может быть использовано для фильтрации во время поиска. |
| нить | Конкретные предпочтения для включения в память. |
| нить | Конкретные предпочтения, которые следует исключить из памяти. |
| булев | Выводить ли воспоминания или напрямую хранить сообщения (по умолчанию: true). |
| нить | Версия формата: v1.0 (по умолчанию, устарела) или v1.1 (рекомендуется). |
| объект | Список категорий с названиями и описаниями. |
| нить | Рекомендации по обработке и организации воспоминаний для конкретных проектов. |
| булев | Является ли память неизменной (по умолчанию: false). |
| нить | Когда истекает срок действия памяти (формат: ГГГГ-ММ-ДД). |
| нить | Идентификатор организации, связанный с этим воспоминанием. |
| нить | Идентификатор проекта, связанный с этим воспоминанием. |
| нить | Версия памяти (v1 устарела, v2 рекомендуется для новых приложений). |
Чтобы использовать эти параметры с сервером MCP, включите их в свой объект метаданных при вызове инструмента add_memory . Например:
Расширенные параметры для search_memory :
API поиска Mem0 v2 предлагает мощные возможности фильтрации, которые можно использовать с помощью параметра filters :
Параметр | Тип | Описание |
| объект | Сложные фильтры с логическими операторами и условиями сравнения |
| целое число | Количество возвращаемых лучших результатов (по умолчанию: 10) |
| нить[] | Конкретные поля для включения в ответ |
| булев | Следует ли переоценивать воспоминания (по умолчанию: false) |
| булев | Выполнять ли поиск по ключевым словам (по умолчанию: false) |
| булев | Фильтровать ли воспоминания (по умолчанию: false) |
| число | Минимальный порог схожести результатов (по умолчанию: 0,3) |
| нить | Идентификатор организации для фильтрации воспоминаний |
| нить | Идентификатор проекта для фильтрации воспоминаний |
Параметр filters поддерживает сложные логические операции (И, ИЛИ) и различные операторы сравнения:
Оператор | Описание |
| Соответствует любому из указанных значений |
| Больше или равно |
| Меньше или равно |
| Больше чем |
| Меньше, чем |
| Не равно |
| Проверка на наличие без учета регистра |
Пример использования сложных фильтров с помощью инструмента search_memory :
Это позволит найти воспоминания, связанные с увлечениями Алисы, где user_id — «alice» И agent_id — либо «travel-agent», либо «sports-agent», возвращая не более 5 результатов с показателем схожести не менее 0,5.
Более подробную информацию об этих параметрах можно найти в документации API Mem0 .
SafeLogger
Сервер MCP реализует класс SafeLogger , который выборочно перенаправляет вызовы console.log из библиотеки mem0ai в stderr, не нарушая протокол MCP:
Перехватывает вызовы console.log и проверяет трассировки стека для определения источника
Перенаправляет только вызовы журнала из библиотеки mem0ai или нашего собственного кода
Сохраняет чистый stdout для связи по протоколу MCP
Автоматически очищает ресурсы при завершении процесса
Это обеспечивает корректную работу клиентов MCP, сохраняя при этом полезную отладочную информацию.
Переменные среды
Сервер распознает несколько переменных среды, которые управляют его поведением:
MEM0_API_KEY: API-ключ для режима облачного храненияOPENAI_API_KEY: API-ключ для режима локального хранения (встраивание)DEFAULT_USER_ID: идентификатор пользователя по умолчанию для операций с памятьюORG_ID/YOUR_ORG_ID: идентификатор организации по умолчанию для режима облачного храненияPROJECT_ID/YOUR_PROJECT_ID: идентификатор проекта по умолчанию для режима облачного хранения
Важные примечания:
Идентификаторы сеансов передаются как параметры инструмента (например,
"sessionId": "my-session"), а не как переменные среды.При использовании инструментов параметры, предоставленные напрямую (например,
orgId,projectId,sessionId), имеют приоритет над переменными среды, что обеспечивает максимальную гибкость.
Сделано с ❤️ Pink Pixel
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Гибкая система памяти для приложений ИИ, которая поддерживает несколько поставщиков LLM и может использоваться как сервер MCP или как прямая интеграция библиотеки, обеспечивая автономное управление памятью без явных команд.
- Особенности 🧠
- Предварительные условия 🔑
- Установка и настройка ⚙️
- Облако против локального хранилища 🔄
- Развитие 💻
- Отладка 🐞
- Технические заметки по реализации 🔧
Related Resources
Related MCP Servers
- -security-license-qualityThis advanced memory server facilitates neural memory-based sequence learning and prediction, enhancing code generation and understanding through state maintenance and manifold optimization as inspired by Google Research's framework.Last updated -3470MIT License
- Asecurity-licenseAqualityA lightweight MCP server that provides a unified interface to various LLM providers including OpenAI, Anthropic, Google Gemini, Groq, DeepSeek, and Ollama.Last updated -6654
- Asecurity-licenseAqualityA persistent memory system for Large Language Models (LLMs) that enables continuous learning and knowledge retention across sessions through the Model Context Protocol (MCP).Last updated -24232MIT License
- -security-license-quality🧠 High-performance persistent memory system for Model Context Protocol (MCP) powered by libSQL. Features vector search, semantic knowledge storage, and efficient relationship management - perfect for AI agents and knowledge graph applications.Last updated -5MIT License