Skip to main content
Glama
bsahane

Memory MCP Server

by bsahane

Memory MCP Server

Python 3.12+ Tests License: Apache 2.0

Сервер Model Context Protocol (MCP), который даёт ИИ-агентам постоянную память. Заметки хранятся в локальной базе данных SQLite (создаётся автоматически, без настройки) и доступны через сорок инструментов, построенных по архитектуре tools-first. Создан на основе производственного каркаса template-mcp-server (FastMCP + FastAPI, структурированное логирование, контейнеры, манифесты OpenShift, CI).

Возможности

  • 40 инструментов MCP в четырёх областях: память, задачи, время (напоминания/оповещения), дашборд

  • Семь инструментов для памяти: store, get, search, list, update, delete, projects

  • Семь инструментов для задач: create, search, list, get, update, complete, delete с приоритетом и сроками выполнения

  • Восемь инструментов канбана: доски с настраиваемыми колонками; добавление/перемещение/обновление/удаление карточек

  • Семь инструментов трекеров: трекеры статусов, записи которых агрегируются в метрики прогресса

  • Хранение в SQLite через aiosqlite — один файл, отлаженный базовый режим WAL, автоматическое создание

  • Полнотекстовый поиск по ключевым словам — сопоставление целых слов со стеммером Портера по индексу FTS5, ранжирование по релевантности (лучшее совпадение первым)

  • Теги и метаданные в заметках и задачах

  • FastMCP + FastAPI c несколькими транспортами (HTTP, SSE, streamable-http)

  • Конфигурация Pydantic через переменные окружения

  • Структурированное JSON-логирование с помощью structlog

  • Интеграция OAuth (отключена по умолчанию; см. docs/authentication.md)

  • Готовность к контейнерам (базовый образ Red Hat UBI) — включены манифесты OpenShift

Поведение поиска и хранения

Поиск (memory_search, todo_search) выполняет сопоставление целых слов по полнотекстовому индексу со стеммером Портера: частичные слова никогда не совпадают (запрос check не найдёт checklist), пунктуация и операторы обрабатываются буквально, а результаты ранжируются по релевантности bm25 — сначала самое сильное совпадение, при равенстве — сначала новые. Обратите внимание, что токенизация unicode61 рассматривает целое предложение на языке CJK как один токен, поэтому сопоставление целых слов предполагает скрипты с пробельными разделителями.

Базы данных работают в режиме WAL с synchronous=NORMAL: недавно подтверждённые транзакции могут быть потеряны при сбое ОС или отключении питания — это приемлемый компромисс для заметок/задач, но не для системы учёта. Устоявшийся размер WAL ограничен параметром wal_autocheckpoint (~1000 страниц ≈ 4 МиБ); journal_size_limit (8 МиБ) лишь позволяет SQLite усечь файл WAL после того, как контрольные точки освободят его. Обслуживание (PRAGMA optimize + проход wal_checkpoint(TRUNCATE)) выполняется в цикле опроса напоминаний каждую десятую итерацию и может ненадолго задержать итерацию; оно ограничено тайм-аутом обработчика и тайм-аутом занятости базы данных.

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

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

Проверка в другом терминале:

curl http://localhost:5001/health

Ручная настройка (без 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

Инструменты

Память

Tool

Назначение

memory_store(content, tags?, metadata?)

Сохранить новую заметку; возвращает её id

memory_get(id)

Получить заметку по id

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

Полнотекстовый поиск по содержимому, ранжирование по релевантности

memory_list(limit?, offset?, tag?)

Просмотр заметок: сначала новые

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

Частичное обновление заметки

memory_delete(id)

Удалить заметку по id

Задачи (Todos)

Tool

Назначение

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

Создать структурированную задаче

todo_search(query, limit?, offset?)

Полнотекстовый поиск по заголовку/описанию, по релевантности

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

Просмотр задач с фильтрами

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

Управление отдельными задачами

Каннебан

Tool

Назначение

board_create(name, description?, columns?)

Создать доску; по умолчанию backlog/todo/in_progress/done

board_list() / board_delete(board_id)

Перечислить или удалить доски

board_view(board_id)

Полное состояние доски, сгруппированное по колонкам

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

Размещать и изменять порядок задач

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

Изменить или удалить карточки

Напоминания и оповещения

Tool

Назначение

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

Запланировать будущее оповещение (повторы: none/hourly/daily/weekly)

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

Просмотреть или изменить расписание

reminder_list(status?, limit?, offset?)

Сначала ближайшие по сроку

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

Управление расписаниями

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

Просмотр и снятие сработавших оповещений

Фоновый планировщик преобразует наступившие напоминания в оповещения на стороне сервера; запрашивайте их в начале сеанса с помощью alert_list(acknowledged=false).

Дашборд

Tool

Назначение

overview()

Сводные счётчики по областям, необработанные оповещения и ближайшие задачи

Трекеры

Tool

Назначение

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

Управление трекерами

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

Отслеживание элементов (not_started/in_progress/blocked/done)

tracker_status(tracker_id)

Прогресс: всего/готово/процент плюс количество по статусам

Все инструменты возвращают словари `{status: "success" | "error", ...}` и никогда не сообщают об исключениях на границе инструмента.

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

Переменная

По умолчанию

Описание

MEMORY_DB_PATH

./data/memory.db

Файл базы данных SQLite (создаётся автоматически, включая родительские каталоги)

REMINDER_POLL_SECONDS

30

Интервал фонового планировщика

MCP_HOST

localhost

Адрес привязки сервера

MCP_PORT

5001

Порт сервера (1024-65535)

MCP_TRANSPORT_PROTOCOL

http

Транспортный протокол (http, sse, streamable-http)

MCP_SSL_KEYFILE / MCP_SSL_CERTFILE

None

SSL-ключ/сертификат для HTTPS

ENABLE_AUTH

False*

OAuth-аутентификация (см. docs/authentication.md)

PYTHON_LOG_LEVEL

INFO

Уровень журналирования

* ENABLE_AUTH по умолчанию False в .env.example. Сначала скопируйте .env.example в .env, чтобы запуститься с отключённой аутентификацией.

Подключение MCP-клиента

Настройте свой MCP-клиент на конечную точку сервера:

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

Рабочий клиент, который сохраняет и ищет заметки, приведён в examples/fastmcp_client.py.

Разработка

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

Переменные окружения

Переменная

Описание

OPENAI_API_KEY

Ключ для внешних сервисов (не используется)

LOCAL_CORTEX

Для вывода локальных моделей (не используется)

Ограничения

Целиком: цель и постановка задач могут быть недостижимы для реальной реализации. Список инструментов в этом документе отражает желаемую функциональность; фактическая реализация может отличаться, в зависимости от текущего состояния проекта.

Документация

Руководство

Описание

Архитектура

Диаграммы системы, структура кодов, ключевые компоненты

Разработка

Установка, локальный запуск, тестирование, качество кода

Развёртывание

Podman, OpenShift, конфигурация контейнеров

Аутентификация

Настройка OAuth, режимы аутентификации, устранение неполадок

Лицензия

Apache 2.0 — создано на основе 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