auth-security

open-zk-kb

by mrosnerr

Shared, persistent memory for AI assistants, built on the Zettelkasten method

Provides shared, persistent memory for AI assistants using the Zettelkasten method, enabling context to persist across sessions through searchable atomic notes stored locally.

github stars

1

best for

  • / General purpose MCP workflows

capabilities

  • / knowledge-search
  • / knowledge-store
  • / knowledge-maintain

what it does

Provides shared, persistent memory for AI assistants using the Zettelkasten method, enabling context to persist across sessions through searchable atomic notes stored locally.

about

open-zk-kb is a community-built MCP server published by mrosnerr that provides AI assistants with tools and capabilities via the Model Context Protocol. Shared, persistent memory for AI assistants, built on the Zettelkasten method It is categorized under auth security. This server exposes 3 tools that AI clients can invoke during conversations and coding sessions.

how to install

You can install open-zk-kb in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.

license

MIT

open-zk-kb is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.

readme

open-zk-kb

CI npm version npm downloads License: MIT

Shared, persistent memory for AI assistants, built on the Zettelkasten method. One knowledge base for all your tools — so context persists across sessions and clients.

Demo

<p align="center"> <img src="assets/demo.gif" alt="open-zk-kb demo" width="640"> <br> <sub>Real MCP calls — store, search, and stats run against a live knowledge base.</sub> </p>

Why open-zk-kb?

AI assistants forget everything between sessions. open-zk-kb gives your assistant a persistent, structured memory it queries automatically.

  • Hybrid search — full-text + local embeddings, so only relevant notes surface
  • Atomic notes — one concept per note (6 kinds, lifecycle management) keeps results precise
  • Local-first — no API keys, works offline, scales to thousands of notes
  • Human-readable — Markdown + YAML frontmatter, rebuildable from files
  • Shared memory across tools — one knowledge base for OpenCode, Claude Code, Cursor, Windsurf, and Zed
  • MIT-licensed

Quick Start

Requires Bun — install with curl -fsSL https://bun.sh/install | bash

bunx open-zk-kb@latest

That's it. The interactive installer:

  1. Adds the MCP server to your client config
  2. Installs knowledge base instructions (skill for Claude Code, managed block for OpenCode/Windsurf)
  3. Creates a local vault at ~/.local/share/open-zk-kb

Supported clients: OpenCode, Claude Code, Cursor, Windsurf, Zed

How It Works

Your AI assistant gets three MCP tools:

ToolWhat it does
knowledge-searchSearch the knowledge base before starting work
knowledge-storeSave decisions, preferences, procedures, and insights
knowledge-maintainReview, promote, archive, and rebuild notes

The installer injects instructions that guide the AI to proactively search for relevant context before starting work and store valuable knowledge as it discovers it. No plugin required — the AI drives everything through tool calls.

Notes are stored as Markdown files with YAML frontmatter. A SQLite index provides fast full-text search, with local vector embeddings for semantic matching. No API key needed.

Configuration

Zero configuration required for basic usage. The installer creates ~/.config/open-zk-kb/config.yaml automatically.

To use an API provider for embeddings instead of local models:

embeddings:
  provider: "api"
  base_url: "https://openrouter.ai/api/v1"
  api_key: "your-api-key-here"
  model: "openai/text-embedding-3-small"
  dimensions: 1536

Any OpenAI-compatible API works (OpenRouter, Together, Groq, local vLLM, etc.). See docs/configuration.md for the full reference.

Note Kinds

KindDefault StatusUse Case
personalizationpermanentUser preferences, habits, and personal style
referencefleetingTechnical facts, API details, and documentation snippets
decisionpermanentArchitectural choices, project commitments, and trade-offs
procedurefleetingStep-by-step workflows and recurring tasks
resourcepermanentLinks, tools, libraries, and external documentation
observationfleetingInsights, patterns, and temporary findings

Notes follow a lifecycle: fleetingpermanentarchived. See Note Lifecycle for details.

<details> <summary><h2>Manual Install</h2></summary>

If you prefer manual configuration, add open-zk-kb to your client's MCP config file. No cloning required — the npm package includes everything.

Note: Manual install only adds the MCP server. To also inject the agent instructions, run bunx open-zk-kb@latest install --client <name> or add the contents of agent-instructions-full.md (or agent-instructions-compact.md for token-constrained clients) to your client's instruction file.

OpenCode

~/.config/opencode/opencode.json

{
  "mcp": {
    "open-zk-kb": {
      "type": "local",
      "command": ["bunx", "open-zk-kb@latest", "server"],
      "enabled": true
    }
  }
}

Claude Code

~/.claude/settings.json

{
  "mcpServers": {
    "open-zk-kb": {
      "command": "bunx",
      "args": ["open-zk-kb@latest", "server"]
    }
  }
}

Cursor

~/.cursor/mcp.json

{
  "mcpServers": {
    "open-zk-kb": {
      "command": "bunx",
      "args": ["open-zk-kb@latest", "server"]
    }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "open-zk-kb": {
      "command": "bunx",
      "args": ["open-zk-kb@latest", "server"]
    }
  }
}

Zed

~/.config/zed/settings.json

{
  "context_servers": {
    "open-zk-kb": {
      "command": "bunx",
      "args": ["open-zk-kb@latest", "server"]
    }
  }
}
</details>

Development

git clone https://github.com/mrosnerr/open-zk-kb
cd open-zk-kb
bun install && bun run build
bun run setup            # interactive installer

Links

License

MIT License