mcpField
N
Nouz

Nouz

ローカル
github.com/Semiotronikaメモリ・ナレッジ242 週間前に更新

Nouz について

Nouzは、ObsidianやLogseqなどのMarkdownノートをナビゲート可能な知識グラフに整理するMCPサーバーです。ノートを管理する人やAIエージェント向けに、意味分類、ドメイン間の関連付け、複数の階層モードを提供します。

主な機能

  1. 01設定した意味ドメインによるノート分類
  2. 02有向非巡回の階層グラフ構築
  3. 03ドメインをまたぐ意味的な関連の検出
  4. 04ドメインプロファイルのずれの追跡
  5. 05ノートとメタデータの読み書き・更新
  6. 06テキストチャンクのインデックス作成と検索

活用シーン

  1. 01Obsidianの保管庫を意味ドメイン別に整理
  2. 02異なるドメイン間の関連ノートを発見
  3. 03孤立したノートの特定と親候補の提案
  4. 04ノードのドメインプロファイルの変化を検知

MCP 対応

MCPサーバーは、ノートの読み書きやメタデータ更新、インデックス作成、分類、グラフ探索、チャンク検索のツールを公開します。Claude Desktop、Cursor、OpencodeなどのMCPクライアントから接続できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"semiotronika-nouz": {
"command": "uvx",
"args": [
"nouz-mcp"
],
"env": {
"OBSIDIAN_ROOT": "<OBSIDIAN_ROOT>",
"NOUZ_CONFIG": "<NOUZ_CONFIG>",
"NOUZ_DATABASE_NAME": "<NOUZ_DATABASE_NAME>",
"NOUZ_DATABASE_PATH": "<NOUZ_DATABASE_PATH>",
"EMBED_ENABLED": "<EMBED_ENABLED>",
"EMBED_PROVIDER": "<EMBED_PROVIDER>",
"EMBED_MODEL": "<EMBED_MODEL>",
"EMBED_API_URL": "<EMBED_API_URL>"
}
}
}
}
起動コマンドuvx nouz-mcp
設定が必要な環境変数
OBSIDIAN_ROOTPath to Obsidian vault
NOUZ_CONFIGAbsolute path to config.yaml; if omitted, server looks in current working directory
NOUZ_DATABASE_NAMESQLite cache filename inside OBSIDIAN_ROOT
NOUZ_DATABASE_PATHFull SQLite cache path; takes precedence over NOUZ_DATABASE_NAME
EMBED_ENABLEDEnable embedding-based features
EMBED_PROVIDEREmbedding provider: openai-compatible endpoint or ollama
EMBED_MODELEmbedding model name
EMBED_API_URLEmbedding API endpoint

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypinouz-mcp4.0.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

NOUZ — ナレッジベースのためのセマンティック MCP サーバー

構造は内容から生まれます。

Obsidian、Logseq、およびあらゆる Markdown ファイルのディレクトリで動作します。

MIT License Python 3.10+ MCP SDK v2 PyPI

NOUZ は MCP Python SDK v2 で動作します。

🇬🇧 英語版


Nouz が必要な理由

NOUZ は、ノートのナレッジベースと AI エージェントをつなぐレイヤーとして機能します。散在する Markdown ファイルを、あなたにもエージェントにも扱いやすいグラフに変換します。

  1. 自動分類(セマンティクス) 「コア」として、ナレッジベースの基本ドメインを設定します。新しいノートを追加すると、NOUZ はテキストを読み取り、ベクトルを比較して、ドメインの印またはドメインの組み合わせを提案します。

  2. ノート間のつながりを検索 サーバーは有向の構造グラフを構築します。hierarchy は循環のない DAG として維持され、追加の意味的なつながりはその隣に保持されます。

    • セマンティックブリッジ: 異なるドメインの2つのノートが、同じアイデアを指し示します。
    • 明示的なタグによるつながりは、YAML で手動管理できます。
  3. ナレッジベースの変化を追跡(ドリフト) NOUZ は内容のあるノードのドメインプロファイルを保存し、それを設定された印と比較できます。モジュールが1つのドメインとして記述されていても、そのプロファイルが徐々に別のドメインへ引き寄せられている場合、サーバーは差異(core_drift)を表示します。

タスクに応じて、NOUZ はシンプルなグラフ(LUCA)から、厳格な5レベル階層(SLOI)まで、3つのモードで動作します。


仕組み

  1. config.yaml で各ドメインがカバーする領域と、テキストを識別するための特徴を説明します。
  2. サーバーはその説明を基準ベクトルに変換します(ローカル、LM Studio、または Ollama 経由)。
  3. 新しいノートはそれらの軸に投影されます。印は内容、またはあなたによって決まります。

ここでは、2つのレイヤーを区別することが重要です。artifact_signs は、ログ、ソース、仮説、仕様など、L5 アーティファクトの形式を表します。これらの印は L4 のドメイン印には集約されません。ログはログのまま、ソースはソースのままです。

core_mix はアーティファクトタイプの合計ではありません。SQLite インデックスにあるドメインプロファイルです。L4/L3/L2 は recalc_signs の際に自身のテキストからこれを取得し、親ノードはその後、recalc_core_mix を通じて、内容のある子ノードの平均プロファイルを取得できます。保存されたドメインプロファイルと現在の sign が異なる主要ドメインを示すと、core_drift が発生します。

セマンティックブリッジは、テキストの意味が近い場合に、異なるドメインのノート間のつながりを見つけます。両方のノートにチャンクがある場合、チャンク同士の最良の組み合わせによってブリッジをさらに検証し、具体的な特徴を返します。タグは、ユーザーが明示的に付与するラベルとして扱われます。


クイックスタート

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 Maria Belkina

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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。