[2026-09-26] eagle: personal/plans/balda-mm-phase4-agents.md personal/plans/tagwriter-container.md personal/projects/personal-os/obsidian-mcp-setup.md personal/tech/balda-executor-mcp.md personal/tech/obsidian-mcp-ecosystem.md
This commit is contained in:
1 parent
9e7a888f94
commit
270c4b7c52
5 files changed
+326
-11
No files matched your search
@@ -60,6 +60,115 @@ mcp_servers:
|
||||
|
||||
Workaround: использовать Hermes `patch()` (fuzzy matching, 9 стратегий) для сложных строк. `mcp_obsidian_patch_note` — только для простого текста без спецсимволов.
|
||||
|
||||
## Fact: Obsidian MCP на Kraken — есть, и это stdio-процесс Hermes
|
||||
|
||||
Проверено 2026-09-26. На Kraken MCP-сервер **не является отдельным контейнером** —
|
||||
его спавнит агент Hermes как дочерний процесс. Первый поиск «нет контейнера →
|
||||
нет MCP» был **ошибочным**: искать надо было процессы, а не `docker ps`.
|
||||
|
||||
```
|
||||
# на хосте Kraken
|
||||
ps aux | grep mcpvault
|
||||
→ UID 10000 1168741 ... node /opt/data/.local/bin/mcpvault /vault
|
||||
PPID 5039 → /opt/hermes/.venv/bin/hermes gateway (контейнер hermes-kraken)
|
||||
```
|
||||
|
||||
Конфиг (`/opt/data/config.yaml` **внутри** контейнера `hermes-kraken`):
|
||||
|
||||
```yaml
|
||||
mcp_servers:
|
||||
obsidian:
|
||||
command: /opt/data/.local/bin/mcpvault
|
||||
args:
|
||||
- /vault
|
||||
```
|
||||
|
||||
`mcpvault` там — симлинк на npm-пакет: `/opt/data/.local/lib/node_modules/@bitbonsai/mcpvault/dist/server.js`.
|
||||
|
||||
### Волт на Kraken — реальный, не пустой
|
||||
|
||||
```
|
||||
/home/kraken/obsidian -> /srv/dev-disk-by-uuid-49e8f586-…/obsidian
|
||||
(тот же HDD, что и docker-data)
|
||||
```
|
||||
|
||||
Внутри: `personal/`, `family/`, `.obsidian/`, `.git/`, `_index.md` — полноценная
|
||||
git-реплика волта Mac. То есть **волт существует в обоих местах**, а не только на Mac.
|
||||
|
||||
### Итог: два независимых Obsidian MCP
|
||||
|
||||
| Где | Как | Транспорт | Порт |
|
||||
|---|---|---|---|
|
||||
| Mac | контейнер `obsidian-mcp` (`mcp-proxy` → `mcpvault`) | SSE | `:3101`, публикуется на `0.0.0.0` |
|
||||
| Kraken | `mcpvault` как дочерний процесс `hermes-kraken` | **stdio** | нет |
|
||||
| Kraken (для Балды) | контейнер `obsidian-mcp` — **создан 2026-09-26** | SSE | `:3101`, только внутри `mattermost_mm-net` |
|
||||
|
||||
📌 `mcpvault` **не умеет HTTP** — только stdio (`--help` подтверждает: только `[vault-path]`).
|
||||
Чтобы отдать его по сети, нужен `mcp-proxy` (обёртка stdio → SSE). Именно так сделано
|
||||
на Mac и повторено на Kraken.
|
||||
|
||||
---
|
||||
|
||||
## Fact: obsidian-mcp на Kraken для Балды (создан 2026-09-26)
|
||||
|
||||
Собрано для шага 5 [[personal/plans/balda-mm-phase4-agents]]: Балде нужен доступ к
|
||||
волту, чтобы читать документацию при формировании ТЗ.
|
||||
|
||||
**Точная копия рабочей схемы с Mac** — пара `mcp-proxy` + `mcpvault`:
|
||||
|
||||
| Что | Путь / значение |
|
||||
|---|---|
|
||||
| Проект (Mac) | `~/Developer/obsidian-mcp-kraken/` |
|
||||
| Dockerfile | `node:24-bookworm` + `@bitbonsai/mcpvault@0.11.0` + `mcp-proxy@6.4.4` |
|
||||
| Образ | `obsidian-mcp-image:0.1.0` (загружен на Kraken) |
|
||||
| Compose (Kraken) | `/home/kraken/obsidian-mcp/docker-compose.yml` |
|
||||
| Контейнер | `obsidian-mcp`, сеть `mattermost_mm-net` |
|
||||
| Волт | `/srv/dev-disk-by-uuid-49e8f586-…/obsidian` → `/vault` **`:ro`** |
|
||||
| Команда | `mcp-proxy --port 3101 -- mcpvault /vault` |
|
||||
|
||||
🔴 **Волт смонтирован только для чтения (`:ro`).** Балда читает документацию, но не
|
||||
правит её. Запись в волт через Балду — отдельное решение, требует апрува Alex.
|
||||
|
||||
```yaml
|
||||
services:
|
||||
obsidian-mcp:
|
||||
image: obsidian-mcp-image:0.1.0
|
||||
container_name: obsidian-mcp
|
||||
restart: unless-stopped
|
||||
command: ["--port", "3101", "--", "mcpvault", "/vault"]
|
||||
volumes:
|
||||
- /srv/dev-disk-by-uuid-49e8f586-…/obsidian:/vault:ro
|
||||
networks:
|
||||
- mm-net # mattermost_mm-net, external
|
||||
```
|
||||
|
||||
### Питфоллы, пройденные при сборке
|
||||
|
||||
| # | Питфолл | Симптом | Фикс |
|
||||
|---|---|---|---|
|
||||
| 1 | `--host` у `mcp-proxy` **нет** | контейнер падает на разборе аргументов | только `--port N -- <cmd> <args>`; слушает `0.0.0.0` по умолчанию |
|
||||
| 2 | Точка монтирования должна существовать в образе | `mkdir -p /vault` в Dockerfile + `WORKDIR /vault` | иначе mcpvault стартует не в том каталоге |
|
||||
|
||||
### Проверка
|
||||
|
||||
```bash
|
||||
# /sse отвечает 200 (и локально, и из docker-сети Kraken)
|
||||
curl -s -o /dev/null -w "%{http_code}\n" http://obsidian-mcp:3101/sse
|
||||
|
||||
# конфиг Балды (ещё НЕ применён — см. ниже)
|
||||
runtime:
|
||||
mcp_servers:
|
||||
obsidian:
|
||||
type: http
|
||||
url: "http://obsidian-mcp:3101/sse"
|
||||
```
|
||||
|
||||
⚠️ **Не применено:** конфиг Балды (`config.yaml` на Kraken) пока содержит **только**
|
||||
`executor-mcp`. Obsidian туда ещё не прописан — ждёт переключения `executor-mcp`
|
||||
на `type: http` (делается одним заходом).
|
||||
|
||||
---
|
||||
|
||||
## Эволюция Obsidian MCP у нас
|
||||
|
||||
| Период | Что было | Проблемы |
|
||||
|
||||
Reference in new issue
Block a user