local-only server
The server can only run on the client’s local machine because it depends on local resources.
Integrations
Uses .env files for server configuration, allowing users to set vault paths, daily note locations, server ports, and other settings through environment variables.
Works with Markdown files in the Obsidian vault, allowing creation, editing, and manipulation of Markdown content and frontmatter metadata.
Provides tools for interacting with an Obsidian vault, including reading and writing notes, managing note metadata, listing notes and folders, searching content, managing daily notes, and working with links, backlinks, and tags.
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
- Instalación
- Configuración
- Ejecución manual (para pruebas/depuración)
- Configuración del cliente (Ejemplo: Claude Desktop)
- Herramientas MCP disponibles
- Hoja de ruta
- Preguntas frecuentes (FAQ)
- ¡Contribuciones bienvenidas!
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):Copy
- Navegue hasta el directorio del proyecto :Copy
- Cree un entorno virtual de Python (recomendado para evitar conflictos de dependencia):Copy
- Activar el entorno virtual :
- En Windows PowerShell:Copy
- En Linux/macOS:GXP5 (Su terminal ahora debería mostrar
(.venv)
al comienzo)
- En Windows PowerShell:
- Instalar el paquete y sus dependencias:Copy
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:(En Windows, puedes usarCopy
copy .env.example .env
) - Editar el archivo
.env
: abra el archivo.env
recién creado en un editor de texto. - Establezca
OMCP_VAULT_PATH
: 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.Copy - 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 .env
, puede configurarlos como variables de entorno del sistema reales. El servidor priorizará las variables de entorno del sistema sobre el archivo .env
si ambos están configurados).
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
.env
como se describe en la sección Configuración. - Activar entorno virtual:(UtiliceCopy
source .venv/bin/activate
en Linux/macOS) - Ejecute el script del servidor:Copy
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 terminar 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
command
yargs
:- Utilice barras invertidas dobles (
\\
) para separar rutas - Incluya la extensión
.exe
para el ejecutable de Python
- Utilice barras invertidas dobles (
- Para rutas de Windows en el bloque
env
:- Utilice barras diagonales (
/
) para una mejor compatibilidad - No incluya la extensión
.exe
- Utilice barras diagonales (
- La ruta
command
debe apuntar al ejecutablepython.exe
dentro del.venv
que creó - La ruta
args
debe apuntar al archivomain.py
dentro de la subcarpetaobsidian_mcp_server
- Usar el bloque
env
es la forma más confiable de garantizar que el servidor encuentre la ruta de su bóveda - Recuerde 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_folders
list_notes
get_note_content
get_note_metadata
get_outgoing_links
get_backlinks
get_all_tags
search_notes_content
search_notes_metadata
search_folders
create_note
edit_note
append_to_note
update_note_metadata
delete_note
get_daily_note_path
create_daily_note
append_to_daily_note
Hoja de ruta
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.
- Configurar un directorio 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.
- Implementar la función de utilidad
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_structure
para 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
- Integración de Dataview:
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_PATH
en su archivo.env
usa barras diagonales (/
) incluso en Windows - La 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 a un 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_PORT
en su.env
- Desactivar 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:CopyCopy
- 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
:Copy
- 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
.env
y crea uno nuevo desde.env.example
- Reinicie 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 JSON del cliente:
command
no apunta alpython.exe
correcto dentro del.venv
.args
no apunta al scriptobsidian_mcp_server/main.py
correcto.- Separadores de ruta incorrectos o escapes de barra invertida faltantes (
\\
) en Windows.
- Dependencias faltantes:
- Los paquetes requeridos de
requirements.txt
no están instalados en el.venv
. - El cliente está iniciando Python sin activar correctamente el entorno virtual.
- Los paquetes requeridos de
- 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
.env
al inicio. OMCP_VAULT_PATH
no válido o inaccesible.- El proceso de Python carece de permisos para ejecutarse o acceder a archivos.
- Error al leer el archivo
- 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
command
yargs
en 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:CopyCopy
- Ejecute el servidor directamente:Copy
- Revise atentamente si aparecen mensajes de error directamente en la terminal. Esto ignora al cliente y suele revelar la causa raíz (como
ImportError
,SyntaxError
oFileNotFoundError
).
- Activa el entorno virtual en tu terminal:
- Comprobar dependencias: con venv activado, ejecute
pip check
ypip install -r requirements.txt
. - Validar
.env
y Vault Path: asegúrese de que.env
exista, sea legible y queOMCP_VAULT_PATH
sea 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_LOCATION
está configurado correctamente en.env
- La 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
.env
- Crea un nuevo
.env
a partir de.env.example
- Reiniciar el servidor
¡Contribuciones bienvenidas!
This server cannot be installed
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.