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

Этот репозиторий по умолчанию использует профиль инструментов standard и среду выполнения headless-readonly. Он не содержит реального хранилища, имени хоста, учетных данных, приватных путей или заметок.
Как это работает
Клонируйте этот репозиторий и запустите интерактивный установщик.
Установщик фиксирует и собирает публичный Optimike Obsidian MCP
v3.0.0, устанавливает мост в локальную виртуальную среду (venv) и записывает файл окружения с правами 600. Он не запускает прокси, не запускает Optimike и не касается хранилища.Вы сами запускаете Optimike на loopback, затем запускаете этот прокси на loopback, а затем ставите HTTPS перед прокси.
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 serveGET /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 и подключите | Добавьте 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.
This server cannot be deployed
Maintenance
Related MCP Connectors
OAuth-protected, read-only-by-default MCP server for provenance-labeled QuillCaddie project memory.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
Self-hosted federated MCP gateway: one OAuth 2.1 MCP server in front of N apps, user-level scopes.
One OAuth connector for your team's remote MCP servers, with Tool Packs, guardrails and logs.
Related MCP Servers
- AlicenseAqualityAmaintenanceStandalone 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.1033154 npm32MIT
- AlicenseNot gradedqualityDmaintenanceMulti-tenant remote MCP server that exposes any GitHub-backed Obsidian vault to any MCP client via OAuth authentication.11 npmMIT
- FlicenseDqualityDmaintenanceEnables 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-
- FlicenseNot gradedqualityBmaintenanceRemote MCP server for Obsidian vault access, giving Claude read/search/archive access to markdown notes via OAuth 2.1 + PKCE auth.2-