Obsidian

Interactuando con Obsidian a través de la API REST

Documentación

Servidor MCP para Obsidian

Servidor MCP para interactuar con Obsidian mediante el plugin comunitario Local REST API.

server for Obsidian MCP server

Componentes

Herramientas

El servidor implementa múltiples herramientas para interactuar con Obsidian:

  • list_files_in_vault: Lista todos los archivos y directorios en el directorio raíz de tu bóveda de Obsidian
  • list_files_in_dir: Lista todos los archivos y directorios en un directorio específico de Obsidian
  • get_file_contents: Devuelve el contenido de un solo archivo en tu bóveda.
  • search: Busca documentos que coincidan con una consulta de texto especificada en todos los archivos de la bóveda
  • patch_content: Inserta contenido en una nota existente en relación con un encabezado, referencia de bloque o campo de frontmatter.
  • append_content: Añade contenido a un archivo nuevo o existente en la bóveda.
  • delete_file: Elimina un archivo o directorio de tu bóveda.

Ejemplos de indicaciones

Es bueno primero indicar a Claude que use Obsidian. Luego siempre llamará a la herramienta.

Usa indicaciones como estas:

  • Obtén el contenido de la última nota de llamada de arquitectura y resúmelo
  • Busca todos los archivos donde se mencione Azure CosmosDb y explícame rápidamente el contexto en el que se menciona
  • Resume las últimas notas de reunión y colócalas en una nueva nota 'resumen reunión.md'. Añade una introducción para poder enviarla por correo electrónico.

Requisitos

  • Python >= 3.11
  • mcp Python SDK >=1.1.0,<2.0.0 (fijado en pyproject.toml). mcp-obsidian actualmente registra sus manejadores de herramientas mediante la API de bajo nivel mcp 1.x Server (@app.list_tools() / @app.call_tool()), que fue eliminada en mcp 2.0. Instalar con un mcp>=2.0 sin restricciones provocará un fallo al importar con AttributeError: 'Server' object has no attribute 'list_tools'.

Configuración

Clave de API REST de Obsidian

Hay dos formas de configurar el entorno con la clave de API REST de Obsidian.

  1. Añadir a la configuración del servidor (recomendado)
{
  "mcp-obsidian": {
    "command": "uvx",
    "args": [
      "mcp-obsidian"
    ],
    "env": {
      "OBSIDIAN_API_KEY": "<your_api_key_here>",
      "OBSIDIAN_HOST": "<your_obsidian_host>",
      "OBSIDIAN_PORT": "<your_obsidian_port>"
    }
  }
}

A veces Claude tiene problemas para detectar la ubicación de uv / uvx. Puedes usar which uvx para encontrar y pegar la ruta completa en la configuración anterior en tales casos.

  1. Crear un archivo .env en el directorio de trabajo con las siguientes variables requeridas:
OBSIDIAN_API_KEY=your_api_key_here
OBSIDIAN_HOST=your_obsidian_host
OBSIDIAN_PORT=your_obsidian_port

Nota:

  • Puedes encontrar la clave de API en la configuración del plugin de Obsidian
  • El puerto predeterminado es 27124 si no se especifica
  • El host predeterminado es 127.0.0.1 si no se especifica

Inicio rápido

Instalación

Obsidian REST API

Necesitas el plugin comunitario Obsidian REST API en ejecución: https://github.com/coddingtonbear/obsidian-local-rest-api

Instálalo y actívalo en la configuración y copia la clave de API.

Claude Desktop

En MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json

En Windows: %APPDATA%/Claude/claude_desktop_config.json

Configuración de Servidores de Desarrollo No Publicados
{
  "mcpServers": {
    "mcp-obsidian": {
      "command": "uv",
      "args": [
        "--directory",
        "<dir_to>/mcp-obsidian",
        "run",
        "mcp-obsidian"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "<your_api_key_here>",
        "OBSIDIAN_HOST": "<your_obsidian_host>",
        "OBSIDIAN_PORT": "<your_obsidian_port>"
      }
    }
  }
}
Configuración de Servidores Publicados
{
  "mcpServers": {
    "mcp-obsidian": {
      "command": "uvx",
      "args": [
        "mcp-obsidian"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "<YOUR_OBSIDIAN_API_KEY>",
        "OBSIDIAN_HOST": "<your_obsidian_host>",
        "OBSIDIAN_PORT": "<your_obsidian_port>"
      }
    }
  }
}

Docker

Puedes ejecutar el servidor en un contenedor en lugar de instalar uv/Python localmente.

  1. Copia .env.example a .env y completa tu clave de API REST de Obsidian:
cp .env.example .env

Por defecto, OBSIDIAN_HOST está configurado en host.docker.internal, que se resuelve a tu máquina host desde dentro del contenedor (funciona en Linux, Mac y Windows).

  1. Construye la imagen:
docker compose build
  1. Apunta tu cliente MCP al contenedor. Dado que MCP habla JSON-RPC sobre stdio, el cliente debe ejecutarlo con stdin adjunto y sin pseudo-TTY — usa docker compose run --rm -T, no docker compose up:
{
  "mcpServers": {
    "mcp-obsidian": {
      "command": "docker",
      "args": [
        "compose",
        "-f",
        "<dir_to>/mcp-obsidian/docker-compose.yml",
        "run",
        "--rm",
        "-T",
        "mcp-obsidian"
      ]
    }
  }
}

También puedes ejecutarlo manualmente para verificar que el contenedor se inicia:

docker compose run --rm -T mcp-obsidian

(permanecerá esperando un mensaje JSON-RPC en stdin; Ctrl+C para salir)

Desarrollo

Compilación

Para preparar el paquete para distribución:

  1. Sincroniza las dependencias y actualiza el archivo de bloqueo:
uv sync

Depuración

Dado que los servidores MCP se ejecutan sobre stdio, la depuración puede ser desafiante. Para la mejor experiencia de depuración, recomendamos encarecidamente usar el Inspector MCP.

Puedes iniciar el Inspector MCP mediante npm con este comando:

npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-obsidian run mcp-obsidian

Al iniciarse, el Inspector mostrará una URL a la que puedes acceder en tu navegador para comenzar a depurar.

También puedes observar los registros del servidor con este comando:

tail -n 20 -f ~/Library/Logs/Claude/mcp-server-mcp-obsidian.log