
Servidor de herramientas MCP de Obsidian
Este proyecto proporciona un servidor de Protocolo de Contexto de Modelo (MCP) que expone herramientas para interactuar con una bóveda de Obsidian.
Tabla de contenido
Características
Permite a los clientes MCP (como los asistentes de IA):
Leer y escribir notas
Administrar metadatos de notas (frontmatter)
Lista de notas y carpetas
Buscar notas por contenido o metadatos
Administrar notas diarias
Obtenga enlaces salientes, backlinks y etiquetas
Instalación
Clona el repositorio (si aún no lo has hecho):
# git clone <repository-url> # cd OMCPNavegue hasta el directorio del proyecto :
cd /path/to/your/OMCPCree un entorno virtual de Python (recomendado para evitar conflictos de dependencia):
python -m venv .venvActivar el entorno virtual :
En Windows PowerShell:
.venv\Scripts\Activate.ps1En Linux/macOS:
GXP5 (Su terminal ahora debería mostrar
(.venv)al comienzo)
Instalar el paquete y sus dependencias:
pip install .
Configuración
Este servidor se configura utilizando variables de entorno, que se pueden administrar cómodamente mediante un archivo .env en la raíz del proyecto.
Copia el archivo de ejemplo:
# From the project root directory (OMCP/) cp .env.example .env(En Windows, puedes usar
copy .env.example .env)Editar el archivo abra el archivo
.envrecién creado en un editor de texto.Establezca Esta es la única variable obligatoria . Actualícela con la ruta absoluta a su bóveda de Obsidian. Use barras diagonales (
/) para las rutas, incluso en Windows.OMCP_VAULT_PATH="/path/to/your/Obsidian/Vault"Revisar la configuración opcional: Ajuste las demás variables
OMCP_para las notas diarias, el puerto del servidor o el directorio de copias de seguridad, si es necesario. Lea los comentarios del archivo para obtener explicaciones.
(Alternativamente, en lugar de utilizar un archivo
Ejecución manual (para pruebas/depuración)
Si bien las aplicaciones cliente como Claude Desktop iniciarán el servidor automáticamente utilizando la configuración descrita a continuación, también puede ejecutar el servidor manualmente desde su terminal para realizar pruebas o depuraciones directas.
Asegúrese de que la configuración esté realizada: asegúrese de haber creado y configurado su archivo
.envcomo se describe en la sección Configuración.Activar entorno virtual:
# If not already active .venv\Scripts\Activate.ps1(Utilice
Ejecute el script del servidor:
(.venv) ...> python obsidian_mcp_server/main.py
El servidor se iniciará e imprimirá la dirección en la que está escuchando (p. ej., http://127.0.0.1:8001 ). Normalmente, se presiona Ctrl+C para detenerlo al finalizar la prueba.
Recuerde: Si pretende usar este servidor con Claude Desktop o un lanzador similar, no debe ejecutarlo manualmente de esta manera. Configure la aplicación cliente (consulte la siguiente sección) y esta se encargará de iniciar y detener el proceso del servidor.
Configuración del cliente (Ejemplo: Claude Desktop)
Muchos clientes MCP (como Claude Desktop) pueden iniciar procesos de servidor directamente. Para configurar un cliente de este tipo, normalmente es necesario editar su archivo de configuración JSON (p. ej., claude_desktop_config.json en macOS/Linux; busque la ruta equivalente en Windows en AppData ).
⚠️ Reglas importantes de formato JSON:
Los archivos JSON no admiten comentarios (elimine cualquier comentario
//o/* */)Todas las cadenas deben estar correctamente entre comillas dobles (
")Las rutas de Windows deben usar barras invertidas con escape (
\\)Utilice un validador JSON (como jsonlint.com ) para comprobar su sintaxis
A continuación se muestra un ejemplo de entrada para agregar bajo la clave mcpServers en la configuración JSON del cliente:
Puntos clave:
Reemplace las rutas con las rutas absolutas relevantes para su sistema
Para las rutas de Windows en los campos
commandyargs:Utilice barras invertidas dobles (
\\) para separar rutasIncluya la extensión
.exepara el ejecutable de Python
Para rutas de Windows en el bloque
env:Utilice barras diagonales (
/) para una mejor compatibilidadNo incluya la extensión
.exe
La ruta
commanddebe apuntar al ejecutablepython.exedentro del.venvque creóLa ruta
argsdebe apuntar al archivomain.pydentro de la subcarpetaobsidian_mcp_serverUsar el bloque
enves la forma más confiable de garantizar que el servidor encuentre la ruta de su bóvedaRecuerde reiniciar la aplicación cliente después de modificar su configuración JSON
Errores comunes que se deben evitar:
No utilice barras invertidas simples en las rutas de Windows
No incluya comentarios en el JSON
No olvide escapar las barras invertidas en las rutas de Windows
No mezcle barras diagonales e inversas en la misma ruta
No olvides citar correctamente todas las cadenas
Herramientas MCP disponibles
list_folderslist_notesget_note_contentget_note_metadataget_outgoing_linksget_backlinksget_all_tagssearch_notes_contentsearch_notes_metadatasearch_folderscreate_noteedit_noteappend_to_noteupdate_note_metadatadelete_noteget_daily_note_pathcreate_daily_noteappend_to_daily_note
Hoja de ruta
Para obtener un plan de implementación detallado y por fases que incluya consideraciones de manejo de errores, consulte el archivo ROADMAP.md .
Este proyecto se encuentra en desarrollo activo. A continuación, se presentan las características planificadas:
v1.x (a corto plazo)
Creación de notas basada en plantillas:
Configurar un directorio de plantillas (
OMCP_TEMPLATE_DIR).Implementar la herramienta
create_note_from_template(usando el nombre de la plantilla, la ruta de destino y los metadatos opcionales).Agregar pruebas para la creación de plantillas.
Creación de carpeta:
Implementar la función de utilidad
create_folder.Implementar la herramienta MCP
create_folder.Agregar pruebas para la creación de carpetas.
v1.y (Mejoras a medio plazo/futuras)
Sustitución de variables en plantillas (por ejemplo,
{{DATE}}).herramienta
list_templates.Herramientas avanzadas de actualización de notas (por ejemplo,
append_to_note_by_metadata).Herramienta
list_vault_structurepara una vista completa de la jerarquía de bóveda.Revisión y ampliación integral de pruebas.
v2.x+ (Ideas potenciales / A largo plazo)
Herramientas de organización:
move_item(source, destination)(Es posible que la versión inicial no actualice los enlaces).rename_item(path, new_name)(Es posible que la versión inicial no actualice los enlaces).
Herramientas de manipulación de contenido:
replace_text_in_note(path, old, new, count).prepend_to_note(path, content).append_to_section(path, heading, content)(Requiere un análisis de encabezado confiable).
Herramientas de consulta:
get_local_graph(path)(Combina enlaces salientes y entrantes).search_notes_by_metadata_field(key, value).
Herramientas de integración de complementos:
Integración de Dataview:
execute_dataview_query(query_type, query): ejecuta consultas de Dataview y obtiene resultados estructuradossearch_by_dataview_field(field, value): busca notas por campos de Dataview
Gestión de tareas:
query_tasks(status, due_date, tags): busca y filtra tareas en el almacén
Integración Kanban:
get_kanban_data(board_path): obtiene datos estructurados del tablero kanban
Integración de calendario:
get_calendar_events(start_date, end_date)- Consultar eventos y tareas del calendario
Preguntas frecuentes (FAQ)
Problemas de configuración
P: Mi servidor no encuentra mi bóveda. ¿Cuál es el problema? R: Esto suele deberse a una configuración de ruta incorrecta. Verificar:
La
OMCP_VAULT_PATHen su archivo.envusa barras diagonales (/) incluso en WindowsLa ruta es absoluta (comienza desde la raíz)
La ruta no termina con una barra diagonal final
El directorio de la bóveda existe y es accesible
P: ¿Por qué recibo errores de permiso? R: Esto suele ocurrir cuando:
La ruta de la bóveda apunta a un directorio restringido
El proceso de Python no tiene permisos de lectura/escritura
La bóveda está en una carpeta sincronizada en la nube (como OneDrive) que actualmente se está sincronizando
Intentar:
Mover su bóveda al directorio local
Ejecutar el servidor con permisos elevados
Comprobar que tu antivirus no bloquea el acceso
Problemas de conexión del cliente
P: Mi cliente de IA no se conecta al servidor. ¿Qué debo comprobar? R: Verifique estos problemas comunes:
El servidor está realmente ejecutándose (verifique la salida del terminal)
El puerto en la configuración de su cliente coincide con el puerto del servidor
La ruta de Python en la configuración de su cliente apunta al entorno virtual correcto
Todas las variables de entorno están configuradas correctamente en la configuración del cliente.
P: ¿Por qué recibo errores de "Conexión rechazada"? R: Esto suele significar:
El servidor no está funcionando
El puerto ya está en uso
El firewall está bloqueando la conexión
Intentar:
Compruebe si el servidor está en ejecución:
netstat -ano | findstr :8001(Windows)Pruebe un puerto diferente configurando
OMCP_SERVER_PORTen su.envDesactivar temporalmente el firewall para realizar pruebas
P: Recibo el error "[error] [obsidian_vault] Token inesperado 'S', "Iniciando O"... no es un JSON válido". ¿Cuál es el problema? R: Este error se produce cuando el archivo de configuración JSON del cliente tiene un formato incorrecto. Causas comunes:
Comas faltantes o adicionales en el JSON
Barras invertidas sin escape en rutas de Windows
Comentarios en JSON (JSON no admite comentarios)
Verifique el archivo de configuración de su cliente (por ejemplo, claude_desktop_config.json ):
Utilice un validador JSON (como jsonlint.com ) para comprobar la sintaxis
Para rutas de Windows, escape las barras invertidas:
"C:\\path\\to\\file"Eliminar cualquier comentario (// o /* */)
Asegúrese de que todas las cadenas estén correctamente citadas
Compruebe que todos los soportes y tirantes estén correctamente cerrados
Ejemplo de formato de ruta correcto de Windows:
P: Recibo un error de tiempo de espera y el mensaje "Servidor desconectado". ¿Qué ocurre? R: Este patrón de error (inicialización exitosa, luego tiempo de espera después de 60 segundos) suele significar:
El servidor ya está ejecutándose en otro proceso
El puerto ya está siendo utilizado por otra aplicación
El proceso del servidor se está terminando inesperadamente
Pruebe estos pasos en orden:
Comprobar si hay procesos del servidor en ejecución:
# On Windows netstat -ano | findstr :8001 # Look for the PID and then: taskkill /F /PID <PID># On Linux/macOS lsof -i :8001 # Look for the PID and then: kill -9 <PID>Compruebe si hay otras aplicaciones que utilizan el puerto:
Cierre cualquier otra aplicación que pueda usar el puerto 8001
Esto incluye otros servidores MCP, servidores de desarrollo o cualquier aplicación web.
Si no está seguro, intente cambiar el puerto en su
.env:OMCP_SERVER_PORT=8002
Verificar el proceso del servidor:
Abra el Administrador de tareas (Windows) o el Monitor de actividad (macOS)
Busque cualquier proceso de Python relacionado con el servidor MCP
Poner fin a cualquier proceso sospechoso
Comprobar los recursos del sistema:
Asegúrese de tener suficiente memoria y CPU disponibles
Compruebe si algún antivirus o software de seguridad está bloqueando el proceso
Verifique que su entorno Python tenga los permisos adecuados
Reiniciar todo:
Detener la aplicación cliente
Elimine cualquier proceso restante del servidor
Elimina el archivo
.envy crea uno nuevo desde.env.exampleReinicie su computadora (si los otros pasos no funcionan)
Comience de nuevo con la aplicación cliente
Si el problema persiste después de intentar todos estos pasos, comparte:
El registro de errores completo
La salida de
netstat -ano | findstr :8001(Windows) olsof -i :8001(Linux/macOS)Cualquier mensaje de error de los registros de eventos de su sistema
P: El servidor se desconecta inmediatamente con el mensaje "Transporte del servidor cerrado inesperadamente... proceso saliendo antes de tiempo". ¿Cuál es el problema? R: Este error significa que el proceso del servidor Python se bloqueó casi inmediatamente después de ser iniciado por el cliente. No se trata de un tiempo de espera; el script del servidor no se ejecutó o no permaneció en ejecución.
Causas comunes:
Rutas incorrectas en el JSON del cliente:
commandno apunta alpython.execorrecto dentro del.venv.argsno apunta al scriptobsidian_mcp_server/main.pycorrecto.Separadores de ruta incorrectos o escapes de barra invertida faltantes (
\\) en Windows.
Dependencias faltantes:
Los paquetes requeridos de
requirements.txtno están instalados en el.venv.El cliente está iniciando Python sin activar correctamente el entorno virtual.
Errores de sintaxis: un cambio de código reciente introdujo un error de sintaxis de Python.
Error crítico de configuración/permiso:
Error al leer el archivo
.enval inicio.OMCP_VAULT_PATHno válido o inaccesible.El proceso de Python carece de permisos para ejecutarse o acceder a archivos.
Excepción temprana no controlada: se produce un error durante la configuración inicial antes de que el servidor comience a escuchar.
Pasos para la solución de problemas:
Verificar las rutas JSON del cliente: Verifique las rutas absolutas de
commandyargsen la configuración JSON de su cliente. Use barras invertidas de escape (\\) para las rutas de Windows.Prueba manual (paso crucial):
Activa el entorno virtual en tu terminal:
# On Windows .\.venv\Scripts\activate# On Linux/macOS source .venv/bin/activateEjecute el servidor directamente:
python obsidian_mcp_server/main.pyRevise atentamente si aparecen mensajes de error directamente en la terminal. Esto ignora al cliente y suele revelar la causa raíz (como
ImportError,SyntaxErroroFileNotFoundError).
Comprobar dependencias: con venv activado, ejecute
pip checkypip install -r requirements.txt.Validar asegúrese de que
.envexista, sea legible y queOMCP_VAULT_PATHsea correcto (use barras diagonales/).Revisar cambios recientes de código: verifique si hay errores de sintaxis o problemas en archivos Python editados recientemente.
Operaciones con notas
P: ¿Por qué no puedo crear ni editar notas en ciertas carpetas? R: Esto podría deberse a:
Restricciones de seguridad de ruta (intentar escribir fuera del almacén)
Permisos de carpeta
Bloqueos de archivos de otros procesos
Intentar:
Uso de rutas relativas dentro de su bóveda
Comprobación de permisos de carpeta
Cerrar otros programas que puedan tener los archivos abiertos
P: ¿Por qué no se guardan las actualizaciones de mis notas? R: Causas comunes:
La ruta de la nota es incorrecta
El formato del contenido no es válido
Falló la creación de la copia de seguridad
Controlar:
La ruta de la nota existe y es accesible
El contenido es markdown válido
El directorio de respaldo tiene permisos de escritura
Notas diarias
P: ¿Por qué no se crean mis notas diarias en la ubicación correcta? R: Verificar:
OMCP_DAILY_NOTE_LOCATIONestá configurado correctamente en.envLa ruta utiliza barras diagonales
La carpeta de destino existe
El formato de fecha coincide con la configuración de su bóveda
Solución de problemas generales
P: ¿Cómo puedo comprobar si el servidor funciona correctamente? R: Ejecute el cliente de prueba:
Esto realizará una serie de operaciones e informará cualquier problema.
P: ¿Dónde puedo encontrar los registros de errores? R: Consultar:
La terminal donde se ejecuta el servidor
El directorio de respaldo para operaciones fallidas
Los registros de eventos del sistema para problemas de permisos
P: ¿Cómo reinicio todo para empezar de cero? R: Prueba estos pasos:
Detener el servidor
Eliminar el archivo
.envCrea un nuevo
.enva partir de.env.exampleReiniciar el servidor
¡Contribuciones bienvenidas!
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
Proporciona un servidor MCP que permite a los asistentes de IA interactuar con las bóvedas de Obsidian, lo que permite leer/escribir notas, administrar metadatos, buscar contenido y trabajar con notas diarias.
Related MCP Servers
- -security-license-qualityA local MCP server that enables AI applications like Claude Desktop to securely access and work with Obsidian vaults, providing capabilities for reading notes, executing templates, and performing semantic searches.Last updated -362MIT License
- -security-license-qualityProvides a standardized interface for AI assistants to interact with Obsidian vaults through a local REST API, enabling reading, writing, searching, and managing notes.Last updated -58MIT License
- Asecurity-licenseAqualityThis project implements a Model Context Protocol (MCP) server for connecting AI models with Obsidian knowledge bases. Through this server, AI models can directly access and manipulate Obsidian notes, including reading, creating, updating, and deleting notes, as well as managing folder structures.Last updated -1177209MIT License
- Asecurity-licenseAqualityA Model Context Protocol server that enables AI assistants to read, write, and manipulate notes in your Obsidian vault through a standardized interface.Last updated -52282ISC License