Локальный семантический граф и MCP-сервер для Markdown и Obsidian
- ✓Open-source license (MIT)
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- ✓Documented (README)
claude mcp add nouz-mcp -- python -m nouz-mcp{
"mcpServers": {
"nouz-mcp": {
"command": "python",
"args": ["-m", "compileall"]
}
}
}Resumen de MCP Servers
# NOUZ — Семантический MCP-сервер для вашей базы знаний
> *Структура появляется из содержания.*
Работает с Obsidian, Logseq и любыми директориями Markdown-файлов.
[](LICENSE)
[](https://python.org)
[](https://modelcontextprotocol.io)
[](https://pypi.org/project/nouz-mcp/)
NOUZ работает на MCP Python SDK v2.
🇬🇧 [English version](README_EN.md)
---
## Зачем нужен 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` указывают на разные ведущие домены.
**Семантические мосты** находят связи между заметками из разных доменов, когда тексты близки по смыслу. Если для обеих заметок уже есть чанки, мост дополнительно проверяется лучшей парой из них и возвращает конкретный признак. Теги остаются явной пользовательской разметкой.
---
## Быстрый старт
```bash
pip install nouz-mcp
OBSIDIAN_ROOT=/path/to/vault nouz-mcp
```
Без `config.yaml` сервер стартует в режиме **LUCA** — граф без семантики, работает сразу.
Чтобы включить семантический режим, создайте локальный конфиг из шаблона:
```bash
cp config.template.yaml config.yaml
```
В Windows PowerShell:
```powershell
Copy-Item config.template.yaml config.yaml
```
Или из исходников:
```bash
git clone https://github.com/Semiotronika/NOUZ-MCP
cd NOUZ-MCP
pip install -r requirements.txt
cp config.template.yaml config.yaml
OBSIDIAN_ROOT=./vault python server.py
```
Подключение к Claude Desktop, Cursor, Opencode или любому MCP-клиенту:
```json
{
"mcpServers": {
"nouz": {
"command": "nouz-mcp",
"env": {
"OBSIDIAN_ROOT": "/path/to/vault",
"NOUZ_CONFIG": "/absolute/path/to/config.yaml",
"EMBED_API_URL": "http://127.0.0.1:1234/v1"
}
}
}
}
```
---
## Инструменты 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` также обновляет эмбеддинги файлов/чанков |
| `embed` | Получить вектор для текста в PRIZMA/SLOI |
| `chunk_text` | Разрезать Markdown-текст на стабильные чанки в PRIZMA/SLOI |
| `chunk_file` | Разрезать тело одной заметки на стабильные чанки в PRIZMA/SLOI |
| `search_chunks` | Искать по сохранённым chunk embeddings в PRIZMA/SLOI; по умолчанию снижает анизотропию |
| `list_files` | Список с фильтрами по уровню, знаку |
| `get_children` | Пройти вниз по графу |
| `get_parents` | Пройти вверх по графу |
| `suggest_parents` | Найти родителей для сироты |
| `add_entity` | Создать сущность в один шаг (автоматический знак и иерархия, теги только явно) |
| `process_orphans` | Автозаполнение файлов без разметки |
---
## Конфигурация
Минимальный `config.yaml`:
```yaml
mode: prizma
etalons:
- sign: S
name: Systems Analysis
text: >
Methodology for analysing complex objects: feedback loops,
emergent properties, self-regulation, bifurcation points.
Cybernetics, synergetics, dissipative structures, catastrophe
theory, autopoiesis — tools for understanding how the whole
exceeds the sum of its parts. Not data and not code — a way
of thinking about how parts form a whole and why systems
behave non-linearly.
- sign: D
name: Data & Science
text: >
Physics and cosmology: from subatomic particles to the large-scale
structure of the Universe. Lagrangians, curvature tensors, scattering
cross-sections, quarks, bosons, fermions, plasma, vacuum fluctuations,
cosmic microwave background, cosmological constant, decoherence.
Pure science about the nature of matter, energy and spacetime.
- sign: E
name: Engineering
text: >
Software engineering, machine learning and infrastructure: writing
and debugging code, deployment, containerisation, neural networks,
inference, tokenisation, data serialisation, microservices, CI/CD,
automated testing, refactoring, Git, Docker, Kubernetes, APIs.
The practical discipline of building computational systems from
architecture to production.
thresholds:
sign_spread: 0.05
confident_spread: 60.0
pattern_second_sign_threshold: 30.0
semantic_bridge_threshold: 0.55
parent_link_threshold: 0.55
artifact_signs:
- sign: n
name: Note
text: Short note, observation, fragment.
- sign: c
name: Concept
text: Definition, concept, entity description.
- sign: r
name: Reference
text: External source, documentation, link, citation.
- sign: l
name: Log
text: Session log, chronology, dialogue record.
- sign: u
name: Update
text: Update, release note, changelog entry.
- sign: h
name: Hypothesis
text: Hypothesis, assumption, speculative idea.
- sign: s
name: Specification
text: Technical specification, instruction, requirements.
```
После настройки запустите `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`:
```text
=== Pairwise Cosine (raw) ===
S↔D: 0.5894 S↔E: 0.5862 D↔E: 0.6022
=== Pairwise Cosine (mean-centered) ===
S↔D: -0.5059 S↔E: -0.5117 D↔E: -0.4822
```
Отрицательные mean-centered значения здесь хороший результат: после вычитания среднего вектора домены хорошо расходятся. Smoke test эталонов текущим `nouz-calc-etalons`: S→99.6%, D→98.5%, E→98.1%. Это не оценка всей базы, а быстрая проверка, что каждый эталон после того же центрирования уверенно возвращается к своему знаку.
| Переменная | По умолчанию | Описание |
| --- | --- | --- |
| `OBSIDIAN_ROOT` | `./obsidian` | Путь к хранилищу |
| `NOUZ_CONFIG` | *(пусто)* | Абсолютный путь к `config.yaml`; если не задан, сервер ищет конфиг в текущей директории |
| `NOUZ_DATABASE_NAME` | `obsidian_kb.db` | Имя файла SQLite-кэша внутри `OBSIDIAN_ROOT`; удобно для изолированных проверок, например `obsidian_kb.public.db` |
| `NOUZ_DATABASE_PATH` | *(пусто)* | Полный путь к SQLite-кэшу; имеет приоритет над `NOUZ_DATABASE_NAME` |
| `EMBED_PROVIDER` | `openai` | `openai`, `lmstudio`, `ollama` |
| `EMBED_API_URL` | `http://127.0.0.1:1234/v1` | Эндпоинт для эмбеддингов |
| `EMBED_API_KEY` | *(пусто)* | API-ключ, если нужен |
| `EMBED_MODEL` | *(пусто)* | Имя модели |
---
## Приватность
| Компонент | Локально? |
|-----------|-----------|
| Эмбеддинги (LM Studio / Ollama) | ✅ Да |
| Ваши заметки | ✅ Да |
| Сервер NOUZ | ✅ Да |
| Контекст AI-агента (Claude, ChatGPT) | ❌ Уходит в облако |
Всё критичное остаётся на вашей машине.
---
## Разработка
```bash
git clone https://github.com/Semiotronika/NOUZ-MCP
cd NOUZ-MCP
pip install -e Lo que la gente pregunta sobre NOUZ-MCP
¿Qué es Semiotronika/NOUZ-MCP?
+
Semiotronika/NOUZ-MCP es mcp servers para el ecosistema de Claude AI. Локальный семантический граф и MCP-сервер для Markdown и Obsidian Tiene 18 estrellas en GitHub y su última actualización registrada es del 2026-09-02.
¿Cómo se instala NOUZ-MCP?
+
Puedes instalar NOUZ-MCP clonando el repositorio (https://github.com/Semiotronika/NOUZ-MCP) o siguiendo las instrucciones del README en GitHub. ClaudeWave también te ofrece bloques de instalación rápida en esta misma página.
¿Es seguro usar Semiotronika/NOUZ-MCP?
+
Nuestro agente de seguridad ha analizado Semiotronika/NOUZ-MCP y le ha asignado un Trust Score de 95/100 (tier: Verified). Revisa el desglose completo de comprobaciones superadas y flags en esta página.
¿Quién mantiene Semiotronika/NOUZ-MCP?
+
Semiotronika/NOUZ-MCP es mantenido por Semiotronika. La última actividad registrada en GitHub es del 2026-09-02, con 1 issues abiertos.
¿Hay alternativas a NOUZ-MCP?
+
Sí. En ClaudeWave puedes explorar mcp servers similares en /categories/mcp, ordenados por popularidad o actividad reciente.
Despliega NOUZ-MCP en tu cloud
Lleva este repo a producción en minutos. Cada plataforma genera su propio entorno con variables de entorno editables.
¿Mantienes este repo? Añade un badge a tu README
Pega el badge en tu README de GitHub para mostrar que está auditado por ClaudeWave. Cada badge enlaza de vuelta a esta página y muestra el Trust Score actual.
[](https://claudewave.com/repo/semiotronika-nouz-mcp)<a href="https://claudewave.com/repo/semiotronika-nouz-mcp"><img src="https://claudewave.com/api/badge/semiotronika-nouz-mcp" alt="Featured on ClaudeWave: Semiotronika/NOUZ-MCP" width="320" height="64" /></a>Más MCP Servers
Fair-code workflow automation platform with native AI capabilities. Combine visual building with custom code, self-host or cloud, 400+ integrations.
User-friendly AI Interface (Supports Ollama, OpenAI API, ...)
An open-source AI agent that brings the power of Gemini directly into your terminal.
Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
The fastest path to AI-powered full stack observability, even for lean teams.
🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl!