Obsidian Semantic MCP Server
Un servidor MCP optimizado para IA en Obsidian que consolida más de 21 herramientas en 5 operaciones inteligentes con sugerencias contextuales de flujo de trabajo.
Documentación
Servidor MCP Semántico de Obsidian
🎉 ¡Noticias emocionantes! Hemos tomado todo lo que aprendimos de este proyecto y hemos creado algo aún mejor. ¡Echa un vistazo al nuevo Plugin MCP de Obsidian - un plugin nativo de Obsidian que se ejecuta directamente dentro de tu bóveda con mejor rendimiento, configuración simplificada y funciones mejoradas. ¡Te animamos a probarlo!
Un servidor MCP semántico y optimizado para IA de Obsidian que consolida 20 herramientas en 5 operaciones inteligentes con sugerencias contextuales de flujo de trabajo.
🚀 ¡Prueba Nuestro Nuevo Plugin Nativo!
Este servidor MCP nos enseñó lecciones valiosas sobre la integración de IA con Obsidian. Hemos aplicado estos conocimientos para crear el Plugin MCP de Obsidian, que ofrece:
- Integración Nativa: Se ejecuta directamente dentro de Obsidian (¡sin dependencias externas!)
- Mejor Rendimiento: Acceso directo a la bóveda sin la sobrecarga de la API REST
- Configuración Más Fácil: Se instala como cualquier plugin de Obsidian - sin claves API ni servidores externos
- Funciones Mejoradas: Acceso completo a las APIs internas y capacidades de búsqueda de Obsidian
- Fiabilidad Mejorada: Sin más problemas de conexión ni tiempos de espera
👉 Obtén el Plugin MCP de Obsidian
Requisitos Previos
- Obsidian instalado en tu computadora
- Plugin Local REST API instalado en tu bóveda de Obsidian
- Aplicación Claude Desktop
Instalación
npm install -g obsidian-semantic-mcp
O úsalo directamente con npx (recomendado):
npx obsidian-semantic-mcp
Ver en npm: https://www.npmjs.com/package/obsidian-semantic-mcp
Inicio Rápido
-
Instala el Plugin de Obsidian:
- Abre Configuración de Obsidian → Plugins de la Comunidad
- Navega y busca "Local REST API"
- Instala el plugin Local REST API de Adam Coddington
- Habilita el plugin
- En la configuración del plugin, copia tu clave API (la necesitarás para la configuración)
-
Configura Claude Desktop:
El comando npx se usa automáticamente en la configuración de Claude Desktop. Añade esto a tu configuración de Claude Desktop (normalmente se encuentra en
~/Library/Application Support/Claude/claude_desktop_config.jsonen macOS):{ "mcpServers": { "obsidian": { "command": "npx", "args": ["-y", "obsidian-semantic-mcp"], "env": { "OBSIDIAN_API_KEY": "your-api-key-here", "OBSIDIAN_API_URL": "https://127.0.0.1:27124", "OBSIDIAN_VAULT_NAME": "your-vault-name" } } } }
Características
Este servidor consolida las herramientas MCP tradicionales en una interfaz semántica optimizada para IA que facilita que los agentes de IA comprendan y utilicen las operaciones de Obsidian de manera efectiva.
Beneficios Clave
- Interfaz Simplificada: 5 operaciones semánticas en lugar de 21+ herramientas individuales
- Flujos de Trabajo Contextuales: Sugerencias inteligentes guían a los agentes de IA hacia la siguiente acción lógica
- Seguimiento de Estado: Sistema basado en tokens previene operaciones inválidas
- Recuperación de Errores: Sugerencias inteligentes de recuperación cuando fallan las operaciones
- Coincidencia Difusa: Edición de texto resiliente que maneja variaciones menores
- Recuperación de Fragmentos: Devuelve automáticamente secciones relevantes de archivos grandes para conservar tokens
¿Por Qué Operaciones Semánticas?
Los servidores MCP tradicionales exponen muchas herramientas granulares (20+), lo que puede abrumar a los agentes de IA y llevar a una selección ineficiente de herramientas. Nuestro enfoque semántico:
- Consolida 20 herramientas en 5 operaciones semánticas basadas en la intención
- Proporciona sugerencias contextuales de flujo de trabajo para guiar las siguientes acciones
- Realiza seguimiento del estado con tokens (inspirado en redes de Petri) para prevenir sugerencias sin sentido
- Ofrece sugerencias de recuperación cuando fallan las operaciones
Las 5 Operaciones Semánticas
-
vault- Operaciones de archivos y carpetas- Acciones:
list,read,create,update,delete,search,fragments
- Acciones:
-
edit- Edición inteligente de contenido- Acciones:
window(coincidencia difusa),append,patch,at_line,from_buffer
- Acciones:
-
view- Visualización y navegación de contenido- Acciones:
window(con contexto),open_in_obsidian
- Acciones:
-
workflow- Obtener sugerencias guiadas- Acciones:
suggest
- Acciones:
-
system- Operaciones del sistema- Acciones:
info,commands,fetch_web - Nota:
fetch_webobtiene y convierte contenido web a markdown (usa solo el parámetrourl)
- Acciones:
Ejemplo de Uso
En lugar de elegir entre get_vault_file, get_active_file, read_file_content, etc., simplemente usas:
{
"operation": "vault",
"action": "read",
"params": {
"path": "daily-notes/2024-01-15.md"
}
}
La respuesta incluye sugerencias inteligentes de flujo de trabajo:
{
"result": { /* file content */ },
"workflow": {
"message": "Read file: daily-notes/2024-01-15.md",
"suggested_next": [
{
"description": "Edit this file",
"command": "edit(action='window', path='daily-notes/2024-01-15.md', ...)",
"reason": "Make changes to content"
},
{
"description": "Follow linked notes",
"command": "vault(action='read', path='{linked_file}')",
"reason": "Explore connected knowledge"
}
]
}
}
Sugerencias Conscientes del Estado
El sistema realiza seguimiento de tokens de contexto para proporcionar sugerencias relevantes:
- Después de leer un archivo con
[[links]], sugiere seguirlos - Después de una edición fallida, ofrece opciones de recuperación del búfer
- Después de una búsqueda, sugiere refinar o leer los resultados
Funciones Avanzadas
Búfer de Contenido
La acción de edición window almacena automáticamente tu nuevo contenido en el búfer antes de intentar la edición. Si la edición falla o quieres refinarla, puedes recuperarla del búfer:
{
"operation": "edit",
"action": "from_buffer",
"params": {
"path": "notes/meeting.md"
}
}
Edición con Ventana Difusa
El editor semántico utiliza coincidencia difusa para encontrar y reemplazar contenido:
{
"operation": "edit",
"action": "window",
"params": {
"path": "daily/2024-01-15.md",
"oldText": "meting notes", // typo will be fuzzy matched
"newText": "meeting notes",
"fuzzyThreshold": 0.8
}
}
Operaciones PATCH Inteligentes
Apunta a estructuras específicas del documento:
{
"operation": "edit",
"action": "patch",
"params": {
"path": "projects/todo.md",
"operation": "append",
"targetType": "heading",
"target": "## In Progress",
"content": "- [ ] New task"
}
}
Recuperación de Fragmentos para Documentos Grandes
El sistema utiliza automáticamente la recuperación inteligente de fragmentos al leer archivos, reduciendo significativamente el consumo de tokens mientras mantiene la relevancia:
{
"operation": "vault",
"action": "read",
"params": {
"path": "large-document.md"
}
}
Devuelve fragmentos relevantes en lugar del archivo completo:
{
"result": {
"content": [
{
"id": "file:large-document.md:frag0",
"content": "Most relevant section...",
"score": 0.95,
"lineStart": 145,
"lineEnd": 167
}
],
"fragmentMetadata": {
"totalFragments": 5,
"strategy": "adaptive",
"originalContentLength": 135662
}
}
}
Estrategias de Búsqueda de Fragmentos:
- adaptativa - Coincidencia de palabras clave TF-IDF (predeterminada para consultas cortas)
- proximidad - Encuentra fragmentos donde los términos de la consulta aparecen cerca
- semántica - Divide los documentos en secciones significativas
Puedes buscar fragmentos explícitamente en tu bóveda:
{
"operation": "vault",
"action": "fragments",
"params": {
"query": "project roadmap timeline",
"maxFragments": 10,
"strategy": "proximity"
}
}
Para recuperar el archivo completo (cuando sea necesario), usa:
{
"operation": "vault",
"action": "read",
"params": {
"path": "document.md",
"returnFullFile": true
}
}
Ejemplos de Flujos de Trabajo
Flujo de Trabajo de Notas Diarias
- Crear la nota de hoy → 2. Añadir plantilla → 3. Enlazar la nota de ayer
Flujo de Trabajo de Investigación
- Buscar tema → 2. Leer resultados → 3. Crear nota de síntesis → 4. Enlazar fuentes
Flujo de Trabajo de Refactorización
- Encontrar todas las menciones → 2. Actualizar enlaces → 3. Renombrar/fusionar notas
Configuración
Las sugerencias semánticas de flujo de trabajo se definen en src/config/workflows.json y se pueden personalizar según tus preferencias de flujo de trabajo.
Configuración de Recuperación de Fragmentos
El sistema de recuperación de fragmentos se activa automáticamente al leer archivos para conservar tokens. Puedes controlar este comportamiento:
- Comportamiento predeterminado: Devuelve hasta 5 fragmentos relevantes al leer archivos
- Acceso al archivo completo: Usa el parámetro
returnFullFile: truepara obtener el contenido completo - Selección de estrategia: El sistema selecciona automáticamente según la longitud de la consulta, o puedes especificar:
adaptivepara coincidencia de palabras clave (consultas de 1-2 palabras)proximitypara encontrar términos relacionados juntos (consultas de 3-5 palabras)semanticpara división conceptual (consultas más largas)
Recuperación de Errores
Cuando fallan las operaciones, la interfaz semántica proporciona sugerencias inteligentes de recuperación:
{
"error": {
"code": "FILE_NOT_FOUND",
"message": "File not found: daily/2024-01-15.md",
"recovery_hints": [
{
"description": "Create this file",
"command": "vault(action='create', path='daily/2024-01-15.md')"
},
{
"description": "Search for similar files",
"command": "vault(action='search', query='2024-01-15')"
}
]
}
}
Variables de Entorno
El servidor carga automáticamente las variables de entorno desde un archivo .env si está presente. Las variables se pueden establecer en orden de precedencia:
- Variables de entorno existentes (mayor prioridad)
- Archivo
.enven el directorio de trabajo actual - Archivo
.enven el directorio del servidor
Variables requeridas:
OBSIDIAN_API_KEY- Tu clave API del plugin Local REST API
Variables opcionales:
OBSIDIAN_API_URL- URL de la API (predeterminado: https://localhost:27124)- Soporta tanto HTTP (puerto 27123) como HTTPS (puerto 27124)
- HTTPS usa certificados autofirmados que se aceptan automáticamente
OBSIDIAN_VAULT_NAME- Nombre de la bóveda para contexto
Ejemplo de archivo .env:
OBSIDIAN_API_KEY=your-api-key-here
OBSIDIAN_API_URL=http://127.0.0.1:27123
OBSIDIAN_VAULT_NAME=MyVault
Operaciones PATCH
Las operaciones PATCH (patch_active_file y patch_vault_file) permiten una manipulación sofisticada del contenido:
-
Tipos de Destino:
heading: Apunta a contenido bajo encabezados específicos usando rutas como "Encabezado 1::Subencabezado"block: Apunta a referencias de bloques específicosfrontmatter: Apunta a campos de frontmatter
-
Operaciones:
append: Añadir contenido después del destinoprepend: Añadir contenido antes del destinoreplace: Reemplazar el contenido del destino
Ejemplo: Añadir contenido bajo un encabezado específico:
{
"operation": "append",
"targetType": "heading",
"target": "Daily Notes::Today",
"content": "- New task added"
}
Desarrollo
# Clone and install
git clone https://github.com/aaronsb/obsidian-semantic-mcp.git
cd obsidian-semantic-mcp
npm install
# Development mode
npm run dev
# Testing
npm test # Run all tests
npm run test:coverage # With coverage report
# Build
npm run build # Build the server
npm run build:full # Test + Build
# Start
npm start # Start the server
Arquitectura
El sistema semántico consiste en:
- Enrutador Semántico (
src/semantic/router.ts) - Enruta operaciones a los manejadores - Tokens de Estado (
src/semantic/state-tokens.ts) - Realiza seguimiento del estado del contexto - Configuración de Flujo de Trabajo (
src/config/workflows.json) - Define sugerencias y recomendaciones - Utilidades Principales (
src/utils/) - Funcionalidad compartida como lectura de archivos y coincidencia difusa
Pruebas
El proyecto incluye pruebas Jest completas para el sistema semántico:
npm test # Run all tests
npm test semantic-router # Test routing logic
npm test semantic-tools # Test integration
Problemas Conocidos
- Funcionalidad de búsqueda: La operación de búsqueda puede agotar el tiempo ocasionalmente en bóvedas grandes debido a limitaciones de la API en el plugin Obsidian Local REST API.
Contribuciones
¡Las contribuciones son bienvenidas! Áreas de interés:
- Patrones adicionales de flujo de trabajo en
workflows.json - Nuevas operaciones semánticas
- Seguimiento de estado mejorado
- Integración con plugins de Obsidian
Licencia
MIT