obsidian-mcp
obsidian-mcp
MCP-сервер, который является оберткой для официального CLI Obsidian, позволяя агенту LLM управлять запущенным экземпляром Obsidian — читать/записывать заметки, искать, управлять метаданными, переходить по ссылкам, запускать плагины и многое другое.
Этот сервер представляет собой легкую и комплексную обертку. Каждый инструмент соответствует команде CLI obsidian в соотношении 1:1.
Предварительные требования
Obsidian должен быть запущен. CLI взаимодействует с работающим приложением через IPC; он не читает хранилище (vault) напрямую с диска.
Зарегистрируйте бинарный файл CLI. В Obsidian: Настройки → Общие → Интерфейс командной строки → Зарегистрировать CLI. Obsidian добавит
obsidianв вашPATH.Проверка:
obsidian versionвыводит версию CLI.
Установка
Два пути в зависимости от того, хотите ли вы собрать его самостоятельно или взять предварительно опубликованную версию из npm.
Вариант А — Клонирование и сборка (работает сейчас)
Клонируйте репозиторий и выполните сборку локально, затем укажите Claude Code путь к собранному файлу:
git clone https://github.com/yuchichang/obsidian-mcp.git
cd obsidian-mcp
npm install
npm run buildЗарегистрируйте его в Claude Code (одной командой):
# Add (user scope — available across all projects)
claude mcp add -s user obsidian -- node /absolute/path/to/obsidian-mcp/dist/index.js
# Remove
claude mcp remove obsidian
# List configured servers
claude mcp list-s user регистрирует его для всей вашей учетной записи пользователя. Используйте -s project, чтобы зафиксировать его в файле .mcp.json репозитория, или -s local только для текущего проекта (по умолчанию).
Или добавьте его в .mcp.json вручную:
{
"mcpServers": {
"obsidian": {
"command": "node",
"args": ["/absolute/path/to/obsidian-mcp/dist/index.js"]
}
}
}Вариант Б — Установка из npm (без сборки)
Предварительное требование: пакет уже должен быть опубликован в npm. Сопровождающий публикует его один раз через
npm publish; все последующие пользователи получают его черезnpxавтоматически. Если вы сделали форк этого репозитория и хотите использовать этот поток под своим именем, изменитеnameвpackage.jsonна@<ваше-имя-пользователя-npm>/obsidian-mcp, затем выполнитеnpm publish.
После публикации клонирование или сборка не требуются:
claude mcp add -s user obsidian -- npx -y @yuchichang/obsidian-mcpИли в .mcp.json / claude_desktop_config.json для Claude Desktop:
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["-y", "@yuchichang/obsidian-mcp"]
}
}
}Переопределение пути к CLI
Если obsidian отсутствует в PATH, установите переменную окружения OBSIDIAN_CLI. Работает с любым путем установки:
{
"mcpServers": {
"obsidian": {
"command": "node",
"args": ["/absolute/path/to/obsidian-mcp/dist/index.js"],
"env": {
"OBSIDIAN_CLI": "C:/Users/you/AppData/Local/Obsidian/obsidian.cmd"
}
}
}
}Инструменты
Хранилище и файлы
Инструмент | Обертка для |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Свойства метаданных (Frontmatter)
Инструмент | Обертка для |
|
|
|
|
|
|
Поиск
Инструмент | Обертка для |
|
|
|
|
Теги и ссылки
Инструмент | Обертка для |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Ежедневные заметки
Инструмент | Обертка для |
|
|
|
|
|
|
Плагины
Инструмент | Обертка для |
|
|
|
|
|
|
|
|
Разработчик / продвинутые функции
Инструмент | Обертка для | Примечания |
|
| ⚠️ Выполняет произвольный JS внутри Obsidian. Считайте деструктивным. |
|
| Возвращает PNG в формате base64. |
|
| |
|
|
Мета
Инструмент | Обертка для |
|
|
|
|
Соглашения
Выбор заметки — инструменты, работающие с файлами, принимают либо:
file— имя заметки в стиле вики-ссылок (например,"My Note"), либоpath— путь к файлу относительно хранилища (например,"Folder/My Note.md").
Настройка нескольких хранилищ — каждый инструмент принимает необязательный параметр
vault. Если он опущен, используется последнее активное хранилище.Формат вывода — инструменты для списка/поиска/метаданных по умолчанию используют JSON для удобного машинного разбора.
Чувствительные операции и подтверждение пользователя
Следующие инструменты защищены этапом подтверждения пользователем:
Инструмент | Причина |
| Удаляет данные (особенно с |
| Переименовывает + перезаписывает вики-ссылки во всем хранилище. |
| Удаляет данные метаданных. |
| Массово переименовывает теги во всех заметках. |
| Предоставляет плагину сообщества возможность выполнения кода. |
| Выполняет произвольный JavaScript внутри Obsidian. |
Как работает защита:
Запрос MCP (предпочтительно). Если подключенный клиент поддерживает возможность
elicitation(Claude Code поддерживает), сервер отправляет запросelicitation/create, и клиент показывает пользователю запрос Продолжить? с описанием действия и цели. Толькоaccept + confirm: trueпозволяет продолжить.Явный параметр
confirm: true. Схема ввода каждого чувствительного инструмента включает необязательный параметрconfirm: boolean. Передачаconfirm: trueпропускает запрос на подтверждение — используйте это только тогда, когда вызывающая сторона уже получила одобрение пользователя.Отказ в качестве резервного варианта. Если клиент не поддерживает elicitation и параметр
confirm: trueне был предоставлен, инструмент возвращает результатisError, который называет действие и инструктирует вызывающую сторону повторить попытку сconfirm: true.
Обход для пакетных операций / автоматизации
OBSIDIAN_MCP_AUTO_CONFIRM=1Установите эту переменную окружения (в блоке env вашего MCP-клиента), чтобы пропускать каждый запрос на подтверждение. Используйте только в полностью доверенных контекстах автоматизации.
Длинный контент и ограничения аргументов
CLI Obsidian (пока) не поддерживает чтение значений параметров из stdin или файлов — каждое значение передается через командную строку. Это приводит к конфликту с ограничениями платформы:
Платформа | Практический лимит командной строки |
Windows (cmd.exe) | ~8,191 символ всего |
macOS / Linux |
|
Для безопасности сервер автоматически разбивает на части длинные записи: |
Инструмент | Стратегия разбиения |
| Первая часть через |
| Последовательные вызовы |
| Вызовы |
| Определяет путь к ежедневной заметке, затем разбитое добавление. |
| Не разбивается — JS нельзя разделить. Возвращает ошибку с предложением использовать обходной путь через скрипт в заметке. |
Разбиение происходит по границам строк, когда это возможно; слишком длинные одиночные строки разбиваются по границам символов, безопасным для UTF-8. Собранный контент побайтово идентичен оригиналу.
Настройте пороговое значение байтов для каждого вызова (по умолчанию: 6,000 на Windows, 100,000 в других системах):
OBSIDIAN_MCP_MAX_ARG_BYTES=4000Если часть в середине многочастной записи не удалась, сервер возвращает isError с четким сообщением о том, какие части были записаны на диск, чтобы вызывающая сторона могла восстановиться.
Разработка
npm run dev # tsc --watch
npm run inspect # launch MCP Inspector against the built server
node scripts/smoke-test.mjs # initialize + tools/list smoke testКак это работает
runObsidian() (src/exec.ts) заключает аргументы в кавычки для оболочки, вызывает бинарный файл obsidian через child_process.exec и разбирает stdout. Большинство инструментов для чтения запрашивают format=json; результаты разбираются в structuredContent для клиентов, которые потребляют структурированный вывод инструментов, при этом возвращая текстовое представление в content.
Реестр инструментов находится в src/tools.ts — добавление новой обертки для команды — это одна запись там.
Справочная информация
CLI Obsidian: https://obsidian.md/help/cli
Спецификация MCP: https://modelcontextprotocol.io
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/yuchi-chang/obsidian-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server