Zettelkasten MCP Server

Zettelkasten MCP Server

A Zettelkasten-based knowledge management system implementing the Model Context Protocol.

114
Stars
21
Forks
114
Watchers
11
Issues
Zettelkasten MCP Server provides an implementation of the Zettelkasten note-taking methodology, enriched with bidirectional linking, semantic relationships, and categorization of notes. It enables creation, exploration, and synthesis of atomic knowledge using MCP for AI-assisted workflows. The system integrates with clients such as Claude and supports markdown, advanced search, and a structured prompt framework for large language models. The dual storage architecture and synchronous operation model ensure flexibility and reliability for managing personal or collaborative knowledge bases.

Key Features

Atomic note creation with unique timestamp-based IDs
Bidirectional linking and semantic relationship support
Support for multiple note types (fleeting, literature, permanent, etc.)
Markdown-based editing and human readability
Tag-based organizational system
Full-text, tag, and link-based search
Integration with MCP-compatible clients and AI systems like Claude
Dual storage architecture for flexibility
Synchronous operation model
Prompt system for optimizing LLM interactions

Use Cases

Building personal or collaborative knowledge graphs
AI-assisted literature review and synthesis
Research note organization across subjects
Cross-domain knowledge exploration and discovery
Developing a digital 'second brain' for ideation
Generating context-rich prompts for large language models
Structuring academic or project-related notes
Quick capture and refinement of fleeting ideas
Semantic linking for advanced knowledge querying
Supporting emergence of new insights through connected note networks

README

Zettelkasten MCP Server

A Model Context Protocol (MCP) server that implements the Zettelkasten knowledge management methodology, allowing you to create, link, explore and synthesize atomic notes through Claude and other MCP-compatible clients.

What is Zettelkasten?

The Zettelkasten method is a knowledge management system developed by German sociologist Niklas Luhmann, who used it to produce over 70 books and hundreds of articles. It consists of three core principles:

  1. Atomicity: Each note contains exactly one idea, making it a discrete unit of knowledge
  2. Connectivity: Notes are linked together to create a network of knowledge, with meaningful relationships between ideas
  3. Emergence: As the network grows, new patterns and insights emerge that weren't obvious when the individual notes were created

What makes the Zettelkasten approach powerful is how it enables exploration in multiple ways:

  • Vertical exploration: dive deeper into specific topics by following connections within a subject area.
  • Horizontal exploration: discover unexpected relationships between different fields by traversing links that cross domains.

This structure invites serendipitous discoveries as you follow trails of thought from note to note, all while keeping each piece of information easily accessible through its unique identifier. Luhmann called his system his "second brain" or "communication partner" - this digital implementation aims to provide similar benefits through modern technology.

Features

  • Create atomic notes with unique timestamp-based IDs
  • Link notes bidirectionally to build a knowledge graph
  • Tag notes for categorical organization
  • Search notes by content, tags, or links
  • Use markdown format for human readability and editing
  • Integrate with Claude through MCP for AI-assisted knowledge management
  • Dual storage architecture (see below)
  • Synchronous operation model for simplified architecture

Examples

Note Types

The Zettelkasten MCP server supports different types of notes:

Type Handle Description
Fleeting notes fleeting Quick, temporary notes for capturing ideas
Literature notes literature Notes from reading material
Permanent notes permanent Well-formulated, evergreen notes
Structure notes structure Index or outline notes that organize other notes
Hub notes hub Entry points to the Zettelkasten on key topics

Link Types

The Zettelkasten MCP server uses a comprehensive semantic linking system that creates meaningful connections between notes. Each link type represents a specific relationship, allowing for a rich, multi-dimensional knowledge graph.

Primary Link Type Inverse Link Type Relationship Description
reference reference Simple reference to related information (symmetric relationship)
extends extended_by One note builds upon or develops concepts from another
refines refined_by One note clarifies or improves upon another
contradicts contradicted_by One note presents opposing views to another
questions questioned_by One note poses questions about another
supports supported_by One note provides evidence for another
related related Generic relationship (symmetric relationship)

Prompting

To ensure maximum effectiveness, we recommend using a system prompt ("project instructions"), project knowledge, and an appropriate chat prompt when asking the LLM to process information, or explore or synthesize your Zettelkasten notes. The docs directory in this repository contains the necessary files to get you started:

System prompts

Pick one:

Project knowledge

For end users:

Chat Prompts

Project knowledge (dev)

For developers and contributors:

NB: Optionally include the source code with a tool like repomix.

Storage Architecture

This system uses a dual storage approach:

  1. Markdown Files: All notes are stored as human-readable Markdown files with YAML frontmatter for metadata. These files are the source of truth and can be:

    • Edited directly in any text editor
    • Placed under version control (Git, etc.)
    • Backed up using standard file backup procedures
    • Shared or transferred like any other text files
  2. SQLite Database: Functions as an indexing layer that:

    • Facilitates efficient querying and search operations
    • Enables Claude to quickly traverse the knowledge graph
    • Maintains relationship information for faster link traversal
    • Is automatically rebuilt from Markdown files when needed

If you edit Markdown files directly outside the system, you'll need to run the zk_rebuild_index tool to update the database. The database itself can be deleted at any time - it will be regenerated from your Markdown files.

Installation

bash
# Clone the repository
git clone https://github.com/entanglr/zettelkasten-mcp.git
cd zettelkasten-mcp

# Create a virtual environment with uv
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
uv add "mcp[cli]"

# Install dev dependencies
uv sync --all-extras

Configuration

Create a .env file in the project root by copying the example:

bash
cp .env.example .env

Then edit the file to configure your connection parameters.

Usage

Starting the Server

bash
python -m zettelkasten_mcp.main

Or with explicit configuration:

bash
python -m zettelkasten_mcp.main --notes-dir ./data/notes --database-path ./data/db/zettelkasten.db

Connecting to Claude Desktop

Add the following configuration to your Claude Desktop:

json
{
  "mcpServers": {
    "zettelkasten": {
      "command": "/absolute/path/to/zettelkasten-mcp/.venv/bin/python",
      "args": [
        "-m",
        "zettelkasten_mcp.main"
      ],
      "env": {
        "ZETTELKASTEN_NOTES_DIR": "/absolute/path/to/zettelkasten-mcp/data/notes",
        "ZETTELKASTEN_DATABASE_PATH": "/absolute/path/to/zettelkasten-mcp/data/db/zettelkasten.db",
        "ZETTELKASTEN_LOG_LEVEL": "INFO"
      }
    }
  }
}

Available MCP Tools

All tools have been prefixed with zk_ for better organization:

Tool Description
zk_create_note Create a new note with a title, content, and optional tags
zk_get_note Retrieve a specific note by ID or title
zk_update_note Update an existing note's content or metadata
zk_delete_note Delete a note
zk_create_link Create links between notes
zk_remove_link Remove links between notes
zk_search_notes Search for notes by content, tags, or links
zk_get_linked_notes Find notes linked to a specific note
zk_get_all_tags List all tags in the system
zk_find_similar_notes Find notes similar to a given note
zk_find_central_notes Find notes with the most connections
zk_find_orphaned_notes Find notes with no connections
zk_list_notes_by_date List notes by creation/update date
zk_rebuild_index Rebuild the database index from Markdown files

Project Structure

zettelkasten-mcp/
├── src/
│   └── zettelkasten_mcp/
│       ├── models/       # Data models
│       ├── storage/      # Storage layer
│       ├── services/     # Business logic
│       └── server/       # MCP server implementation
├── data/
│   ├── notes/            # Note storage (Markdown files)
│   └── db/               # Database for indexing
├── tests/                # Test suite
├── .env.example          # Environment variable template
└── README.md

Tests

Comprehensive test suite for Zettelkasten MCP covering all layers of the application from models to the MCP server implementation.

How to Run the Tests

From the project root directory, run:

Using pytest directly

bash
python -m pytest -v tests/

Using UV

bash
uv run pytest -v tests/

With coverage report

bash
uv run pytest --cov=zettelkasten_mcp --cov-report=term-missing tests/

Running a specific test file

bash
uv run pytest -v tests/test_models.py

Running a specific test class

bash
uv run pytest -v tests/test_models.py::TestNoteModel

Running a specific test function

bash
uv run pytest -v tests/test_models.py::TestNoteModel::test_note_validation

Tests Directory Structure

tests/
├── conftest.py - Common fixtures for all tests
├── test_integration.py - Integration tests for the entire system
├── test_mcp_server.py - Tests for MCP server tools
├── test_models.py - Tests for data models
├── test_note_repository.py - Tests for note repository
├── test_search_service.py - Tests for search service
├── test_semantic_links.py - Tests for semantic linking
└── test_zettel_service.py - Tests for zettel service

Important Notice

⚠️ USE AT YOUR OWN RISK: This software is experimental and provided as-is without warranty of any kind. While efforts have been made to ensure data integrity, it may contain bugs that could potentially lead to data loss or corruption. Always back up your notes regularly and use caution when testing with important information.

Credit Where Credit's Due

This MCP server was crafted with the assistance of Claude, who helped organize the atomic thoughts of this project into a coherent knowledge graph. Much like a good Zettelkasten system, Claude connected the dots between ideas that might otherwise have remained isolated. Unlike Luhmann's paper-based system, however, Claude didn't require 90,000 index cards to be effective.

License

MIT License

Star History

Star History Chart

Repository Owner

entanglr
entanglr

Organization

Repository Details

Language Python
Default Branch main
Size 271 KB
Contributors 1
License MIT License
MCP Verified Nov 12, 2025

Programming Languages

Python
100%

Tags

Topics

claude knowledge-graph llm markdown mcp mcp-server note-taking obsidian python zettelkasten

Join Our Newsletter

Stay updated with the latest AI tools, news, and offers by subscribing to our weekly newsletter.

We respect your privacy. Unsubscribe at any time.

Related MCPs

Discover similar Model Context Protocol servers

  • MCP Obsidian Server

    MCP Obsidian Server

    Integrate Obsidian note management with AI models via the Model Context Protocol.

    MCP Obsidian Server acts as a bridge between Obsidian and AI models by providing an MCP-compatible server interface. It enables programmatic access to Obsidian vaults through a local REST API, allowing operations like listing files, searching, reading, editing, and deleting notes. Designed to work with Claude Desktop and other MCP-enabled clients, it exposes a set of tools for efficient note and content management within Obsidian.

    • 2,394
    • MCP
    • MarkusPfundstein/mcp-obsidian
  • MyMCP Server (All-in-One Model Context Protocol)

    MyMCP Server (All-in-One Model Context Protocol)

    Powerful and extensible Model Context Protocol server with developer and productivity integrations.

    MyMCP Server is a robust Model Context Protocol (MCP) server implementation that integrates with services like GitLab, Jira, Confluence, YouTube, Google Workspace, and more. It provides AI-powered search, contextual tool execution, and workflow automation for development and productivity tasks. The system supports extensive configuration and enables selective activation of grouped toolsets for various environments. Installation and deployment are streamlined, with both automated and manual setup options available.

    • 93
    • MCP
    • nguyenvanduocit/all-in-one-model-context-protocol
  • anki-mcp

    anki-mcp

    MCP server for seamless integration with Anki via AnkiConnect.

    An MCP server that bridges Anki flashcards with the Model Context Protocol, exposing AnkiConnect functionalities as standardized MCP tools. It organizes Anki actions into intuitive services covering decks, notes, cards, and models for easy access and automation. Designed for integration with AI assistants and other MCP-compatible clients, it enables operations like creating, modifying, and organizing flashcards through a unified protocol.

    • 6
    • MCP
    • ujisati/anki-mcp
  • Graphlit MCP Server

    Graphlit MCP Server

    Integrate and unify knowledge sources for RAG-ready AI context with the Graphlit MCP Server.

    Graphlit MCP Server provides a Model Context Protocol interface, enabling seamless integration between MCP clients and the Graphlit platform. It supports ingestion from a wide array of sources such as Slack, Discord, Google Drive, email, Jira, and GitHub, turning them into a searchable, RAG-ready knowledge base. Built-in tools allow for document, media extraction, web crawling, and web search, as well as advanced retrieval and publishing functionalities. The server facilitates easy configuration, sophisticated data operations, and automated notifications for diverse workflows.

    • 369
    • MCP
    • graphlit/graphlit-mcp-server
  • MCP Zotero

    MCP Zotero

    Model Context Protocol server for seamless Zotero integration with AI tools.

    MCP Zotero provides a Model Context Protocol server enabling AI models such as Claude to access and interact with Zotero libraries. Users can securely link their Zotero accounts and perform actions including listing collections, retrieving papers, searching the library, and getting details about specific items. Integration is designed for both standalone operation and as an extension for tools like Claude Desktop.

    • 137
    • MCP
    • kaliaboi/mcp-zotero
  • Kanboard MCP Server

    Kanboard MCP Server

    MCP server for seamless AI integration with Kanboard project management.

    Kanboard MCP Server is a Go-based server implementing the Model Context Protocol (MCP) for integrating AI assistants with the Kanboard project management system. It enables users to manage projects, tasks, users, and workflows in Kanboard directly via natural language commands through compatible AI tools. With built-in support for secure authentication and high performance, it facilitates streamlined project operations between Kanboard and AI-powered clients like Cursor or Claude Desktop. The server is configurable and designed for compatibility with MCP standards.

    • 15
    • MCP
    • bivex/kanboard-mcp
  • Didn't find tool you were looking for?

    Be as detailed as possible for better results