Skip to main content
Glama

GrokBot ↔ Obsidian Bridge

Небольшой обратный прокси-сервер OAuth с закрытием при сбое, который позволяет Grok Bot и другим совместимым MCP-клиентам получать доступ к самостоятельно размещенному хранилищу Obsidian. Публичный процесс завершает одобрение владельца. Аутентифицированный Streamable HTTP пересылается только на внутренний сервер Optimike Obsidian MCP на loopback.

GrokBot to Obsidian bridge overview

Этот репозиторий по умолчанию использует профиль инструментов standard и среду выполнения headless-readonly. Он не содержит реального хранилища, имени хоста, учетных данных, приватных путей или заметок.

Как это работает

  1. Клонируйте этот репозиторий и запустите интерактивный установщик.

  2. Установщик фиксирует и собирает публичный Optimike Obsidian MCP v3.0.0, устанавливает мост в локальную виртуальную среду (venv) и записывает файл окружения с правами 600. Он не запускает прокси, не запускает Optimike и не касается хранилища.

  3. Вы сами запускаете Optimike на loopback, затем запускаете этот прокси на loopback, а затем ставите HTTPS перед прокси.

  4. Grok Bot обнаруживает OAuth, регистрирует клиента и ожидает одобрения владельца. После обмена PKCE он вызывает /mcp. Прокси удаляет секреты клиента и пересылает сессию в Optimike.

Исходный код Optimike не включен сюда. См. docs/UPSTREAM.md.

Related MCP server: obsidian-vault-mcp

Требования

  • Python 3.11+

  • Node.js 22.7.5+ и npm

  • git

  • Публичное HTTPS-имя хоста, которое пересылает на 127.0.0.1:8099

  • Проверка Optimike, зафиксированная установщиком на теге v3.0.0 (0a40387206a19deb6430f9b61b81fc7a07704717)

  • Копия хранилища, которой вы уже управляете. Этот установщик никогда не создает, не открывает и не изменяет его.

Одна команда после клонирования

./scripts/install.sh --non-interactive

Скрипт отказывается работать от root и sudo, никогда не передает загрузку в оболочку и никогда не выводит сгенерированный код владельца. Затем проверьте работоспособность:

python3 scripts/doctor.py

Заполните оставшийся локальный плейсхолдер хранилища в .env.local. Запустите Optimike самостоятельно с headless-readonly, standard, readonly, производственной JWT-аутентификацией и сгенерированным внутренним секретом:

set -a
. ./.env.local
set +a
cd .runtime/upstream
NODE_ENV=production MCP_TRANSPORT_TYPE=http MCP_HTTP_HOST=127.0.0.1 \
MCP_HTTP_PORT=3010 MCP_AUTH_MODE=jwt \
MCP_AUTH_SECRET_KEY="$OBSIDIAN_BRIDGE_UPSTREAM_JWT_SECRET" \
node dist/index.js

Во втором терминале запустите публичный OAuth-прокси:

.venv/bin/python -m obsidian_bridge serve

GET /health должен возвращать {"status":"ok"}. Не открывайте порт Python напрямую.

Настройка плагина

python3 scripts/configure_plugin.py https://mcp.example.com/mcp

Сгенерированные mcp.json и .mcp.json содержат только публичный URL. Не добавляйте заголовок Authorization. Grok Bot, Codex и Cursor используют обнаружение OAuth и PKCE.

Добавление Composio рядом с этим мостом

Совет Corey Ganim по Grok Bot использует Composio Connect, чтобы выйти за пределы встроенного каталога коннекторов клиента. Composio описывает Connect как одну размещенную конечную точку MCP для более чем 1000 приложений через 7 мета-инструментов. Это не буквально каждый MCP-сервер, и он не входит в этот репозиторий.

Держите два подключения раздельно:

Клиент

Этот репозиторий

Необязательное подключение Composio

Grok Bot

Установите плагин Grok и подключите obsidian-bridge

Добавьте Composio Connect как второй MCP-коннектор

Cursor

Установите плагин Cursor или добавьте этот MCP URL

Добавьте Composio Connect как второй MCP-сервер

Codex

Установите плагин Codex или добавьте этот MCP URL

Предпочтите нативный плагин Codex от Composio или явно выберите Connect MCP

Манифесты .grok-plugin, .cursor-plugin и .codex-plugin здесь устанавливают только мост Obsidian в режиме только для чтения. Трафик Composio не проходит через хранилище, и Composio не заменяет этот мост. См. руководство для полной модели настройки и границ безопасности.

Модель безопасности

  • OAuth 2.1 с одним владельцем, DCR, S256 PKCE и ротацией refresh-токенов

  • код владельца требуется на странице одобрения и никогда не является bearer-токеном

  • привязка к loopback; TLS остается вне этого процесса

  • bearer-токен клиента удаляется и заменяется кратковременным, отдельно подписанным внутренним JWT до того, как Optimike увидит запрос

  • /mcp/full и режимы, отличные от readonly, закрываются при сбое

  • секреты хранятся в локальном файле с правами 600 и не попадают в git, argv и stdout

Прочтите docs/SECURITY.md и docs/ARCHITECTURE.md перед тем, как открывать конечную точку.

Тестирование и аудит

python3 -m unittest discover -s tests -v
python3 src/privacy_scan.py --root .
python3 scripts/audit_git_history.py

Лицензия

Этот мост распространяется под лицензией MIT. Optimike Obsidian MCP остается отдельным проектом Apache-2.0 и не копируется в это дерево. См. docs/UPSTREAM.md.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Standalone MCP server for Obsidian vaults - hybrid search (FTS5 + vector + cross-encoder reranking), images and PDFs in agent-readable form, Kanban-aware tasks (Tasks-plugin + Dataview formats), structured memory with topic recall, fine-grained read/write tools for optimal token efficiency, and link graph support. Run locally, self-host, or one-click deploy for remote access. OAuth 2.1.
    10
    33
    154 npm
    32
    MIT
  • F
    license
    D
    quality
    D
    maintenance
    Enables Claude Desktop to securely search and retrieve knowledge from an Obsidian vault through a stateless MCP interface, with progressive disclosure and gated write capabilities.
    13
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Remote MCP server for Obsidian vault access, giving Claude read/search/archive access to markdown notes via OAuth 2.1 + PKCE auth.
    2
    -