# sqlite-graph-memory

Подключает долговременную память к агентам через локальные markdown-заметки. Сочетает векторный поиск по фрагментам с обходом связей [[wikilinks]] без отдельной графовой базы.

- MCP-сервер · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 12
- Автор: tonydzi
- Лицензия: MIT · policy=link-only · показываем только описание, файл — у автора
- Исходник: https://github.com/tonydzi/sqlite-graph-memory
- Обновлён: 2026-10-24
- HTML: https://affpapa.org/nevibecode/mcp/sqlite-graph-memory

## Что делает

Сервер превращает локальную папку с markdown-файлами или хранилище Obsidian в долговременную память для ассистента. Сначала утилита `sgm-index` нарезает заметки на фрагменты и строит эмбеддинги `e5-base`. Во время поискового запроса скрипт находит первые совпадения по вектору, после чего собирает соседние документы по ссылкам формата `[[wikilinks]]` на глубину в один переход и переранжирует выдачу кросс-энкодером.

Граф связей не материализуется в виде отдельной таблицы: скрипт считывает ссылки прямо из текста заметок в момент выполнения запроса с лимитом до 40 соседних файлов. Вся постоянная информация сохраняется в единственный файл SQLite через стандартную библиотеку Python. Сервер требует заранее указать путь к готовому индексу в переменной `BRAIN_INDEX_DIR`, без неё инструмент не запустится.

Дополнительно предусмотрен хук завершения шага для агентов. Скрипт перехватывает хвост диалога после ответа ассистента и записывает сводку сессии, затронутые файлы и принятые решения в таблицу SQLite, не расходуя токены языковой модели.

## Требования
- Нужно: Python и uv (команды через uvx)
- Переменные окружения: `BRAIN_INDEX_DIR`, `TURNSTATE_DB` — это ключи и токены: значения спроси у человека, в репозиторий и общие файлы не записывай.

## Установка

### Claude Code (родная платформа)

**Командой платформы**
```bash
claude mcp add --env BRAIN_INDEX_DIR=<BRAIN_INDEX_DIR> --env TURNSTATE_DB=<TURNSTATE_DB> --transport stdio sqlite-graph-memory -- uvx sqlite-graph-memory
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from sqlite-graph-memory <команда>

### Codex

**Командой платформы**
```bash
codex mcp add sqlite-graph-memory --env BRAIN_INDEX_DIR=<BRAIN_INDEX_DIR> --env TURNSTATE_DB=<TURNSTATE_DB> -- uvx sqlite-graph-memory
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from sqlite-graph-memory <команда>

### Cursor

**Файл настроек**
Файл `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "sqlite-graph-memory": {
            "command": "uvx",
            "args": [
                "sqlite-graph-memory"
            ],
            "env": {
                "BRAIN_INDEX_DIR": "<BRAIN_INDEX_DIR>",
                "TURNSTATE_DB": "<TURNSTATE_DB>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from sqlite-graph-memory <команда>

### GitHub Copilot

**Файл настроек**
Файл `.vscode/mcp.json`:
```json
{
    "servers": {
        "sqlite-graph-memory": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "sqlite-graph-memory"
            ],
            "env": {
                "BRAIN_INDEX_DIR": "<BRAIN_INDEX_DIR>",
                "TURNSTATE_DB": "<TURNSTATE_DB>"
            }
        }
    }
}
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from sqlite-graph-memory <команда>

### Gemini CLI

**Командой платформы**
```bash
gemini mcp add -e BRAIN_INDEX_DIR=<BRAIN_INDEX_DIR> -e TURNSTATE_DB=<TURNSTATE_DB> sqlite-graph-memory uvx sqlite-graph-memory
```
Вместо <…> подставьте свои значения. uvx запускает команду с именем пакета; если в README она другая — uvx --from sqlite-graph-memory <команда>

## Когда брать
- находить связанные markdown-заметки по смыслу и синтаксису `[[wikilinks]]`
- сохранять контекст шагов агента в локальную базу данных SQLite
- переранжировать ассоциативную выдачу кросс-энкодером без отдельной графовой СУБД
- сравнивать качество векторной и графовой выдачи через встроенный режим `--ab`

## Примеры запросов агенту
- Найди в моих заметках всё, что связано с архитектурой проекта и зависимыми модулями.
- Что записано в заметках про Lanternfish и какие связанные документы на него ссылаются?
- Проверь историю сессий в базе данных и покажи принятые решения по рефакторингу.

## Похожие
- [REA](https://affpapa.org/nevibecode/mcp/rea.md) — MCP-сервер · ★ 392262
- [GitHub](https://affpapa.org/nevibecode/mcp/github.md) — MCP-сервер · ★ 33989
- [Netdata](https://affpapa.org/nevibecode/mcp/netdata.md) — MCP-сервер · ★ 81163
- [browser-use](https://affpapa.org/nevibecode/mcp/browser-use.md) — MCP-сервер · ★ 119231
- [Codebase Memory](https://affpapa.org/nevibecode/mcp/codebase-memory.md) — MCP-сервер · ★ 47577
- [mcp-server](https://affpapa.org/nevibecode/mcp/mcp-server.md) — MCP-сервер · ★ 43902

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
