IIIF Images Server

Un servidor para trabajar con manifiestos e imágenes de IIIF (International Image Interoperability Framework).

Documentación

MCP para IIIF Images

Un servidor de Model Context Protocol (MCP) para trabajar con manifiestos e imágenes IIIF (International Image Interoperability Framework). Consulta este video para una demostración.

Características

Este servidor MCP contiene las siguientes herramientas:

  • fetch_iiif_manifest: Obtener un manifiesto IIIF desde una URL. (Ten en cuenta que los clientes pueden tener dificultades para procesar grandes cantidades de JSON).
  • fetch_iiif_image: Recuperar una imagen IIIF desde una URI base, obteniendo info.json y devolviendo los datos de la imagen (por defecto: dimensión máxima de 1500px, máximo 800,000 píxeles en total).
  • fetch_iiif_image_region: Recuperar una región específica de una imagen IIIF usando coordenadas porcentuales, con la región escalada para ajustarse a las mismas restricciones.

Advertencias

  • El código escala las imágenes a dimensiones aceptables para Claude. No funcionará con una implementación de Image API de Nivel 0.
  • Es posible que Claude no procese algunos manifiestos IIIF debido al tamaño del archivo.

Configuración de Claude Desktop

Instalación desde el archivo de extensión de Claude Desktop (DXT)

  1. Instala e inicia sesión en Claude Desktop.
  2. Descarga el archivo .dxt desde la última versión.
  3. Haz doble clic en el archivo .dxt.
  4. Instala la extensión cuando Claude lo solicite.

Instalación desde el código fuente

  1. Clona este repositorio.
  2. Instala las dependencias: npm install
  3. Haz que el servidor sea ejecutable: chmod +x server/server.js

Para usar este servidor MCP con Claude Desktop, agrega la siguiente configuración a tu archivo de configuración de Claude Desktop. Ajusta la ruta del archivo según sea necesario. También puede que necesites proporcionar la ruta completa a tu comando node.

macOS

Edita ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-iiif-images": {
      "command": "node",
      "args": ["/PATH/TO/mcp-iiif-images/server/server.js"]
    }
  }
}

Windows

Edita %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-iiif-images": {
      "command": "node",
      "args": ["C:\\path\\to\\mcp-iiif-images\\server\\server.js"]
    }
  }
}

Linux

Edita ~/.config/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-iiif-images": {
      "command": "node",
      "args": ["/path/to/mcp-iiif-images/server/server.js"]
    }
  }
}

Uso general de MCP

El servidor admite dos modos de transporte:

Modo estándar (stdio)

Ejecuta el servidor usando el transporte stdio (por defecto):

npm start
# or
node server/server.js

Modo de transmisión HTTP

Ejecuta el servidor usando el transporte de transmisión HTTP:

node server/server.js --http
# or with custom port
node server/server.js --http --port 8080

Opciones de línea de comandos

  • --http: Usar transporte de transmisión HTTP en lugar de stdio
  • --port PORT: Número de puerto para el servidor HTTP (por defecto: 3000)
  • --help: Mostrar mensaje de ayuda

Cuando se usa el modo HTTP, el servidor iniciará un servidor HTTP con los siguientes endpoints:

  • GET /sse: Establecer conexión Server-Sent Events
  • POST /messages?sessionId=<id>: Enviar mensajes MCP

Modo de transmisión HTTP

Para el modo de transmisión HTTP, deberás iniciar el servidor manualmente con la bandera --http y luego configurar Claude Desktop para conectarse vía HTTP:

node server/server.js --http --port 3000

Luego configura Claude Desktop para usar el transporte HTTP (consulta la documentación de Claude Desktop para la configuración del transporte HTTP).

Nota: Actualiza la ruta en el arreglo args para que coincida con la ubicación real donde instalaste este servidor.

Después de actualizar la configuración, reinicia Claude Desktop para que los cambios surtan efecto.

Pruebas

Para ejecutar las pruebas:

# Run tests once
npm test

# Run tests in watch mode (automatically re-runs on file changes)
npm run test:watch

# Run tests with coverage
npm test -- --coverage

El proyecto usa Vitest como marco de pruebas, que proporciona:

  • Ejecución rápida con soporte para módulos ES
  • API compatible con Jest con mejores mensajes de error
  • Informes de cobertura integrados
  • Modo de observación para desarrollo

Herramientas disponibles

fetch_iiif_manifest

Obtiene y valida un manifiesto IIIF desde una URL.

Parámetros:

  • url (obligatorio): La URL del manifiesto IIIF a obtener

Ejemplo de uso:

Please fetch the IIIF manifest from https://example.com/manifest.json

fetch_iiif_image

Recupera una imagen IIIF desde una URI base, obteniendo info.json y devolviendo los datos de la imagen.

Parámetros:

  • baseUri (obligatorio): URI base del recurso de la API de imágenes IIIF (sin /info.json)

Ejemplo de uso:

Fetch the IIIF image at https://example.com/iiif/image123

fetch_iiif_image_region

Recupera una región específica de una imagen IIIF usando coordenadas porcentuales, con la región escalada para ajustarse a las mismas restricciones. Usa esto para obtener regiones de interés con mayor detalle para una descripción y análisis de imagen más precisos.

Parámetros:

  • baseUri (obligatorio): URI base del recurso de la API de imágenes IIIF (sin /info.json)
  • region (obligatorio): Región en formato pct: (por ejemplo, 'pct:20,20,50,50' para x,y,ancho,alto como porcentajes)

Ejemplo de uso:

Fetch a region from the IIIF image at https://example.com/iiif/image123 with region pct:10,10,50,50

Ten en cuenta que puedes usar estas herramientas juntas durante una conversación, por ejemplo:

Fetch the IIIF image at https://example.com/iiif/image123 and describe it.
...
Zoom in on the text at the bottom of the page and transcribe it.