Inkdrop

Interactúa con la base de datos local de la aplicación de toma de notas Inkdrop a través de su API HTTP.

Documentación

Servidor MCP de Inkdrop

Un servidor Model Context Protocol para la API del Servidor HTTP Local de Inkdrop.

Instalación

Lee la documentación aquí.

Componentes

Herramientas

  1. read-note: Recupera el contenido completo de la nota por su ID desde la base de datos.
    • Entradas requeridas:
      • noteId: El ID de la nota a recuperar. Se puede encontrar como _id en la documentación de la nota. Siempre comienza con note:.
    • Entradas opcionales:
      • includeTemplate: Cuando true y la nota tiene un sourceTemplateId, también recupera esa plantilla e incrusta su cuerpo (instrucciones de llenado y ejemplos) como un bloque de texto adicional. Predeterminado: false.
    • Nota: Si la nota fue creada a partir de una plantilla, la respuesta incluye un enlace de recurso a su plantilla de origen, cuyo cuerpo contiene las instrucciones de llenado y ejemplos.
  2. read-backlinks: Recupera los enlaces inversos de una nota — las notas que enlazan a ella.
    • Entradas requeridas:
      • noteId: El ID de la nota para la cual buscar enlaces inversos. Siempre comienza con note:.
    • Nota: Cada resultado se devuelve como un enlace de recurso (inkdrop://note/<id>) que apunta a la nota referente. Los enlaces inversos se encuentran buscando el URI de enlace de la nota en todos los cuerpos de las notas.
  3. search-notes: Lista todas las notas que contienen una palabra clave dada.
    • Entradas requeridas:
      • keyword: Palabra clave para buscar.
    • Nota: Los resultados incluyen cuerpos de notas truncados (200 caracteres). Usa read-note para obtener el contenido completo.
    • Admite calificadores de búsqueda avanzada como book:, tag:, status:, title:, etc.
  4. list-notes: Lista todas las notas con condiciones especificadas.
    • Entradas requeridas:
      • bookId: El ID del cuaderno. Siempre comienza con 'book:'.
    • Entradas opcionales:
      • tagIds: Un arreglo de IDs de etiquetas para filtrar. Cada uno comienza con 'tag:'.
      • keyword: Palabra clave para filtrar notas.
      • sort: Campo de ordenamiento (updatedAt, createdAt o title). Predeterminado: updatedAt.
      • descending: Invierte el orden de la salida. Predeterminado: true.
    • Nota: Los resultados incluyen cuerpos de notas truncados (200 caracteres). Usa read-note para obtener el contenido completo.
  5. create-note: Crea una nueva nota en la base de datos.
    • Entradas requeridas:
      • bookId: El ID del cuaderno. Debe comenzar con 'book:' o ser 'trash'.
      • title: El título de la nota.
      • body: El contenido de la nota en Markdown.
    • Entradas opcionales:
      • status: El estado de la nota (none, active, onHold, completed, dropped).
      • tags: Un arreglo de IDs de etiquetas para asignar a la nota. Cada uno debe comenzar con 'tag:'.
  6. update-note: Actualiza una nota existente en la base de datos. Solo se actualizarán los campos que proporciones; los campos omitidos permanecen sin cambios.
    • Entradas requeridas:
      • _id: El ID de la nota. Debe comenzar con 'note:'.
      • _rev: El ID de revisión (token MVCC de CouchDB).
    • Entradas opcionales:
      • bookId: El ID del cuaderno. Debe comenzar con 'book:' o ser 'trash'.
      • title: El título de la nota.
      • body: El contenido de la nota en Markdown.
      • status: El estado de la nota (none, active, onHold, completed, dropped).
      • tags: Un arreglo de IDs de etiquetas para asignar a la nota. Cada uno debe comenzar con 'tag:'.
  7. patch-note: Actualiza el cuerpo de una nota existente realizando un reemplazo exacto de cadena. Más eficiente que update-note para ediciones pequeñas en notas grandes, ya que ahorra tokens. Primero debes leer la nota con read-note para obtener el cuerpo actual.
    • Entradas requeridas:
      • _id: El ID de la nota. Debe comenzar con 'note:'.
      • _rev: El ID de revisión (token MVCC de CouchDB).
      • old_string: El texto exacto a buscar en el cuerpo de la nota. Debe coincidir exactamente con una ocurrencia. Incluye suficiente contexto circundante para garantizar una coincidencia única.
      • new_string: El texto para reemplazar old_string. Usa una cadena vacía para eliminar el texto coincidente.
  8. list-notebooks: Recupera una lista de todos los cuadernos.
  9. read-book: Recupera un solo cuaderno por su ID.
    • Entradas requeridas:
      • bookId: El ID del cuaderno. Debe comenzar con 'book:'.
  10. create-book: Crea un nuevo cuaderno en la base de datos.
    • Entradas requeridas:
      • name: El nombre del cuaderno.
    • Entradas opcionales:
      • parentBookId: El ID del cuaderno padre. Debe comenzar con 'book:'. Omítelo para crear el cuaderno en el nivel raíz.
  11. update-book: Actualiza un cuaderno existente en la base de datos. Solo se actualizarán los campos que proporciones; los campos omitidos permanecen sin cambios, por lo que no necesitas leer el cuaderno primero.
    • Entradas requeridas:
      • _id: El ID del cuaderno. Debe comenzar con 'book:'.
    • Entradas opcionales:
      • _rev: El ID de revisión (token MVCC de CouchDB). Solo se necesita como protección de concurrencia optimista — pásalo para que la actualización falle ante una edición concurrente en conflicto.
      • name: El nombre del cuaderno.
      • parentBookId: El ID del cuaderno padre. Pasa null para mover el cuaderno al nivel raíz.
  12. list-tags: Recupera una lista de todas las etiquetas.
  13. read-tag: Recupera una sola etiqueta por su ID.
    • Entradas requeridas:
      • tagId: El ID de la etiqueta. Debe comenzar con 'tag:'.
  14. create-tag: Crea una nueva etiqueta en la base de datos.
    • Entradas requeridas:
      • name: El nombre de la etiqueta.
    • Entradas opcionales:
      • color: El tipo de color de la etiqueta (default, red, orange, yellow, olive, green, teal, blue, violet, purple, pink, brown, grey, black). Predeterminado: default.
  15. update-tag: Actualiza una etiqueta existente en la base de datos. Solo se actualizarán los campos que proporciones; los campos omitidos permanecen sin cambios, por lo que no necesitas leer la etiqueta primero.
    • Entradas requeridas:
      • _id: El ID de la etiqueta. Debe comenzar con 'tag:'.
    • Entradas opcionales:
      • _rev: El ID de revisión (token MVCC de CouchDB). Solo se necesita como protección de concurrencia optimista — pásalo para que la actualización falle ante una edición concurrente en conflicto.
      • name: El nombre de la etiqueta.
      • color: El tipo de color de la etiqueta. Omítelo para mantener el color actual de la etiqueta.
  16. create-file: Crea un nuevo archivo adjunto en la base de datos desde un archivo de imagen local o desde datos de imagen en base64. Devuelve el Markdown para incrustar el adjunto en el cuerpo de una nota.
    • Entradas requeridas: exactamente una de
      • filePath: Ruta absoluta a un archivo de imagen local para adjuntar. Preferida — mantiene los bytes de la imagen fuera de la conversación.
      • data: Datos de imagen codificados en base64, sin prefijo de URI data:.
    • Entradas opcionales:
      • name: El nombre del archivo. Se establece por defecto al nombre del archivo de filePath, o image.<ext> cuando se proporciona data.
      • contentType: El tipo MIME (image/png, image/jpeg, image/jpg, image/svg+xml, image/gif, image/heic, image/heif). Se infiere de la extensión de filePath cuando se omite, por lo que es requerido con data.
      • publicIn: Un arreglo de IDs de notas donde se incluye el adjunto. Cada uno debe comenzar con 'note:'.
    • Nota: Los adjuntos están limitados a 10MB.
  17. read-file: Recupera un archivo adjunto por su ID. Devuelve los metadatos del archivo, y la imagen en sí cuando es PNG, JPEG o GIF.
    • Entradas requeridas:
      • fileId: El ID del adjunto. Debe comenzar con 'file:'.
    • Entradas opcionales:
      • outputPath: Ruta absoluta para escribir el adjunto. Cuando se proporciona, el archivo se guarda allí y sus bytes no se devuelven en línea. Requerido para obtener adjuntos SVG, HEIC y HEIF, que no se pueden mostrar en línea.
      • includeImage: Si devolver la imagen junto con los metadatos. Predeterminado: true. Establécelo en false para obtener solo los metadatos de un adjunto grande.

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 a través de npm con este comando:

npx @modelcontextprotocol/inspector "./dist/index.js"

Asegúrate de que las variables de entorno estén configuradas correctamente.

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

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

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