Skip to main content
Glama

GrokBot ↔ Obsidian Bridge

Un pequeño proxy inverso OAuth de cierre ante fallos que permite que Grok Bot y otros clientes MCP compatibles accedan a una bóveda de Obsidian autoalojada. El proceso público termina la aprobación del propietario. El HTTP Streamable autenticado se reenvía únicamente a un backend MCP de Optimike Obsidian en loopback.

Descripción general del puente GrokBot a Obsidian

Este repositorio usa por defecto el perfil de herramientas standard y el tiempo de ejecución headless-readonly. No contiene ninguna bóveda real, nombre de host, credencial, ruta privada ni nota.

Cómo funciona

  1. Clona este repositorio y ejecuta el instalador guiado.

  2. El instalador fija y compila el MCP público Optimike Obsidian v3.0.0, instala el puente en un venv local y escribe un archivo de entorno con permisos 600. No inicia el proxy, no inicia Optimike ni toca una bóveda.

  3. Tú mismo inicias Optimike en loopback, luego inicias este proxy en loopback y después pones HTTPS delante del proxy.

  4. Grok Bot descubre OAuth, registra un cliente y espera la aprobación del propietario. Tras el intercambio PKCE, llama a /mcp. El proxy elimina los secretos del cliente y reenvía la sesión a Optimike.

El código fuente de Optimike no está incluido aquí. Consulta docs/UPSTREAM.md.

Related MCP server: vault-server-MCP

Requisitos

  • Python 3.11+

  • Node.js 22.7.5+ y npm

  • git

  • Un nombre de host HTTPS público que reenvíe a 127.0.0.1:8099

  • Un checkout de Optimike fijado por el instalador a la etiqueta v3.0.0 (0a40387206a19deb6430f9b61b81fc7a07704717)

  • Una copia de la bóveda que ya administres. Este instalador nunca crea, abre ni modifica una.

Un comando después de clonar

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

El script rechaza root y sudo, nunca canaliza una descarga a un shell y nunca imprime el código de propietario generado. Luego inspecciona el estado:

python3 scripts/doctor.py

Completa el marcador de posición restante de la bóveda local en .env.local. Inicia Optimike tú mismo con headless-readonly, standard, readonly, autenticación JWT de producción y el secreto interno generado:

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

En una segunda terminal, inicia el proxy OAuth público:

.venv/bin/python -m obsidian_bridge serve

GET /health debería devolver {"status":"ok"}. No expongas el puerto de Python directamente.

Configurar el plugin

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

Los mcp.json y .mcp.json generados contienen solo la URL pública. No agregues un encabezado Authorization. Grok Bot, Codex y Cursor usan descubrimiento OAuth y PKCE.

Añadir Composio junto a este puente

El consejo de Corey Ganim sobre Grok Bot usa Composio Connect para ir más allá del catálogo nativo de conectores de un cliente. Composio describe Connect como un único endpoint MCP alojado para más de 1000 aplicaciones a través de 7 metaherramientas. No es literalmente cada servidor MCP, y no está incluido en este repositorio.

Mantén las dos conexiones separadas:

Cliente

Este repositorio

Conexión opcional de Composio

Grok Bot

Instala el plugin de Grok y conecta obsidian-bridge

Añade Composio Connect como segundo conector MCP

Cursor

Instala el plugin de Cursor o añade esta URL MCP

Añade Composio Connect como segundo servidor MCP

Codex

Instala el plugin de Codex o añade esta URL MCP

Prefiere el plugin nativo de Codex de Composio, o elige Connect MCP explícitamente

Los manifiestos .grok-plugin, .cursor-plugin y .codex-plugin aquí instalan solo el puente de Obsidian de solo lectura. El tráfico de Composio no pasa por la bóveda y Composio no reemplaza este puente. Consulta el tutorial para el modelo de configuración completo y los límites de seguridad.

Modelo de seguridad

  • OAuth 2.1 de propietario único con DCR, PKCE S256 y tokens de actualización rotativos

  • el código de propietario es obligatorio en la página de aprobación y nunca es un token de portador

  • enlace en loopback; TLS permanece fuera de este proceso

  • el token de portador del cliente se elimina y se reemplaza con un JWT interno de corta duración y firmado por separado antes de que Optimike vea la solicitud

  • /mcp/full y los modos no solo lectura fallan de forma cerrada

  • los secretos permanecen en un archivo local con permisos 600 y fuera de git, argv y stdout

Lee docs/SECURITY.md y docs/ARCHITECTURE.md antes de exponer el endpoint.

Prueba y auditoría

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

Licencia

Este puente es MIT. Optimike Obsidian MCP sigue siendo un proyecto separado con licencia Apache-2.0 y no se copia en este árbol. Consulta docs/UPSTREAM.md.

Maintenance

ActivityStale
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • 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
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Read-only MCP server that exposes an Obsidian vault to LLM clients over Streamable HTTP, letting them browse the accessible tree, read notes, run full-text searches, and resolve wiki-links and backlinks within a share-filtered note set. Access is limited by an operator-editable sharing config that is default-deny and never writes to the vault.
    3,647 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Gives AI clients OAuth-secured, remote read and approval-gated write access to an Obsidian vault, including search, backlinks, diffs, and audited proposals. It also proxies a headless Anki container through a scoped MCP gateway for flashcard management.
    4 npm
    MIT