obsidian-mcp-resilient-bridge
obsidian-mcp-resilient-bridge
Un puente MCP persistente que mantiene Claude Code conectado a tu bóveda de Obsidian incluso cuando Obsidian está cerrado, se reinicia o aún no estaba en ejecución cuando se inició la sesión.
Problema
La forma habitual de conectar Claude Code a Obsidian es npx mcp-remote apuntado a http://localhost:22360, el servidor local que expone el plugin "Claude Code MCP" de Obsidian. Esto funciona, pero es frágil en un aspecto concreto:
mcp-remotese conecta a ese servidor upstream exactamente una vez, en el momento en que Claude Code inicia la sesión.Si Obsidian está cerrado en ese momento, o si Obsidian se cierra o se reinicia en cualquier momento de la sesión, ese intento de conexión falla o la conexión existente se pierde.
Claude Code no restablece por sí solo el transporte de un servidor MCP que ha fallado o se ha interrumpido. La única forma de recuperar la conexión es reiniciar por completo la sesión de Claude Code.
En la práctica: abre Obsidian unos segundos después de iniciar Claude Code, o deja que se bloquee, se actualice o se cierre a mitad de sesión, y tus herramientas de Obsidian han desaparecido hasta que reinicies toda la sesión.
Related MCP server: obsidian-mcp-server
Solución
index.mjs es un pequeño proceso persistente de Node.js, construido sobre @modelcontextprotocol/sdk, que se sitúa entre Claude Code y el plugin de Obsidian y nunca falla por culpa de Obsidian:
Lado downstream (hacía Claude Code): un
Serverde MCP sobre unStdioServerTransport. Este lado es deliberadamente a prueba de fallos: stdout es un canal puro de JSON-RPC hacia Claude Code, y el proceso capturauncaughtException/unhandledRejectionpara que cualquier cosa que ocurra en el lado de Obsidian no pueda romperlo ni cerrar el canal stdio.Lado upstream (hacía Obsidian): un
Clientde MCP sobre unSSEClientTransportapuntando al servidor local del plugin de Obsidian. Este lado tiene su propio bucle de reconexión infinito: ante un fallo o una desconexión, espera 3 segundos y lo intenta de nuevo, para siempre, mientras el proceso del puente siga vivo.Mientras Obsidian esté inalcanzable, las llamadas de herramientas desde Claude Code no se caen ni se quedan colgadas: devuelven un resultado de herramienta MCP normal con un error educado del tipo "Obsidian no está en ejecución ahora mismo, reconectando automáticamente", de modo que Claude simplemente ve un error de herramienta y puede reintentar un momento después en lugar de perder la conexión MCP entera.
Como el puente en sí nunca se desconecta de Claude Code, Claude Code solo necesita iniciarlo una vez por sesión. Después de eso, Obsidian puede cerrarse, volver a abrirse o reiniciarse tantas veces como quieras, y el puente vuelve a conectarse en silencio en segundo plano en cuestión de segundos.
Contenido de este repositorio
index.mjs,package.json: el propio puente resiliente. Escrito desde cero para este repositorio, con licencia MIT.obsidian-plugin/: una copia incluida del plugin "Claude Code MCP" para Obsidian (idclaude-code-mcp) de iansinnott, repositorio original obsidian-claude-code-mcp, licencia 0BSD. Este plugin es el que se ejecuta dentro de Obsidian y expone tu bóveda como herramientas MCP enhttp://localhost:22360. Se incluye aquí tal cual, sin modificaciones (main.js,manifest.json,styles.css), para que te baste con un clon de este único repositorio, sin necesidad de buscar otro que sea o el que menos te dé. Consultaobsidian-plugin/LICENSEy la sección de Créditos de la parte inferior.
Si eres un agente de IA que está haciendo esta configuración para alguien
Sigue estos pasos en orden. Puedes hacer tú mismo los pasos 1, 2, 3 y 5. El paso 4 es lo único que no puedes hacer: es una acción de interfaz gráfica que solo el usuario puede llevar a cabo.
Clona este repositorio en una carpeta permanente (no en un directorio temporal, porque la configuración del paso 5 apuntará a esa ruta exacta durante toda la vida de la instalación):
git clone https://github.com/nekko4044-lgtm/obsidian-mcp-resilient-bridge.git cd obsidian-mcp-resilient-bridgeInstala las dependencias:
npm installInstala el plugin incluido en la bóveda de la persona. Si aún sabes cuál es el directorio de tu bóveda, pregunta a la persona. A continuación, copia el contenido de
obsidian-plugin/dentro de<vault>/.obsidian/plugins/claude-code-mcp/, por ejemplo:mkdir -p "<vault>/.obsidian/plugins/claude-code-mcp" cp obsidian-plugin/main.js obsidian-plugin/manifest.json obsidian-plugin/styles.css "<vault>/.obsidian/plugins/claude-code-mcp/"Pídele a la persona que active el plugin manualmente. En Obsidian: Ajustes → Plugins de la comunidad → busca "Claude Code MCP" → actívalo. Es una acción de interfaz gráfica que no puedes hacer en su nombre.
Añade o actualiza la entrada
obsidiandentro demcpServersen~/.claude.jsony~/.claude/settings.json, con la ruta absoluta alindex.mjsque has clonado en el paso 1:"obsidian": { "type": "stdio", "command": "node", "args": ["/ABSOLUTE/PATH/TO/CLONE/index.mjs"] }Pídele a la persona que reinicie su sesión de Claude Code una vez. La configuración del servidor MCP solo se lee al inicio de la sesión, así que este único reinicio es necesario. Después de eso, no debería necesitar reiniciar Claude Codeentras, solo porque Obsidian se haya cerrado, reabierto o reiniciado: el puente se encarga de ello por su cuenta a partir de ahora.
Configuración manual, para humanos
Si no tienes un agente de IA que lo haga por ti, los mismos pasos a mano:
Clona este repositorio en un lugar permanente (no en
Descargasni en una carpeta temporal):git clone https://github.com/nekko4044-lgtm/obsidian-mcp-resilient-bridge.git cd obsidian-mcp-resilient-bridge npm installCopia el plugin dentro de tu bóveda. Reemplaza
<vault>por la ruta completa de tu bóveda de Obsidian:mkdir -p "<vault>/.obsidian/plugins/claude-code-mcp" cp obsidian-plugin/main.js obsidian-plugin/manifest.json obsidian-plugin/styles.css "<vault>/.obsidian/plugins/claude-code-mcp/"En Obsidian, abre Ajustes → Plugins de la comunidad, y activa "Claude Code MCP". Puede que necesites recargar los plugins o reiniciar Obsidian primero para que aparezca en la lista.
Abre
~/.claude.jsony~/.claude/settings.json, busca la sección cada; si no hay, crea una y añade o reemplaza la entradaobsidiancon:"obsidian": { "type": "stdio", "command": "node", "args": ["/full/path/to/obsidian-mcp-resilient-bridge/index.mjs"] }Usa la ruta completa real de
index.mjsdel paso 1, no la del ejemplo.Cierra la sesión y vuelve a iniciar Claude Code. Es el único reinicio que deberías necesitar: a partir de aquí, cerrar o volver a abrir Obsidian no requerirá lo hacer otra vez.
Cómo funciona
A nivel de arquitectura, index.mjs es un único proceso Node.js que conecta dos conexiones MCP independientes:
Claude Code <--stdio (JSON-RPC)--> [ this bridge ] <--SSE--> Obsidian plugin (localhost:22360)En el arranque, el puente conecta su
StdioServerTransportcon Claude Code de inmediato y sin condiciones. Se espera que este lado permanezca conectado durante toda la sesión de Claude Code.Después, inicia un único bucle de segundo plano (
maintainUpstreamConnection) que es el único lugar encargado de iniciar la conexión upstream, de modo que nunca hay más de un intento de conexión en vuelo. En cualquier desconexión o intento fallido, esperaRECONNECT_DELAY_MS(3000 ms) y lo intenta de nuevo, indefinidamente.Todas las solicitudes MCP del lado downstream (
tools/list,tools/call,resources/list,resources/read,prompts/list,prompts/get, etc.) comprueban el estado actual de la conexión upstream antes de reenviarse. Si upstream no está conectado, las peticiones de tipo lista se degradan a resultados vacíos, y las de tipo call/read/get devuelven un error claro en lugar de quedarse colgadas o lanzar un fallo.Cuando upstream se reconecta correctamente, el puente envía una notificación
notifications/tools/list_changedhacia downstream para que Claude Code sepa que debe renovar su vista de las herramientas disponibles.Todos los registros van solo a
stderr: stdout está reservado exclusivamente para el protocolo JSON-RPC con Claude Code, porque escribir ahí cualquier otra cosa corrompería el transporte stdio.La URL upstream se puede sobreescribir con la variable de entorno
OBSIDIAN_MCP_URLsi tu plugin de Obsidian esta configurado para escuchar en un sitio distinto del predeterminadohttp://localhost:22360/sse.
Licencia
El puente en sí (index.mjs, package.json y todo lo que está en la raíz del repositorio está con licencia MIT: consulta LICENSE.
obsidian-plugin/ es una copia aparte incluida de un proyecto de terceros y está bajo licencia 0BSD: consulta obsidian-plugin/LICENSE. No está cubierto por la licencia MIT de la raíz.
Credits
obsidian-plugin/ incluye una copia del plugin de Obsidian, en un único clon: todo surge del proyecto [oshi][de], junto con nosotros. Agradecimientos...
Gracias a la vista de difundir la idea original: este repositorio únicamente hace que el lado de Claude Code de la conexión sea resistente.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables Claude Code and Claude Desktop to interact with Obsidian vaults through MCP protocol. Supports file operations, workspace context access, and dual transport (WebSocket and HTTP/SSE) for AI-powered assistance with your notes.339BSD Zero Clause
- AlicenseNot gradedqualityDmaintenanceConnects Claude.ai to your local Obsidian vault for full CRUD access, search, and daily note creation via the Model Context Protocol.2114MIT
- FlicenseNot gradedqualityAmaintenanceEnables Obsidian vault to act as an MCP server for Claude and as an MCP client to external servers like MCP ANA PJe, allowing seamless interaction between notes and legal case systems.
- AlicenseAqualityAmaintenanceA local MCP connector that lets Claude read, write and search any Obsidian vault directly from disk.20MIT
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nekko4044-lgtm/obsidian-mcp-resilient-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server