mcp-zettel
mcp-zettel
Предоставьте Claude (или любому MCP-клиенту) постоянную память в виде Zettelkasten.
MCP-сервер, который открывает личную базу знаний из атомарных, взаимосвязанных markdown-заметок для Claude Desktop, Claude Code, Cursor или любого другого MCP-совместимого клиента. Подключите его, и помощник сможет создавать заметки, перекрестно ссылаться на них с помощью [[wiki-links]], искать по ключевым словам или тегам, а также просматривать обратные ссылки — это позволит ему создавать и использовать долговечный контекст в разных сессиях без необходимости что-либо копировать вручную.
Зачем это нужно
Каждый чат, который вы начинаете с LLM, начинается с нулевого контекста о том, что вы уже решили, написали или узнали. Метод Zettelkasten (небольшие атомарные заметки + явные ссылки между ними) отлично подходит для памяти, доступной LLM: фрагменты естественным образом малы, ссылки делают релевантность явной, а хранилище представляет собой обычные markdown-файлы на вашем диске.
Этот MCP-сервер предоставляет эту базу знаний любому LLM-клиенту через инструменты MCP, чтобы модель могла:
Создавать новую заметку, когда вы делитесь решением или инсайтом, который стоит сохранить
Искать заметки по теме перед ответом («что я решил по поводу X?»)
Связывать заметки двусторонними ссылками для построения графа («это противоречит [[a3f2c9]]»)
Просматривать обратные ссылки, чтобы найти все, что связано с концепцией
Вы храните обычные markdown-файлы на диске. Модель получает структурированный доступ к ним.
Related MCP server: obsidian-pkm
Как это выглядит в клиенте
После подключения сервера LLM может делать следующее (ваш клиент покажет фактические вызовы инструментов):
> What did I conclude about RAG chunk sizes?
[searches notes with query "rag chunk size"]
[reads 2 matching notes]
Based on your notes a3f2c9 ("RAG chunk sizing") and b7e412 ("Sentence-boundary
splitting"), you concluded: 800 chars with ~15% overlap, sentence-aligned.
You flagged that pure character chunking ([[2f00a1]]) hurt recall on your
arxiv set and moved away from it.Предоставленные инструменты MCP
Инструмент | Назначение |
| Создать новую атомарную заметку. Используйте |
| Получить одну заметку. |
| Обновить любые поля, оставив остальные без изменений. |
| Удалить заметку навсегда. |
| Перечислить все заметки; необязательный фильтр по тегам — это пересечение. |
| Поиск по ключевым словам — заголовки и теги имеют больший вес, чем тело. |
| v0.2. Поиск на основе эмбеддингов для концептуальных запросов. Использует fastembed на устройстве (без вызова API). |
| Добавить wiki-ссылку |
| Все заметки, в теле которых есть ссылка на эту. |
| ID, на которые ссылается эта заметка (исходящие). |
| v0.6. Учитывая произвольный текст (например, то, что вы собираетесь сохранить как новую заметку), возвращает существующие заметки, которые наиболее вероятно стоит связать. Гибридно объединяет ранжирование по ключевым словам и семантическое ранжирование через RRF, поэтому вам не нужно выбирать, какой поиск использовать. |
Плюс ресурсы MCP:
zettel://all— однострочный индекс всех заметокzettel://{note_id}— полностью отрендеренная заметкаzettel://graph— v0.4. Mermaid-диаграмма всех заметок +[[wiki-link]]в хранилище, отрендеренная встроенно любым клиентом с поддержкой markdown+mermaid (Claude Desktop, Obsidian, mdBook…).zettel://graph/tag/{tag}— v0.4. Та же диаграмма, но ограниченная заметками с тегом{tag}плюс их прямыми соседями — полезно, когда полный граф становится слишком шумным для чтения.
Два инструмента поиска, а не один
Поиск по ключевым словам — это то, что вам нужно, когда вы знаете термин. Он дешевый, ранжирование предсказуемо, а точные совпадения всегда выигрывают у похожих по звучанию. Семантический поиск выигрывает, когда формулировка запроса не совпадает с формулировкой заметки — например, запрос «ограничение скорости» (rate limiting), когда в заметке это называется «дросселирование» (throttling), или «почему мой кэш холодный», когда заметка о «настройке TTL». LLM может вызвать тот инструмент, который имеет смысл; описания инструментов подсказывают ей, какой выбрать.
Модель эмбеддингов по умолчанию — BAAI/bge-small-en-v1.5 (384-размерная, ~130 МБ, только CPU). Переопределите с помощью MCP_ZETTEL_EMBEDDING_MODEL. Индекс перестраивается лениво при первом семантическом запросе после любой записи, поэтому в первый раз будет небольшая задержка — после этого он остается в памяти на все время работы процесса сервера.
Установка
git clone https://github.com/dhruvpatel1706/mcp-zettel.git
cd mcp-zettel
pip install -e .Python 3.10+.
Настройка
Claude Desktop
Отредактируйте ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) или эквивалентный файл в вашей ОС и добавьте:
{
"mcpServers": {
"zettel": {
"command": "mcp-zettel-server"
}
}
}Перезапустите Claude Desktop. Инструменты zettel теперь доступны модели.
Claude Code
claude mcp add zettel -- mcp-zettel-serverCursor / Continue / любой stdio MCP-клиент
Укажите клиенту mcp-zettel-server в качестве команды; сервер общается по MCP через stdio.
Пользовательское расположение хранилища
Установите MCP_ZETTEL_ROOT для переопределения пути по умолчанию ~/.mcp-zettel:
{
"mcpServers": {
"zettel": {
"command": "mcp-zettel-server",
"env": { "MCP_ZETTEL_ROOT": "/Users/you/vault" }
}
}
}Использование CLI напрямую (MCP-клиент не требуется)
То же хранилище доступно через обычный CLI — полезно для опытных пользователей, которые хотят просматривать, редактировать или наполнять базу знаний вне сессии LLM.
mcp-zettel create "RAG chunk sizing" \
--body "Settled on 800 chars, 15% overlap, sentence-aligned. See [[b7e412]]." \
--tag rag --tag decisions
mcp-zettel list --tag rag
mcp-zettel search "sentence boundary"
mcp-zettel show a3f2c9
mcp-zettel backlinks a3f2c9Структура на диске
~/.mcp-zettel/
└── notes/
├── a3f2c9.md ← one markdown file per note
├── b7e412.md ← YAML frontmatter: title, tags, created_at, updated_at
└── ... ← body is plain markdown; [[id]] is a wiki-linkКаждая заметка — это отдельный файл. Это означает: легкое резервное копирование (git), легкий grep, отсутствие привязки к поставщику. Если вы когда-нибудь перестанете использовать этот сервер, у вас останется директория с markdown-файлами.
Проектные решения
Файлы, а не база данных. Одна заметка на markdown-файл означает, что вы можете редактировать их в любом редакторе, делать резервные копии с помощью git и просматривать без специальных инструментов. Хранилище — это тонкая прослойка поверх.
Короткие hex-ID, а не заголовки-слаги.
[[a3f2c9]]стабилен — переименуйте заголовок, и все входящие ссылки все равно будут работать. Также короче, чем слаг на основе имени файла.Двусторонние ссылки вычисляются, а не хранятся. Обратные ссылки вычисляются при чтении путем сканирования тела каждой заметки на наличие
[[target_id]]. Нет отдельного индекса, который нужно поддерживать в актуальном состоянии. Это тривиально при масштабе, для которого это спроектировано (≤ несколько тысяч заметок).Поиск с учетом веса заголовка/тега. Совпадения в заголовке считаются за 3×, в тегах — за 2×, в теле — за 1×. Это соответствует интуиции: если в заголовке заметки упоминается «поиск», она больше относится к поиску, чем заметка, где это слово встречается один раз в середине текста.
FastMCP, а не низкоуровневый MCP. Поверхность FastMCP Python SDK для MCP означает, что инструменты — это просто функции Python с аргументами, типизированными через Pydantic — никакого ручного написания JSON Schema.
Разработка
pip install -e ".[dev]"
pytest
black --check src tests
isort --check-only --profile black src tests
flake8 src tests --max-line-length=100 --ignore=E501,W503,E203CI запускается на Python 3.10 / 3.11 / 3.12.
Проверяйте сервер интерактивно с помощью инспектора MCP:
npx @modelcontextprotocol/inspector mcp-zettel-serverШаблоны промптов (v0.3)
MCP-клиенты, поддерживающие меню промптов (Claude Desktop, Cursor), получают четыре серверных шаблона, которые кодируют «правильный способ» выполнения обычных действий Zettelkasten, чтобы вам не приходилось перепечатывать инструкции:
Промпт | Что он делает |
| Берет транскрипт чата, извлекает отдельные инсайты, которые стоит сохранить как атомарные заметки. Модель предлагает заголовки/тела/теги; вы одобряете, она вызывает |
| Перед написанием новой заметки находит существующие, на которые, возможно, стоит сослаться — через |
| Создает шаблон ежедневного журнала (сделано / узнал / блокировки / заметки, созданные сегодня). |
| Суммирует все под тегом. Стиль = |
Это просто функции, возвращающие строки, зарегистрированные через @mcp.prompt(). Хранение формулировок на стороне сервера означает, что один и тот же промпт «distill» ведет себя одинаково, вызываете ли вы его из Claude Desktop, Claude Code или Cursor.
Дорожная карта
[x] v0.2 — семантический поиск на основе эмбеддингов вместе с поиском по ключевым словам
[x] v0.3 — шаблоны
@mcp.prompt()для обычных операций с заметками[x] v0.4 — ресурс графового представления (
zettel://graph), возвращающий mermaid-диаграмму ссылок[ ] v0.5 — удаленный Streamable HTTP-транспорт для доступа с нескольких устройств
Лицензия
MIT. См. LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityCmaintenancePersistent memory MCP server that allows Claude to store, organize, and retrieve knowledge across sessions without consuming context window tokens.2417MIT
- AlicenseAqualityBmaintenanceThis MCP server enables Claude to interact with an Obsidian vault for persistent, structured memory, providing tools for note creation, semantic search, graph traversal, and session memory.188713MIT
- Alicense-qualityDmaintenanceEnables users to create, link, explore, and synthesize atomic notes using the Zettelkasten method through MCP-compatible clients like Claude.MIT
- AlicenseAqualityAmaintenanceMCP server that gives Claude Code and other MCP clients persistent memory using plain Markdown notes stored on your disk and optionally synced to cloud storage (iCloud, OneDrive, Google Drive, Dropbox).361MIT
Related MCP Connectors
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Person-owned, portable AI memory as a remote MCP server, readable and writable by any MCP client.
Cloud-hosted MCP server for durable AI memory
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/dhruvpatel1706/mcp-zettel'
If you have feedback or need assistance with the MCP directory API, please join our Discord server