PluginBench
MCP Server
Maintained
MIT

Nouz MCP Server

io.github.Semiotronika/NOUZ-MCP

Semantic knowledge engine that auto-classifies and organizes Markdown notes into DAG hierarchies for AI agents.

What is the Nouz MCP server?

NOUZ is a semantic MCP server that transforms scattered Markdown files in Obsidian, Logseq, or any directory into a structured knowledge graph. It automatically classifies notes into user-defined semantic domains, detects relationships between notes, and tracks domain drift—enabling AI agents to navigate and understand your knowledge base intelligently.

NOUZ bridges your note vault and AI agents by building a directed acyclic graph (DAG) from Markdown files. It uses vector embeddings to auto-classify notes into semantic domains you define, finds semantic bridges between notes across domains, and monitors whether notes drift from their declared domain. You can run it in three modes: LUCA (simple graph), PRIZMA (with embeddings and chunking), or SLOI (strict 5-level hierarchy). All embeddings run locally via LM Studio or Ollama, keeping your notes private.

How to install Nouz

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • OBSIDIAN_ROOT

    Path to Obsidian vault

  • NOUZ_CONFIG

    Absolute path to config.yaml; if omitted, server looks in current working directory

  • NOUZ_DATABASE_NAME

    SQLite cache filename inside OBSIDIAN_ROOT

  • NOUZ_DATABASE_PATH

    Full SQLite cache path; takes precedence over NOUZ_DATABASE_NAME

  • EMBED_ENABLED

    Enable embedding-based features

  • EMBED_PROVIDER

    Embedding provider: openai-compatible endpoint or ollama

  • EMBED_MODEL

    Embedding model name

  • EMBED_API_URL

    Embedding API endpoint

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "NOUZ-MCP": {
      "command": "uvx",
      "args": [
        "nouz-mcp"
      ],
      "env": {
        "OBSIDIAN_ROOT": "<YOUR_OBSIDIAN_ROOT>",
        "NOUZ_CONFIG": "<YOUR_NOUZ_CONFIG>",
        "NOUZ_DATABASE_NAME": "<YOUR_NOUZ_DATABASE_NAME>",
        "NOUZ_DATABASE_PATH": "<YOUR_NOUZ_DATABASE_PATH>",
        "EMBED_ENABLED": "<YOUR_EMBED_ENABLED>",
        "EMBED_PROVIDER": "<YOUR_EMBED_PROVIDER>",
        "EMBED_MODEL": "<YOUR_EMBED_MODEL>",
        "EMBED_API_URL": "<YOUR_EMBED_API_URL>"
      }
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • suggest_metadata — Propose sign, level, semantic bridges, and drift warnings for a note
  • write_file — Write a note with YAML metadata
  • update_metadata — Update only YAML frontmatter without changing note text
  • read_file — Read a note and its metadata
  • calibrate_cores — Update semantic domain reference vectors
  • recalc_signs — Recalculate signs for all notes
  • recalc_core_mix — Recalculate domain profile of parent nodes from children
  • index_all — Reindex entire vault; optionally update embeddings and chunks
  • embed — Get vector embedding for text
  • chunk_text — Split Markdown text into stable chunks
  • chunk_file — Split a note into stable chunks
  • search_chunks — Search by saved chunk embeddings
  • list_files — List files with filters by level and sign
  • get_children — Traverse down the graph
  • get_parents — Traverse up the graph
  • suggest_parents — Find parent nodes for orphaned notes
  • add_entity — Create entity in one step with automatic sign and hierarchy
  • process_orphans — Auto-populate metadata for unmarked files

Use cases

  • Auto-classify new notes into semantic domains and detect when they drift from their declared category
  • Find hidden connections between notes across different domains by comparing semantic similarity
  • Build and maintain a hierarchical knowledge graph (DAG) that both you and AI agents can navigate and reason over
  • Organize large Markdown vaults (Obsidian, Logseq) without manual tagging by leveraging local embeddings
  • Track the evolution of your knowledge base and identify when note content contradicts its metadata

Nouz MCP server FAQ

What does NOUZ do?

NOUZ is a semantic knowledge engine that reads your Markdown notes, classifies them into domains you define (via embeddings), builds a directed acyclic graph, finds semantic bridges between notes, and detects when notes drift from their declared domain. It exposes this structure to AI agents via MCP tools.

Is NOUZ free?

Yes. NOUZ is open-source under the MIT License and available on PyPI. You only need a local embedding model (LM Studio, Ollama, or OpenAI API).

How do I install NOUZ in Cursor or Claude Desktop?

Install via pip: `pip install nouz-mcp`. Then add to your MCP config (e.g., `~/.cursor/mcp.json` or Claude Desktop config) with `OBSIDIAN_ROOT` pointing to your vault and optionally `NOUZ_CONFIG` for a config file.

Do I need to authenticate or pay for embeddings?

No. NOUZ runs embeddings locally via LM Studio or Ollama by default (free, private). You can optionally use OpenAI or other APIs, but local is the default and recommended.

What modes does NOUZ support?

Three modes: LUCA (simple graph, no semantics), PRIZMA (with embeddings and chunking), and SLOI (strict 5-level hierarchy). Start with LUCA (no config needed) and upgrade by adding `config.yaml`.

Are my notes private?

Yes. Your notes, embeddings, and the NOUZ server all run locally. Only the AI agent context (Claude, ChatGPT) leaves your machine if you send it to the cloud.

README (reference)

Source of truth, from the repository.

NOUZ — Семантический MCP-сервер для вашей базы знаний

Структура появляется из содержания.

Работает с Obsidian, Logseq и любыми директориями Markdown-файлов.

MIT License Python 3.10+ MCP SDK v2 PyPI

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 указывают на разные ведущие домены.

Семантические мосты находят связи между заметками из разных доменов, когда тексты близки по смыслу. Если для обеих заметок уже есть чанки, мост дополнительно проверяется лучшей парой из них и возвращает конкретный признак. Теги остаются явной пользовательской разметкой.


Быстрый старт

pip install nouz-mcp
OBSIDIAN_ROOT=/path/to/vault nouz-mcp

Без config.yaml сервер стартует в режиме LUCA — граф без семантики, работает сразу.

Чтобы включить семантический режим, создайте локальный конфиг из шаблона:

cp config.template.yaml config.yaml

В Windows PowerShell:

Copy-Item config.template.yaml config.yaml

Или из исходников:

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-клиенту:

{
  "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:

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:

=== 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_NAMEobsidian_kb.dbИмя файла SQLite-кэша внутри OBSIDIAN_ROOT; удобно для изолированных проверок, например obsidian_kb.public.db
NOUZ_DATABASE_PATH(пусто)Полный путь к SQLite-кэшу; имеет приоритет над NOUZ_DATABASE_NAME
EMBED_PROVIDERopenaiopenai, lmstudio, ollama
EMBED_API_URLhttp://127.0.0.1:1234/v1Эндпоинт для эмбеддингов
EMBED_API_KEY(пусто)API-ключ, если нужен
EMBED_MODEL(пусто)Имя модели

Приватность

КомпонентЛокально?
Эмбеддинги (LM Studio / Ollama)✅ Да
Ваши заметки✅ Да
Сервер NOUZ✅ Да
Контекст AI-агента (Claude, ChatGPT)❌ Уходит в облако

Всё критичное остаётся на вашей машине.


Разработка

git clone https://github.com/Semiotronika/NOUZ-MCP
cd NOUZ-MCP
pip install -e .
python -m compileall -q nouz_mcp pytest_smoke.py scripts
python -m pytest -q
python test_server.py

Ссылки

MIT License © 2026 Semiotronika

Косинусы считаются. Синтаксис меняется. Семантика остаётся.

<!-- mcp-name: io.github.Semiotronika/NOUZ-MCP -->

Related MCP servers

LILINZA logo

LINZA

Active

Local-first MCP sidecar for Markdown artifacts, review intents, and supervised knowledge growth.

3
Python
MIT
View repository →

AI-powered email inbox and sending with attachments, search, live events, and webhooks.

109
PHP
MIT
View repository →

Pay-per-use web extract, token prices, and wallet balances via x402 USDC micropayments.

View repository →

SomaCheck returns proposition-specific Aligned or Unaligned plus model confidence.

Open-source MCP proxy for AI agent access control with CEL policies, RBAC, and audit.

View repository →

Enable AI agents to compile TeX files with LaTeX inside a Docker container.

3
Python
AGPL-3.0
View repository →