
Nouz
io.github.SemiotronikaPublished by GitHub account Semiotronikav4.0.0Updated Oct 24, 2026
Semantic knowledge engine for Obsidian with auto-classification and DAG hierarchy
Overview
Turns a Markdown vault into a semantic graph, suggesting domain signs, hierarchy links, and drift warnings for notes.
- What you can do
- NOUZ sits between a Markdown knowledge base and an AI agent, building a directed acyclic hierarchy graph over notes. It classifies notes against user-defined domain cores using embeddings, suggests parents for orphans, finds semantic bridges between notes from different domains, and reports core drift when a note's profile diverges from its declared sign. Tools include suggest_metadata, write_file, update_metadata, read_file, calibrate_cores, recalc_signs, recalc_core_mix, index_all, embed, chunk_text, chunk_file, search_chunks, list_files, get_children, get_parents, suggest_parents, add_entity, and process_orphans.
- When to use it
- Useful when you keep notes in Obsidian, Logseq, or plain Markdown directories and want an assistant to classify them, propose hierarchy, surface cross-domain links, and flag notes whose content no longer matches their label. Without a config file it starts in a simple graph-only mode.
- Requirements
- Local Python package installed via pip (nouz-mcp), run over stdio. Needs OBSIDIAN_ROOT pointing at the vault; optional NOUZ_CONFIG, NOUZ_DATABASE_NAME, NOUZ_DATABASE_PATH. Semantic features need an embedding endpoint via EMBED_PROVIDER, EMBED_API_URL, EMBED_MODEL, and EMBED_ENABLED, typically a local LM Studio or Ollama instance.
Installation
In SourceWeft
- Open Nouz in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
NOUZ — Семантический MCP-сервер для вашей базы знаний
Структура появляется из содержания.
Работает с Obsidian, Logseq и любыми директориями Markdown-файлов.
[MIT License] [Python 3.10+] [MCP SDK v2] [PyPI]
NOUZ работает на MCP Python SDK v2.
Зачем нужен Nouz
NOUZ выступает прослойкой между вашей базой заметок и AI-агентом. Он помогает превратить разрозненные Markdown-файлы в граф, с которым удобно работать и вам, и агенту:
-
Автоматическая классификация (Семантика) Вы задаете "Ядра" — базовые домены вашей базы. Когда вы добавляете новую заметку, NOUZ читает ее текст, сравнивает векторы и предлагает доменный знак или комбинацию доменов.
-
Поиск связей между заметками Сервер строит направленный структурный граф:
hierarchyдержится как DAG без циклов, а дополнительные смысловые связи живут рядом:- Семантические мосты: две заметки из разных доменов указывают на одну и ту же идею.
- Явные теговые связи можно хранить вручную в YAML.
-
Отслеживание эволюции базы (Дрифт) NOUZ хранит доменный профиль содержательных узлов и может сравнить его с заявленным знаком. Если модуль описан как один домен, а его профиль постепенно тянет в другой, сервер покажет расхождение (
core_drift).
В зависимости от ваших задач NOUZ работает в трех режимах: от простого графа (LUCA) до строгой 5-уровневой иерархии (SLOI).
Как это работает
- Вы описываете домены в
config.yaml— какую область покрывает каждый домен и по каким признакам текста его узнавать. - Сервер превращает описания в векторы-эталоны (локально, через LM Studio или Ollama).
- Каждая новая заметка проецируется на эти оси. Знак определяется содержанием, или вами.
Здесь важно разделять два слоя. 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
Конфигурация
Минимальный config.yaml:
После настройки запустите calibrate_cores — сервер создаст эталонные векторы.
Проверьте попарные косинусы: mean-centered между разными доменами должен быть
заметно ниже исходного. Если все пары примерно одинаковые — усильте различия в текстах.
Отдельную проверку эталонов можно запустить из установленного пакета:
nouz-calc-etalons --config config.yaml.
etalons — это смысловые домены, которые сравниваются через эмбеддинги.
artifact_signs — тип материала для артефактов L5: заметка, концепт, ссылка, лог, обновление, гипотеза или спецификация. Это эвристическая метка. Домены обычно обозначаются заглавными буквами (S/D/E), а типы материала — строчными (n/c/r/l/u/h/s); их можно заменить в конфиге на любые другие значения. При необходимости для любого типа можно добавить keywords: тогда сервер будет использовать ваши слова для эвристики вместо встроенного RU/EN набора.
Реальный пример расчёта
Вот фактические результаты для эталонов S/D/E с моделью text-embedding-granite-embedding-278m-multilingual:
Отрицательные mean-centered значения здесь хороший результат: после вычитания среднего вектора домены хорошо расходятся. Smoke test эталонов текущим nouz-calc-etalons: S→99.6%, D→98.5%, E→98.1%. Это не оценка всей базы, а быстрая проверка, что каждый эталон после того же центрирования уверенно возвращается к своему знаку.
Приватность
Всё критичное остаётся на вашей машине.
Разработка
Ссылки
- 🌐 semiotronika.ru
- 📦 PyPI
- 🗂️ Glama Registry
- 🐙 GitHub
MIT License © 2026 Maria Belkina
Косинусы считаются. Синтаксис меняется. Семантика остаётся.
Source: README.md at commit 8ac3cde
Tools
0Version history
1- v4.0.0LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts