MCP Memory Server
Enables web search and content scraping via DuckDuckGo, allowing the MCP server to fetch and index online information directly into the knowledge graph.
Integrates with PostgreSQL as a remote database backend for persistent storage of entities, relations, and dialogue history in production environments.
Integrates with Redis as a caching layer for web search results and session data, improving response times and reducing external requests.
Integrates with SQLite as a local database backend for persistent storage, suitable for development and single-user setups.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Memory ServerSave entity: John works at Acme Corp."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🧠 MCP Memory Server

MCP сервер для управления долговременной памятью (Knowledge Graph) и поиска в интернете. Поддерживает SQLite (встроенное хранилище) и PostgreSQL (удалённая БД).
⚡ Используйте MCP инструменты прямо из VS Code: сохраняйте заметки, стройте граф знаний, ищите в интернете — всё без выхода из редактора.
✨ Возможности
🧠 Knowledge Graph (Граф знаний)
Сохранение сущностей — люди, концепции, заметки, проекты, статьи
Связи между сущностями — граф отношений (
A --[related_to]--> B)Полнотекстовый поиск — по имени, свойствам, тегам (FTS5 / PostgreSQL tsvector)
Семантический поиск — векторные эмбеддинги через
sentence-transformersПространства имён — изолированные области знаний (проекты, темы)
Теги и категории — гибкая классификация
Экспорт графа — JSON/Markdown дамп всей базы знаний
TTL для сущностей — автоматическое "забывание" устаревших данных
🌐 Web Browser (Поиск в интернете)
Поиск через DuckDuckGo — без API-ключа, бесплатно
Скрейпинг страниц — извлечение основного контента по URL
Сохранение страниц как знаний — с эмбеддингами для поиска
Кэширование в Redis — повторные запросы без задержек
💬 Dialogue Memory (Память диалогов)
Хранение истории — каждая сессия диалога сохраняется
Извлечение контекста — восстановление предыдущих разговоров
Очистка сессии — управление памятью
⚙️ Системное
Health Check — мониторинг БД, Redis, эмбеддингов
Статистика — количество сущностей, связей, размер БД
Резервное копирование — SQLite backup / PostgreSQL dump
🖥️ Web UI
Dashboard — статистика, графики, граф знаний (D3.js)
Entity Browser — поиск и просмотр сущностей
Timeline — временная шкала изменений
Graph Visualization — force-directed граф с зумом
🏗️ Архитектура
┌─────────────────────────────────────────────────────────┐
│ MCP Client (Claude) │
└──────────────────────┬──────────────────────────────────┘
│ MCP Protocol (stdio / SSE)
┌──────────────────────▼──────────────────────────────────┐
│ server.py (FastMCP) │
│ ┌────────────┐ ┌────────────┐ ┌───────────────────┐ │
│ │ Knowledge │ │ Browser │ │ Dialogue Memory │ │
│ │ Graph Tools │ │ Tools │ │ Tools │ │
│ └──────┬──────┘ └──────┬─────┘ └───────┬───────────┘ │
│ │ │ │ │
│ ┌──────▼────────────────▼─────────────────▼──────────┐ │
│ │ KnowledgeGraph (core logic) │ │
│ └──────┬──────────────────────┬──────────────────────┘ │
│ │ │ │
│ ┌──────▼──────┐ ┌──────▼──────┐ │
│ │ SQLite3 / │ │ Redis │ │
│ │ PostgreSQL │ │ (cache) │ │
│ └─────────────┘ └─────────────┘ │
│ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ EmbeddingsEngine (sentence-transformers) │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘Технологии
Компонент | Технология | Назначение |
MCP Server |
| Протокол взаимодействия |
Хранилище | SQLite3 / PostgreSQL (asyncpg) | Персистентность данных |
Кэш | Redis (async) | Кэш запросов, сессии, TTL |
Эмбеддинги |
| Семантический поиск |
Поиск |
| Бесплатный веб-поиск |
Скрейпинг |
| Извлечение контента |
Web UI | Starlette + D3.js | Визуализация графа |
🚀 Быстрый старт
Установка
# Клонировать репозиторий
cd mcp-server
# Установить зависимости (рекомендуется использовать uv)
uv sync
# Или через pip
pip install -e .Настройка
cp .env.example .env
# Отредактировать .env при необходимостиЗапуск сервера (локальная сеть)
Сервер работает по SSE (Server-Sent Events) и доступен в локальной сети.
Через Python (SQLite)
# Установить зависимости
pip install -e .
# Запустить MCP сервер (SSE транспорт, порт 8000)
python -m serverСервер будет доступен по адресу: http://127.0.0.1:8000/sse
Через Python (PostgreSQL)
# Настроить .env
DB_TYPE=postgres
PG_HOST=your-postgres-host
PG_USER=postgres
PG_PASSWORD=your-password
PG_DATABASE=mcp_memory
# Запустить
python -m serverЧерез Docker Compose (SQLite + Redis)
docker compose up -d
# Сервер: http://SERVER_IP:8000/sse
# Redis: порт 6379Через Docker Compose (PostgreSQL + Redis — production)
cp .env.example .env
# Отредактировать PG_PASSWORD и EMBEDDINGS_MODE
docker compose -f docker-compose.remote.yml up -d
# PostgreSQL: порт 5432 (только localhost)
# Redis: порт 6379 (только localhost)
# Сервер: http://SERVER_IP:8000/sseВариант 1: Автоматически (конфигурация в проекте)
В файле .vscode/mcp.json уже прописано подключение по URL:
{
"servers": {
"memory-server": {
"type": "url",
"url": "http://localhost:8000/sse"
}
}
}Замените localhost на IP-адрес сервера в локальной сети, если VS Code запущен на другом компьютере.
Вариант 2: Через settings.json пользователя
Добавьте в глобальный settings.json VS Code (Ctrl+Shift+P → "Preferences: Open User Settings (JSON)"):
{
"mcp": {
"servers": {
"memory-server": {
"type": "url",
"url": "http://192.168.1.100:8000/sse"
}
}
}
}Замените IP на фактический адрес сервера.
Вариант 3: Локальный запуск сервера на том же компьютере
Если VS Code запущен на том же компьютере, что и сервер:
{
"mcp": {
"servers": {
"memory-server": {
"type": "url",
"url": "http://localhost:8000/sse"
}
}
}
}Проверка подключения
Убедитесь, что сервер запущен (команда
python -m serverилиdocker-compose up -d)Откройте VS Code
Если настроено через
.vscode/mcp.json— откройте папку проектаИспользуйте
Ctrl+Shift+P→ "MCP: List Tools" чтобы увидеть все доступные инструментыПри успешном подключении вы увидите список из 18 инструментов
Подключение из Kilo Code
Kilo Code поддерживает MCP серверы по протоколу SSE. Добавьте в kilo.json (глобальный ~/.config/kilo/kilo.json или проектный ./kilo.json):
Без авторизации
{
"mcp": {
"memory-server": {
"type": "remote",
"url": "http://192.168.1.100:8000/sse",
"enabled": true
}
}
}С авторизацией (SSE_API_KEY)
{
"mcp": {
"memory-server": {
"type": "remote",
"url": "http://192.168.1.100:8000/sse",
"headers": {
"Authorization": "Bearer your-secret-api-key"
},
"enabled": true
}
}
}Замените IP и ключ на фактические значения сервера.
Подключение из Roo Code
Roo Code также поддерживает SSE MCP серверы. Добавьте в mcp_settings.json (или в настройках расширения → MCP → Edit Settings):
{
"mcpServers": {
"memory-server": {
"type": "sse",
"url": "http://192.168.1.100:8000/sse",
"headers": {
"Authorization": "Bearer your-secret-api-key"
}
}
}
}Если авторизация не включена — поле headers можно опустить.
🛠️ MCP Инструменты
Knowledge Graph
Инструмент | Описание | Параметры |
| Сохранить сущность |
|
| Получить сущность |
|
| Поиск по базе знаний |
|
| Список сущностей |
|
| Удалить сущность |
|
| Создать связь |
|
| Связи сущности |
|
| Экспорт графа |
|
Browser
Инструмент | Описание | Параметры |
| Поиск в интернете |
|
| Извлечь текст страницы |
|
| Сохранить страницу как знание |
|
Dialogue Memory
Инструмент | Описание | Параметры |
| Сохранить реплику |
|
| История сессии |
|
| Очистить историю |
|
System
Инструмент | Описание | Параметры |
| Проверка сервисов | — |
| Статистика |
|
| Список пространств | — |
📝 Примеры использования
Сохранение знаний
🔧 store_entity(
name="Python asyncio",
entity_type="concept",
properties='{"category": "programming", "difficulty": "intermediate"}',
tags="python,async,programming"
)Поиск с семантикой
🔍 search_knowledge(
query="асинхронное программирование",
use_semantic=true,
limit=5
)Связывание сущностей
🔗 add_relation(
source_id="<entity_id_1>",
target_id="<entity_id_2>",
relation_type="depends_on"
)Поиск в интернете и сохранение
🌐 web_search(query="последние новости AI", max_results=5)
📄 scrape_page(url="https://example.com/article")
💾 save_webpage_to_knowledge(
url="https://example.com/article",
tags="AI,research"
)🐳 Docker
Локальная разработка (SQLite + Redis)
docker compose up -dProduction (PostgreSQL + Redis)
# Полный стек (PostgreSQL, Redis, MCP Server)
docker compose -f docker-compose.remote.yml up -d
# Или с внешней PostgreSQL (без локального контейнера PG)
docker compose -f docker-compose.remote.yml --profile external-db up -dСборка образа вручную
docker build -t mcp-memory-server .
# Запуск с пробросом .env
docker run -it --rm --env-file .env -v mcp-data:/app/data mcp-memory-server🧪 Тестирование
# Установить dev-зависимости
pip install -e ".[dev]"
# Запустить тесты
pytest -v
# С覆盖率
pytest --cov=. --cov-report=term-missing📦 Переменные окружения
Переменная | По умолчанию | Описание |
|
| Тип БД: |
|
| Путь к SQLite (при |
|
| Хост PostgreSQL (при |
|
| Порт PostgreSQL |
|
| Пользователь PostgreSQL |
| — | Пароль PostgreSQL |
|
| Имя БД PostgreSQL |
|
| Размер пула соединений asyncpg |
|
| Хост Redis |
|
| Порт Redis |
|
| Номер БД Redis |
| — | Пароль Redis |
|
| Интерфейс для SSE сервера |
|
| Порт для SSE сервера |
|
| Транспорт: |
|
| Режим эмбеддингов: |
|
| Модель эмбеддингов |
|
| Пространство имён по умолчанию |
|
| TTL для сущностей (0 = без TTL) |
|
| Включить Bearer token аутентификацию для SSE |
| — | API-ключ для SSE эндпоинтов |
🤝 Предлагаемые улучшения
Авторизация — Bearer token аутентификация для SSE-эндпоинтов (SSE_AUTH_ENABLED + SSE_API_KEY)
Мониторинг URL — периодическая проверка страниц на изменения
OpenTelemetry — метрики и трейсинг
Партиционирование — шардирование PostgreSQL по namespace
Бэкап PostgreSQL — автоматический pg_dump по расписанию
📋 Changelog
v0.2.0 — PostgreSQL, async, Web UI
PostgreSQL: новый async-клиент (
storage/postgres_client.py) на asyncpg:Пул соединений, JSONB, GIN-индексы, FTS через tsvector
16 индексов: GIN на JSONB/TEXT[]/tsvector, композитные, покрывающие
Каскадные внешние ключи (
ON DELETE CASCADE)Переключение между SQLite/PostgreSQL через
DB_TYPEв .env
Async dispatch: KnowledgeGraph автоматически определяет sync/async хранилище
Web UI: Dashboard с D3.js графом, Entity Browser, Timeline, Stats
Favicon: иконка сервера (
mcp.png) на всех страницах Web UIDocker Compose:
docker-compose.remote.ymlдля production-развёртыванияТесты: 176/176, 0 warnings
v0.1.1 (предыдущий релиз)
Исправлен критический баг:
__version__теперь определён вserver.py, сервер не падает при запускеИсправлены импорты: относительные импорты (
from ..storage) заменены на абсолютные (from storage)Починены тесты: 73% тестов (143 из 197) теперь выполняются (раньше падали с ImportError)
Оптимизация производительности:
N+1 запросы в
GraphVisualizerзаменены на batch-запросget_relations_for_entitieslist_namespaces()теперь используетSELECT DISTINCTвместо загрузки всех сущностейexport_graph()использует batch-запрос вместо цикла
Безопасность:
Добавлен
html.escape()для всех пользовательских данных в Web UI (XSS)Добавлена защита path traversal в
MarkdownImporterMCP_HOSTпо умолчанию изменён на127.0.0.1
Улучшения кода:
Убран мёртвый вызов
search_knowledge()вurl_monitor.py_parse_json()теперь принимаетstr | Nonecosine_similarity()—@staticmethodСуждены блоки
except Exceptionдо конкретных исключенийУбраны поздние импорты в
server.pyДобавлен
fastembedв optional-dependenciesУстранён дубликат тестового класса
TestSearchEngineWithMockRedisМодельные тесты вынесены в
test_models.py
📄 Лицензия
MIT
Related MCP Connectors
- ContextaOAuthcc.contexta
Persistent memory and knowledge graph for AI assistants — keyword + vector + graph search.
Shared long-term memory for AI agents: save and recall context as a searchable knowledge graph.
Persistent memory for AI agents. Search and store durable facts, preferences and decisions.
Persistent AI memory with semantic search, conflict detection, and ticketing.