Skip to main content

MCP server for Obsidian — semantic knowledge graph with auto-classification, DAG hierarchy, and cross-domain bridge detection

Project description

NOUZ — Semantic MCP Server for Your Knowledge Base

Works with Obsidian, Logseq, and any directory of Markdown files.

Structure emerges from content.

MIT License Python 3.10+ MCP PyPI

🇷🇺 Русская версия


Why NOUZ

When your knowledge base grows, folders are no longer enough. Your AI agent sees files, but it does not understand how your documents, ideas, and materials connect.

NOUZ gives your agent semantic coordinates. Each note gets a domain sign, a hierarchy level, and connections to other notes. The domain is assigned from the file's content — or manually by you, if you prefer strict hierarchy.


What It Does

NOUZ sits between your note base and your AI agent. It helps turn scattered Markdown files into a graph that can be used through MCP:

  1. Automatic Classification (Semantics)
    You define "Cores" — base domains of your knowledge base, such as Systems Analysis, Data & Science, and Engineering. When you add a new note, NOUZ reads its text, compares vectors, and proposes a domain sign or a combination of domains.

  2. Bridge Discovery Between Domains
    The server builds a directed graph (DAG) and finds non-obvious intersections between disciplines:

    • Semantic bridges: two notes from different domains talk about the same thing.
    • Tag bridges: notes share hidden concepts at the tag level.
    • Analogies: notes play the same structural role in different sciences (e.g., "framework" in IT and "taxonomy" in biology).
  3. Base Evolution Tracking (Drift)
    NOUZ aggregates data bottom-up. If a module started in one domain while new notes gradually pull it into another, the server shows the divergence (core_drift).

Depending on your needs, NOUZ works in three modes: from a simple graph (LUCA) to a strict 5-level hierarchy (SLOI).


How It Works

  1. You describe domains in config.yaml — what each does, what language it speaks.
  2. The server turns descriptions into vector etalons (locally, via LM Studio or Ollama).
  3. Each new note is projected onto these axes. Sign is determined by content, or by you.
  4. L4 gets a domain profile from text classification, while L3/L2 aggregate core_mix from child nodes. If a module's sign diverges from core_mix, the server reports core_drift.

Three types of bridges find connections between notes from different domains: semantic (texts are close), tag (concepts overlap), analogy (similar role in the graph).


Quick Start

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

Without config.yaml, the server starts in LUCA mode — graph without semantics, works immediately.

To enable semantic mode, create a local config from the template:

cp config.template.yaml config.yaml

On Windows PowerShell:

Copy-Item config.template.yaml config.yaml

Or from source:

git clone https://github.com/KVANTRA-dev/NOUZ-MCP
cd NOUZ-MCP
pip install -r requirements.txt
cp config.template.yaml config.yaml
OBSIDIAN_ROOT=./vault python server.py

Connect to Claude Desktop, Cursor, OpenCode, or any MCP client:

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

Tool Purpose
suggest_metadata Sign, level, bridges, drift warnings
write_file Write a note with YAML frontmatter
read_file Read a note + metadata
calibrate_cores Update core reference vectors
recalc_signs Recalculate signs for all notes
recalc_core_mix Recalculate bottom-up aggregation
index_all Re-index the entire base
format_entity_compact Formula (children)[sign]{parents}
embed Get a vector for text
list_files List with filters by level, sign
get_children / get_parents Graph traversal
suggest_parents Find parents for an orphan
add_entity Create an entity in one step (auto sign, tags, parents)
process_orphans Auto-fill files without markup

Configuration

Minimal 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
  structural_bridge_threshold: 0.55
  parent_link_threshold: 0.55

artifact_signs:
  - sign: β
    name: Note
    text: Short note, observation, fragment.
  - sign: δ
    name: Concept
    text: Definition, concept, entity description.
  - sign: ζ
    name: Reference
    text: External source, documentation, link, citation.
  - sign: σ
    name: Log
    text: Session log, chronology, dialogue record.
  - sign: μ
    name: News
    text: News item, update, release note.
  - sign: λ
    name: Hypothesis
    text: Hypothesis, assumption, speculative idea.
  - sign: 🝕
    name: Specification
    text: Technical specification, instruction, requirements.

After setup, run calibrate_cores — the server creates reference vectors. Check pairwise cosines: mean-centered between different domains should be noticeably lower than raw. If all pairs are roughly equal — strengthen the differences in texts.

etalons are semantic domains compared through embeddings. artifact_signs describe the material type of L5 artifacts: note, concept, reference, log, news, hypothesis, or specification. This is a heuristic label, not a separate embedding etalon.

Real Calculation Example

Here are actual results for the S/D/E etalons using the text-embedding-granite-embedding-278m-multilingual model:

=== 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

Negative mean-centered values are a good result here: after subtracting the mean vector, domains are well-separated. Self-classification: S→99.4%, D→97.5%, E→96.9%.

Variable Default Description
OBSIDIAN_ROOT ./obsidian Path to vault
NOUZ_CONFIG (empty) Absolute path to config.yaml; if omitted, the server looks in the current working directory
EMBED_PROVIDER openai openai, lmstudio, ollama
EMBED_API_URL http://127.0.0.1:1234/v1 Embedding endpoint
EMBED_API_KEY (empty) API key, if needed
EMBED_MODEL (empty) Model name

Privacy

Component Local?
Embeddings (LM Studio / Ollama) ✅ Yes
Your notes ✅ Yes
NOUZ server ✅ Yes
AI agent context (Claude, ChatGPT) ❌ Goes to cloud

Everything critical stays on your machine.


Development

git clone https://github.com/KVANTRA-dev/NOUZ-MCP
cd NOUZ-MCP
pip install -e .
python test_server.py

Links

Research Context

NOUZ is an engineering MCP server; it does not require the theoretical material below. For readers interested in the research frame behind the project: Recursive Self-Organization as a Universal Principle.


MIT License © 2026 KVANTRA

Cosines are computed. Syntax changes. Semantics remains.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nouz_mcp-2.5.4.tar.gz (44.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nouz_mcp-2.5.4-py3-none-any.whl (36.6 kB view details)

Uploaded Python 3

File details

Details for the file nouz_mcp-2.5.4.tar.gz.

File metadata

  • Download URL: nouz_mcp-2.5.4.tar.gz
  • Upload date:
  • Size: 44.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.1

File hashes

Hashes for nouz_mcp-2.5.4.tar.gz
Algorithm Hash digest
SHA256 e2c2a566fff1b9fa40462fa82b6f3965a7151d2c845149cada82437ac2707222
MD5 8638a4c998d896318a552f7a04c7b073
BLAKE2b-256 4999279cbba359bcc299235cd1fd33e0479c7ea8b85d7cfdadbb8915dfb2b65d

See more details on using hashes here.

File details

Details for the file nouz_mcp-2.5.4-py3-none-any.whl.

File metadata

  • Download URL: nouz_mcp-2.5.4-py3-none-any.whl
  • Upload date:
  • Size: 36.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.1

File hashes

Hashes for nouz_mcp-2.5.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a3a811de8d05f9dff48dab432e4a895437f324e93c5ef3b77acc828356a77059
MD5 d927c4133f34b2c8d6deb4cc19afac03
BLAKE2b-256 ce72ca1e2a84cff7663f75b2e82bd2b332aa251f692cd6ec9ba2037808c8bfc5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page