NOUZ — Семантический MCP-сервер для вашей базы знаний
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
> *Структура появляется из содержания.*
Работает с Obsidian, Logseq и любыми директориями Markdown-файлов.
NOUZ работает на MCP Python SDK v2.
🇬🇧 English version
---
Зачем нужен Nouz
NOUZ выступает прослойкой между вашей базой заметок и AI-агентом. Он помогает превратить разрозненные Markdown-файлы в граф, с которым удобно работать и вам, и агенту:
1. **Автоматическая классификация (Семантика)**
Вы задаете "Ядра" — базовые домены вашей базы. Когда вы добавляете новую заметку, NOUZ читает ее текст, сравнивает векторы и предлагает доменный знак или комбинацию доменов.
2. **Поиск связей между заметками**
Сервер строит направленный структурный граф: hierarchy держится как DAG без циклов, а дополнительные смысловые связи живут рядом:
- *Семантические мосты:* две заметки из разных доменов указывают на одну и ту же идею.
- Явные теговые связи можно хранить вручную в YAML.
3. **Отслеживание эволюции базы (Дрифт)**
NOUZ хранит доменный профиль содержательных узлов и может сравнить его с заявленным знаком. Если модуль описан как один домен, а его профиль постепенно тянет в другой, сервер покажет расхождение (core_drift).
В зависимости от ваших задач NOUZ работает в трех режимах: от простого графа (**LUCA**) до строгой 5-уровневой иерархии (**SLOI**).
---
Как это работает
1. Вы описываете домены в config.yaml — какую область покрывает каждый домен и по каким признакам текста его узнавать.
2. Сервер превращает описания в векторы-эталоны (локально, через LM Studio или Ollama).
3. Каждая новая заметка проецируется на эти оси. Знак определяется содержанием, или вами.
Здесь важно разделять два слоя. artifact_signs описывают форму L5-артефактов: лог, источник, гипотеза, спецификация и так далее. Эти знаки не агрегируются в доменный знак L4. Лог остается логом, источник остается источником.
core_mix — не сумма типов артефактов. Это доменный профиль в SQLite-индексе. L4/L3/L2 получают его из собственного текста при recalc_signs, а родительские узлы могут затем получить усредненный профиль дочерних содержательных узлов через recalc_core_mix. core_drift появляется, когда сохраненный доменный профиль и текущий sign указывают на разные ведущие домены.
**Семантические мосты** находят связи между заметками из разных доменов, когда тексты близки по смыслу. Если для обеих заметок уже есть чанки, мост дополнительно проверяется лучшей парой из них и возвращает конкретный признак. Теги остаются явной пользовательской разметкой.
---
Быстрый старт
Без config.yaml сервер стартует в режиме **LUCA** — граф без семантики, работает сразу.
Чтобы включить семантический режим, создайте локальный конфиг из шаблона:
В Windows PowerShell:
Или из исходников:
Подключение к Claude Desktop, Cursor, Opencode или любому MCP-клиенту:
---
Инструменты MCP
| Инструмент | Зачем |
|------------|-------|
| suggest_metadata | Знак, уровень, мосты, дрифт-предупреждения |
| write_file | Записать заметку с YAML-разметкой |
| update_metadata | Обновить только YAML, не меняя текст заметки |
| read_file | Прочитать заметку + метаданные |
| calibrate_cores | Обновить векторы-эталоны ядер |
| recalc_signs | Пересчитать знаки всех заметок |
| recalc_core_mix | Пересчитать доменный профиль родителей по дочерним содержательным узлам |
| index_all | Переиндексировать всю базу; в PRIZMA/SLOI с with_embeddings=true также обновляет эмбеддинги файлов/чанков |