4.4 KiB
Obsidian MCP — текущая архитектура
Факт: что стоит сейчас
Hermes native MCP client (встроен в Hermes Agent, не wrapper).
Конфиг в ~/.hermes/config.yaml (и в ~/.hermes/hermes-whale/config.yaml):
mcp_servers:
obsidian:
command: mcpvault
args:
- /Users/admin/obsidian
Пакет: @bitbonsai/mcpvault v0.12.1 (npm). Команда mcpvault.
Hermes на старте:
- Читает
mcp_serversиз config.yaml - Спавнит
mcpvault /Users/admin/obsidianкак subprocess - Init + list_tools → регистрирует инструменты как
mcp_obsidian_* - Агент видит инструменты
mcp_obsidian_read_note,mcp_obsidian_patch_note, и т.д.
Схема:
Hermes (native MCP client) → spawn: mcpvault → reads/writes /Users/admin/obsidian/
Инструменты, доступные через эту связку
read_note, write_note, patch_note, list_directory, delete_note, search_notes, move_note, move_file, read_multiple_notes, update_frontmatter, get_notes_info, get_frontmatter, manage_tags, get_vault_stats, list_all_tags.
Факт: что такое ~/scripts/obsidian-mcp-wrapper.js и почему он НЕ используется
Создан 2026-05-09, когда вместо mcpvault стоял npx obsidian-mcp (старый пакет, автор Steven, ещё до переименования в @bitbonsai/mcpvault). Пакет постоянно падал:
- ZodError на
"id": nullв notifications —.strict()валидация - Race condition при рестарте gateway
- UTF-8 chunk split портил большие JSON
- Зависания без watchdog
Wrapper решал всё это. Сейчас НЕ используется. Конфиг в ~/.hermes/config.yaml:
mcp_servers:
obsidian:
command: mcpvault # ← не node wrapper.js
args:
- /Users/admin/obsidian
Почему: после перехода на @bitbonsai/mcpvault (пришёл на смену старому obsidian-mcp), пакет стабильно работает с Hermes native MCP client. Wrapper стал не нужен. Конфиг поменяли, а doc не обновили.
Файл ~/scripts/obsidian-mcp-wrapper.js лежит на диске, не используется. Надо удалить.
Факт: корень проблем с patch_note
mcp_obsidian_patch_note падает с "String not found" — это НЕ проблема транспорта. Это проблема самого mcpvault:
- Файл:
dist/src/filesystem.js, строка 217 - Механизм:
fullContent.split(oldString).length - 1 - Exact string match — без trim, без fuzzy, без нормализации whitespace
Workaround: использовать Hermes patch() (fuzzy matching, 9 стратегий) для сложных строк. mcp_obsidian_patch_note — только для простого текста без спецсимволов.
Эволюция Obsidian MCP у нас
| Период | Что было | Проблемы |
|---|---|---|
| До 2026-05-09 | npx obsidian-mcp (пакет Steven, прямой) |
ZodError, race condition, UTF-8 chunk split, зависания |
| 2026-05-09 → ? | npx obsidian-mcp через wrapper |
Wrapper решил проблемы |
| Сейчас | mcpvault (Hermes native MCP client) |
Стабильно. patch_note exact match — единственная боль |
Рекомендация по замене (2026-06-24)
При проблемах с mcpvault (зависания, память, exact match) — cyanheads/obsidian-mcp-server:
obsidian_replace_in_noteс regex + flexible whitespace (решает exact match)- 9.7K dl/week, dual transport (stdio + HTTP), active
- Требует Obsidian Local REST API plugin (Obsidian должен быть открыт)
- Есть Docker support (
ghcr.io/cyanheads/obsidian-mcp-server)
Подробнее: personal/tech/obsidian-mcp-ecosystem.md
См. также
personal/tech/obsidian-mcp-ecosystem.md— обзор всех 6 реализаций- ⚠️
personal/projects/personal-os/obsidian-mcp-wrapper.md— УСТАРЕЛ, не отражает реальность