Zettelkasten MCP Server
Enables users to create, link, explore, and synthesize atomic notes using the Zettelkasten method through MCP-compatible clients like Claude.
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:
- Atomicity: Each note contains exactly one idea, making it a discrete unit of knowledge
- Connectivity: Notes are linked together to create a network of knowledge, with meaningful relationships between ideas
- 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
- Knowledge creation: A small Zettelkasten knowledge network about the Zettelkasten method itself
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:
- zettelkasten-methodology-technical.md
- link-types-in-zettelkasten-mcp-server.md
- (more info relevant to your project)
Chat Prompts
- chat-prompt-knowledge-creation.md
- chat-prompt-knowledge-creation-batch.md
- chat-prompt-knowledge-exploration.md
- chat-prompt-knowledge-synthesis.md
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:
-
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
-
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
# 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:
cp .env.example .env
Then edit the file to configure your connection parameters.
Usage
Starting the Server
python -m zettelkasten_mcp.main
Or with explicit configuration:
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:
{
"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
python -m pytest -v tests/
Using UV
uv run pytest -v tests/
With coverage report
uv run pytest --cov=zettelkasten_mcp --cov-report=term-missing tests/
Running a specific test file
uv run pytest -v tests/test_models.py
Running a specific test class
uv run pytest -v tests/test_models.py::TestNoteModel
Running a specific test function
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
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。