# LINZA

A local MCP server that indexes a Markdown folder and hands the agent topics, links and memory candidates. Writes wait for review.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 5
- Author: Semiotronika
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/Semiotronika/LINZA-MCP
- Updated: 2026-10-16
- HTML: https://affpapa.org/en/nevibecode/mcp/linza

## What it does

Point LINZA at a folder of notes and it builds a SQLite database next to it, at `.linza/linza.db`. The agent gets a working picture: how many notes were found, whether the index is fresh, which broad areas show up, which material shapes repeat, where documents look connected, and what might matter in later sessions. Indexing leaves your files alone.

Every change the server proposes goes through review. A dry-run comes first, then your confirmation, and only then a write into `.linza` or a compact YAML block. Approvals can be taken back: the record is marked revoked, stops counting as an active example, and stays in the history. The `teach` and `grow` steps pick good accepted examples and suggest similar intents, naming the rules that put them in the batch.

Python 3.10+ is required. A plain install covers Markdown, TXT, JSON, DOCX and XLSX; PDF reading needs the `pypdf` extra. Semantic search, the topic map and link suggestions depend on an embedding server, so without one those tools sit idle. Set the folder through `LINZA_VAULT` — leave it out and the server falls back to `./vault`, which is a poor default for real notes.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `LINZA_VAULT`, `LINZA_EMBED_PROVIDER`, `LINZA_EMBED_URL`, `LINZA_EMBED_MODEL`, `LINZA_EMBED_KEY`, `LINZA_BRIDGE_THRESHOLD`, `LINZA_MAX_BRIDGE_PAIRS`, `LINZA_DEFAULT_PROFILE`, `LINZA_LANGUAGE` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env LINZA_VAULT=<LINZA_VAULT> --env LINZA_EMBED_PROVIDER=<LINZA_EMBED_PROVIDER> --env LINZA_EMBED_URL=<LINZA_EMBED_URL> --env LINZA_EMBED_MODEL=<LINZA_EMBED_MODEL> --env LINZA_EMBED_KEY=<LINZA_EMBED_KEY> --transport stdio linza -- uvx linza-mcp
```
Replace <…> with your own values. 4 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from linza-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add linza --env LINZA_VAULT=<LINZA_VAULT> --env LINZA_EMBED_PROVIDER=<LINZA_EMBED_PROVIDER> --env LINZA_EMBED_URL=<LINZA_EMBED_URL> --env LINZA_EMBED_MODEL=<LINZA_EMBED_MODEL> --env LINZA_EMBED_KEY=<LINZA_EMBED_KEY> -- uvx linza-mcp
```
Replace <…> with your own values. 4 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from linza-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "linza": {
            "command": "uvx",
            "args": [
                "linza-mcp"
            ],
            "env": {
                "LINZA_VAULT": "<LINZA_VAULT>",
                "LINZA_EMBED_PROVIDER": "<LINZA_EMBED_PROVIDER>",
                "LINZA_EMBED_URL": "<LINZA_EMBED_URL>",
                "LINZA_EMBED_MODEL": "<LINZA_EMBED_MODEL>",
                "LINZA_EMBED_KEY": "<LINZA_EMBED_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values. 4 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from linza-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "linza": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "linza-mcp"
            ],
            "env": {
                "LINZA_VAULT": "<LINZA_VAULT>",
                "LINZA_EMBED_PROVIDER": "<LINZA_EMBED_PROVIDER>",
                "LINZA_EMBED_URL": "<LINZA_EMBED_URL>",
                "LINZA_EMBED_MODEL": "<LINZA_EMBED_MODEL>",
                "LINZA_EMBED_KEY": "<LINZA_EMBED_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values. 4 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from linza-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e LINZA_VAULT=<LINZA_VAULT> -e LINZA_EMBED_PROVIDER=<LINZA_EMBED_PROVIDER> -e LINZA_EMBED_URL=<LINZA_EMBED_URL> -e LINZA_EMBED_MODEL=<LINZA_EMBED_MODEL> -e LINZA_EMBED_KEY=<LINZA_EMBED_KEY> linza uvx linza-mcp
```
Replace <…> with your own values. 4 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from linza-mcp <command>

## When to use it
- make sense of a notes folder that has grown too large
- spot which material shapes keep repeating
- surface likely links between documents and say why
- build a compact context pack with sources for the agent
- line up memory candidates for future sessions

## Example prompts
- Check LINZA with `agent_workspace(action="doctor")` and index the folder.
- Show the first 3-5 review intents and explain your reasoning.
- Accept the material format "diagnostic logs" based on these examples.

## Similar
- [Nouz](https://affpapa.org/en/nevibecode/mcp/nouz.md) — MCP server · ★ 24
- [sqlite-graph-memory](https://affpapa.org/en/nevibecode/mcp/sqlite-graph-memory.md) — MCP server · ★ 12
- [gknowledge](https://affpapa.org/en/nevibecode/mcp/gknowledge.md) — MCP server · ★ 24
- [Obsidian Hybrid Search](https://affpapa.org/en/nevibecode/mcp/obsidian-hybrid-search.md) — MCP server · ★ 114
- [llm-wiki](https://affpapa.org/en/nevibecode/skills/ar9av-llm-wiki.md) — skill · 4100 installs
- [wiki-capture](https://affpapa.org/en/nevibecode/skills/wiki-capture.md) — skill · 2800 installs

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
