obsidian-mcp-server
obsidian-mcp-server
MCP-сервер (Model Context Protocol) для учебного Vault в Obsidian. Предоставляет Claude доступ к поиску заметок, содержимому заметок, созданию карточек в формате Decks и планированию обучения из плагина Lerntracker.
Python, MCP SDK 2.x, транспорт stdio.
Цель
Раньше логика была реализована в двух плагинах Obsidian:
Decks (сторонний плагин) отображает карточки, но не создаёт их — карточки писались вручную.
Lerntracker (собственный плагин) управляет учебным прогрессом и учебным планом, но сознательно не распределяет материал по дням автоматически.
Этот сервер закрывает оба пробела: Claude может создавать карточки прямо в
существующем формате файлов и вычислять учебный план, который записывается
обратно в data.json плагина Lerntracker.
Related MCP server: Nexus MCP for Obsidian
Установка
cd ~/Projects/obsidian-mcp-server
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtКонфигурация
Оба пути берутся из переменных окружения — ничего не захардкожено.
Переменная | По умолчанию | Значение |
|
| Корень Vault |
|
| База данных Lerntracker |
Значение по умолчанию для пути Vault подходит для Obsidian, синхронизируемого через iCloud;
для другой настройки достаточно задать OBSIDIAN_VAULT_PATH.
Путь Lerntracker можно настраивать отдельно, потому что Vault-ы Obsidian могут
быть вложенными: если в подпапке находится ещё один Vault, у него есть собственная
data.json. По умолчанию указывается на файл главного Vault.
Инструменты
Инструмент | Действие |
| Ищет без учёта регистра в именах файлов и содержимом. Совпадения имён получают больший вес; возвращает путь + фрагменты текста. Только чтение |
| Возвращает полное содержимое заметки. Только чтение |
| Записывает. Добавляет карточку в конец |
| Подготавливает заметку в структурированном виде. Только чтение |
| Записывает. Создаёт |
| Записывает. Распределяет открытые подтемы по дням и вносит их в |
Все схемы генерируются SDK из аннотаций типов и docstring-ов — в коде нет написанного вручную JSON-схемы.
Формат карточек
create_flashcard записывает ровно тот формат, который используют существующие
карточки в Vault (заголовок-абзац), дополненный вики-ссылкой на источник:
---
tags: [decks]
---
## Was ist ein Signal?
Eine zeitabhängige, messbare physikalische Größe.
Quelle: [[01_Physikalische_Schicht]]Целевой файл определяется по папке курса исходной заметки; deck переопределяет
имя файла. Если файл не существует, он создаётся с tags: [decks].
Карточка с идентичной лицевой стороной пропускается, а не создаётся дважды.
Прогресс Decks хранится в базе данных SQLite, а не в Markdown-файлах. Сервер её не трогает — история FSRS остаётся нетронутой.
Почему generate_summary сам не обобщает
У сервера нет языковой модели. Он возвращает заметку в структурированном виде
(структура, показатели, полный текст); краткое содержание пишет модель на стороне
клиента — то есть Claude Desktop. Затем оно сохраняется с помощью save_summary.
Это обычное распределение ролей в MCP: сервер предоставляет контекст и выполняет
действия, а модель формулирует.
Если бы сервер должен был вместо этого сам обобщать, ему пришлось бы вызывать Anthropic-API и понадобился бы собственный API-Key.
Логика учебного плана
generate_study_plan распределяет каждую открытую подтему по конкретным дням:
Курсы сортируются по дате экзамена — сначала самый ранний.
Конец обучения =
examDate − bufferDays; буферные дни остаются свободными для повторения.Учебные дни берутся из
settings.weeklyHours(0 = воскресенье … 6 = суббота). Дни с0часов и всеblockedDatesпропускаются.Каждая подтема требует
hours_per_subtopic(по умолчанию 1,5 ч) и помещается в самый ранний день с остаточной ёмкостью. Если она не помещается в один день, она разбивается на несколько дней — плагин поддерживает несколькоdates.Уже отмеченные подтемы и те, у которых уже есть
dates, остаются нетронутыми.То, что уже не помещается до конца обучения, сообщается как предупреждение, а не молча отбрасывается.
Перед каждой операцией записи рядом с файлом создаётся резервная копия
(data.backup-<Zeitstempel>.json); запись происходит атомарно через временный файл.
dry_run=True только показывает план.
После записи в Obsidian нажмите Cmd+R, чтобы плагин перезагрузился.
Ресурсы
URI | Содержимое |
| Дерево папок Vault с количеством заметок в каждой папке |
| Содержимое отдельной заметки, только чтение |
Шаблон намеренно использует {+path} (Reserved Expansion) вместо {path}.
Обычные переменные шаблонов не сопоставляют слэши — с {path} любая заметка во
вложенной папке молча не была бы найдена, а в Vault практически каждая заметка
лежит в папке курса.
Локальное тестирование с помощью MCP Inspector
Inspector запускается через CLI SDK и открывает веб-интерфейс, в котором
инструменты и ресурсы можно вызывать по отдельности. Для него нужны npx
(Node.js) и uv.
source .venv/bin/activate && mcp dev main.pyКоманда выводит URL вида http://localhost:6274 (с добавленным сессионным
токеном). Откройте в браузере, слева нажмите Connect, затем:
Вкладка Tools → List Tools → выберите инструмент, введите аргументы, Run Tool
Вкладка Resources → List Resources → нажмите
vault://structureДля шаблонного ресурса введите URI напрямую, по образцу
note://<Kursordner>/Flashcards/<Datei>.md
С другим Vault:
OBSIDIAN_VAULT_PATH="$HOME/Pfad/zu/deinem/Vault" mcp dev main.pyЧтобы попробовать записывающие инструменты, стоит использовать одноразовый Vault:
OBSIDIAN_VAULT_PATH=/tmp/testvault mcp dev main.pyПодключение к Claude Desktop
Файл конфигурации:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"obsidian-vault": {
"command": "/Users/DEIN_NAME/Projects/obsidian-mcp-server/.venv/bin/python",
"args": ["/Users/DEIN_NAME/Projects/obsidian-mcp-server/main.py"],
"env": {
"OBSIDIAN_VAULT_PATH": "/Users/DEIN_NAME/Pfad/zu/deinem/Vault"
}
}
}
}Важно: используйте абсолютные пути — ~ и $HOME здесь не раскрываются.
В качестве command укажите Python из venv: Claude Desktop запускает сервер
без активированного окружения, простой "python3" не нашёл бы пакет mcp.
Если файл уже существует, просто вставьте запись "obsidian-vault" в
существующий объект mcpServers. Затем полностью закройте Claude Desktop и
запустите заново; сервер появится в меню инструментов поля ввода.
Безопасность
Каждый путь из вызова Tool или Resource проверяется относительно Vault:
абсолютные пути и обход через .. отклоняются, а итоговый путь должен находиться
внутри OBSIDIAN_VAULT_PATH. .obsidian, .git, .trash, .claude и
node_modules исключены из поиска и перечисления структуры — иначе результаты
переполнят бандлы плагинов.
save_summary не перезаписывает существующий файл, create_flashcard не создаёт
дублирующую карточку, а generate_study_plan делает резервную копию data.json
перед записью.
Протестировано
С mcp 2.0.0 на Python 3.14 проверены: схемы Tool, шаблоны Resource,
stdio-рукопожатие с настоящим ClientSession, защита путей, а также
записывающие инструменты на одноразовом Vault (включая разбиение на несколько
дней, заблокированные дни, дни недели с нулевым количеством часов и случай
переполнения).
Лицензия
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
- AlicenseBqualityDmaintenanceEnables interaction with Obsidian vaults through MCP, supporting note creation from templates, link management, backlink analysis, tag operations, and automatic Map of Contents generation.112,4721MIT
- AlicenseNot gradedqualityAmaintenanceTurns your Obsidian vault into an MCP-enabled workspace with tools for reading/writing notes, managing folders, running semantic searches, and maintaining long-term memory—all while keeping data local to your vault.173,522150MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search, read, and append content to notes in an Obsidian vault via the MCP protocol.2,472BSD Zero Clause
- AlicenseBqualityBmaintenanceBridges Obsidian vaults with MCP-compatible AI tools, enabling read/write/search of notes, task management, and vault operations through 34 tools and prompt templates.34571MIT
Related MCP Connectors
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
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/MzaKhn/obsidian-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server