Skip to main content
Glama

Nix

MCP server that exposes an Obsidian vault to development agents (Cursor, Claude Code, Copilot). Hybrid search, read and write to notes — with local and free embeddings and vector database. Reasoning stays on the client; Nix only delivers tools.

Transport: MCP stdio. With no subcommand, nix starts the server.

Why use it

  • The editor's agent finds ideas, not just words: semantic + lexical search across the vault.

  • Creates and updates notes in Obsidian format, without leaving Cursor.

  • Everything runs on your machine. No vault snippet goes to an embedding API.

  • You control when the index changes: no background watcher.

Requirements

  • Python 3.11+ on the PATH

  • An Obsidian vault (.md notes)

  • ~2.3 GB free on first sync (download of the BAAI/bge-m3 model)

Installation

There are two paths. Both create .venv, install the package, and trigger nix init (asks for the vault path, or accepts --vault).

In your project (user)

  1. Download the latest release (nix-x.y.z.zip).

  2. Extract it at the root of the workspace and rename the folder to nix (the zip comes as nix-1.0.0/).

  3. Run the installer inside that folder:

cd nix
setup.bat
:: ou, se já souber o vault:
setup.bat --vault "C:/Users/voce/Vault"
cd nix
chmod +x setup.sh
./setup.sh
# ou: ./setup.sh --vault "$HOME/Vault"

On Windows use forward slashes / in the vault path (C:/Users/you/Vault). A backslash breaks the TOML.

Then register the server in the editor — see MCP client registration.

From the repository (developer)

Clone the repository and run the same installer at the root:

setup.bat
:: ou: setup.bat --vault "C:/Users/voce/Vault"
chmod +x setup.sh
./setup.sh
# ou: ./setup.sh --vault "$HOME/Vault"

Manual installation (equivalent to the installer, with development dependencies):

python -m venv .venv
# Windows (Git Bash): source .venv/Scripts/activate
# Linux/macOS:        source .venv/bin/activate

pip install -r requirements-dev.txt
pip install -e .
python -m nix init                # ou: python -m nix init --vault "C:/Users/voce/Vault"

nix and python -m nix are equivalent after activating the venv. Cursor does not inherit the terminal's PATH — in MCP always use the Python from .venv.

MCP client registration

The client starts the process. The IDE does not inherit the terminal's PATH: the nix command from the venv is not found and the connection closes ('nix' is not recognized).

Point to the virtual environment's Python. Reload the MCP servers after saving.

Cursor.cursor/mcp.json in the workspace:

{
  "mcpServers": {
    "nix": {
      "command": "${workspaceFolder}/nix/.venv/Scripts/python.exe",
      "args": ["-m", "nix"]
    }
  }
}

Adjust command as needed:

Where Nix is located

Windows

Linux / macOS

nix/ folder inside the project

${workspaceFolder}/nix/.venv/Scripts/python.exe

${workspaceFolder}/nix/.venv/bin/python

The workspace is the Nix repo

${workspaceFolder}/.venv/Scripts/python.exe

${workspaceFolder}/.venv/bin/python

The same pattern (path/to/python + ["-m", "nix"]) applies to Claude Code and Copilot. stdout is the MCP protocol: logs only in ~/.nix/logs/nix.log.

Getting started

After init (the installer already triggers this):

# Windows
.venv\Scripts\python.exe -m nix doctor
.venv\Scripts\python.exe -m nix sync
.venv\Scripts\python.exe -m nix status

# Linux / macOS
.venv/bin/python -m nix doctor
.venv/bin/python -m nix sync
.venv/bin/python -m nix status

The first sync (or any operation that embeds) downloads the BAAI/bge-m3 model (~2.3 GB) from Hugging Face. On subsequent runs, only what changed is reprocessed.

New notes without a folder in the path go to vault.default_new_note_folder (default Inbox).

Indexing

This is the central rule:

Changes made outside Nix (Obsidian, editor) are not indexed on their own. Changes made by the MCP tools update the index in the same operation.

After editing in Obsidian, run nix sync or ask the agent for sync_index. If vectorization of a write fails, the file remains in the vault (source of truth) and a nix sync fixes the index.

CLI

Command

Function

nix

Starts the MCP stdio server

nix init [--vault PATH] [--force]

Creates the configuration and stores the vault path

nix sync [--full] [--dry-run] [--json]

Syncs the index (never automatic)

nix status [--json]

Notes, chunks, last sync and lag

nix doctor [--json]

Environment, config and index diagnostics

MCP tools

Twelve tools, defined in src/nix/core/tools/registry.py. Notes also appear as the nix://note/{+rel_path} resource.

Tool

Usage

search_notes

Hybrid search (semantic + lexical), with folder, tag and date filters

read_note

Reads the entire note

list_notes

Lists indexed notes (folder, tag)

get_linked_notes

Navigates wikilinks (outgoing, incoming or both)

create_note

Creates a note and indexes it immediately (write-through)

append_to_note

Appends content and reindexes

update_note

replace requires confirm=true; patch appends

delete_note

Removes note and index; requires confirm=true

sync_index

Manual sync (full, dry_run)

index_status

Counts, last sync and lag

vault_insights

Orphans, duplicates, link suggestions or summary

remember

Stores a lasting fact in vault.longterm_folder

Configuration

File (first found): $NIX_CONFIG./nix.toml~/.nix/config.toml. NIX_SECTION__FIELD variables override the file (e.g.: NIX_VAULT__PATH).

Useful points of the TOML generated by init:

Key

Default

Function

vault.path

Obsidian root folder

vault.exclude

.obsidian, .trash, Templates, Privado

Ignored folders

vault.default_new_note_folder

Inbox

Destination for notes without a folder in the path

vault.longterm_folder

Nix/Memória

Destination for the remember tool

index.data_dir

~/.nix/data

SQLite + Chroma (outside the vault)

logging.file

~/.nix/logs/nix.log

Logs; queries only enter if log_prompts = true

Documentation

  • PRD.md — product, requirements and business rules

  • ARCHITECTURE.md — components, indexing, retrieval and MCP stdio

-
license - not tested
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…

  • Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.

  • Token-efficient MCP memory for Markdown vaults. Tiered search, GraphRAG, AI memories.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/paulocesaaars/nix'

If you have feedback or need assistance with the MCP directory API, please join our Discord server