Files

4.4 KiB
Raw Permalink Blame History

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 на старте:

  1. Читает mcp_servers из config.yaml
  2. Спавнит mcpvault /Users/admin/obsidian как subprocess
  3. Init + list_tools → регистрирует инструменты как mcp_obsidian_*
  4. Агент видит инструменты 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УСТАРЕЛ, не отражает реальность