scan-mcp
Servidor MCP mínimo para captura de escáner (ADF/dúplex/tamaño de página), procesamiento por lotes y ensamblaje de varias páginas
Documentación
scan-mcp
Servidor MCP mínimo para captura de escáner (ADF/dúplex/tamaño de página), procesamiento por lotes y ensamblado multipágina.
Características
- Servidor MCP pequeño y tipado que expone herramientas para descubrimiento de dispositivos y trabajos de escaneo
- Entradas validadas con JSON Schema y salidas tipadas y deterministas
- Selección inteligente de dispositivo (prefiere ADF/dúplex, evita backends de cámara), valores predeterminados robustos
- Transportes locales primero: stdio por defecto para mantener todo en el dispositivo, HTTP opcional para tus propios despliegues de red
Nota: Este paquete está dirigido a Node 22 y backends SANE de Linux (scanimage).
Inicio rápido (stdio local, predeterminado)
Añade una entrada de servidor a la configuración de tu cliente MCP:
{
"mcpServers": {
"scan": {
"command": "npx",
"args": [
"-y",
"scan-mcp"
],
"env": {
"INBOX_DIR": "~/Documents/scanned_documents/inbox"
}
}
}
}
- Esta invocación se ejecuta sobre stdio para una configuración de una sola máquina y privacidad primero.
- Llama a
start_scan_jobsin undevice_idpara seleccionar automáticamente un escáner y comenzar a escanear. - Los artefactos se escriben bajo
INBOX_DIRpor trabajo:job-*/page_*.tiff,doc_*.tiff,manifest.json,events.jsonl. Cuandocrop_carrier_sheetsestá configurado y se detecta una hoja portadora, también se escribe un derivadopage_*.cropped.tiffpor página afectada.
Transporte HTTP transmisible
¿Prefieres conectar el escáner a otra máquina de tu red? scan-mcp también admite el
transporte HTTP transmisible:
scan-mcp --http
- El puerto predeterminado es
3001; estableceMCP_HTTP_PORTpara anularlo (por ejemplo,MCP_HTTP_PORT=3333 scan-mcp --http). - Vincula todas las interfaces (
::) por defecto; estableceMCP_HTTP_HOSTpara restringir (por ejemplo,MCP_HTTP_HOST=127.0.0.1cuando un proxy inverso está frente al servidor). - Las respuestas HTTP utilizan eventos enviados por el servidor (SSE) para la transmisión de salida de herramientas; clientes como Claude Desktop y Windsurf admiten este transporte.
- Actualmente no hay autenticación; esto está destinado a redes LAN internas.
Instalación
- Ejecuta con npx:
npx scan-mcp(recomendado)- La CLI ejecuta una verificación previa rápida para Node 22+ y las herramientas de escáner/imagen requeridas, e imprime sugerencias de instalación si falta algo.
- Consulta la configuración de servidor recomendada arriba
- Usa
npx scan-mcp --httppara lanzar el transporte HTTP transmisible cuando se ejecuta en otra máquina. - Ayuda de la CLI:
scan-mcp --help - Desde el código fuente (para desarrollo):
npm installnpm run build
- Para la configuración de Cline y otra instalación agéntica automatizada, consulta llms-install.md
Requisitos del sistema
- Linux con utilidades SANE:
scanimage(y opcionalmentescanadf) - Herramientas TIFF:
tiffcp(preferido) o ImageMagickconvert
Variables de entorno
SCAN_MOCK(predeterminado:false): simula llamadas SANE y genera TIFF falsos para pruebas.INBOX_DIR(predeterminado:scanned_documents/inbox): directorio base para ejecuciones de trabajos y artefactos.SCANIMAGE_BIN/SCANADF_BIN(predeterminados:scanimage/scanadf): anula rutas de binarios.TIFFCP_BIN/IM_CONVERT_BIN(predeterminados:tiffcp/convert): herramientas de ensamblado multipágina.SCAN_EXCLUDE_BACKENDS(CSV): backends a excluir (por ejemplo,v4l).SCAN_PREFER_BACKENDS(CSV): backends preferidos (por ejemplo,epjitsu,epson2).PERSIST_LAST_USED_DEVICE(predeterminado:true): persiste y prefiere ligeramente el último dispositivo usado.MCP_HTTP_PORT(predeterminado:3001): puerto TCP para el transporte HTTP.
API
Herramientas
-
list_devices
- Descubre escáneres conectados con detalles del backend.
- Entradas: ninguna.
-
get_device_options
- Obtén opciones SANE para un dispositivo específico.
- Entradas:
device_id(cadena): Identificador del dispositivo objetivo.
-
start_scan_job
- Inicia un trabajo de escaneo; omitir
device_idactiva la selección automática y las opciones predeterminadas. - Entradas (todas opcionales salvo que se indique):
device_id(cadena)resolution_dpi(entero, 50–1200)color_mode(Color|Gray|Lineart): color_mode predeterminado a Lineart (documento primero); a >= 600dpi predeterminado a Color, ya que la captura de alta resolución generalmente significa arte/fotos donde 1 bit destruye información. Pasa color_mode explícitamente para anular cualquiera de los predeterminados; alta resolución es la única señal utilizada.source(Flatbed|ADF|ADF Duplex)duplex(booleano)page_size(Letter|A4|Legal|Custom)custom_size_mm{width,height}doc_break_policy{type,blank_threshold,page_count,timer_ms,barcode_values}output_format(cadena, predeterminadotiff)tmp_dir(cadena)crop_carrier_sheets(booleano, predeterminadofalse): detecta la banda del borde delantero de la hoja portadora y escribe derivados de página recortados; las páginas sin procesar se conservan
- Inicia un trabajo de escaneo; omitir
-
get_job_status
- Inspecciona el estado del trabajo y los recuentos de artefactos.
- Entradas:
job_id(cadena)
-
cancel_job
- Solicita la cancelación del trabajo; mejor esfuerzo durante los bucles de escaneo.
- Entradas:
job_id(cadena)
-
list_jobs
- Lista trabajos recientes del directorio de entrada.
- Entradas (opcionales):
limit(entero, máximo 100)state(running|completed|cancelled|error|unknown)
-
get_manifest
- Obtén el
manifest.jsonde un trabajo. - Entradas:
job_id(cadena)
- Obtén el
-
get_events
- Recupera el registro
events.jsonlde un trabajo. - Entradas:
job_id(cadena)
- Recupera el registro
Consulta los JSON Schemas en schemas/ para las formas de entrada. Las pruebas verifican estos contratos.
Cómo funcionan la selección y los valores predeterminados
Los valores predeterminados apuntan a 300dpi, modo de color razonable y ADF/dúplex cuando esté disponible. Los detalles completos sobre puntuación y alternativas están en los documentos:
- Selección y valores predeterminados:
docs/SELECTION.md
Estructura del proyecto
src/mcp.ts— entrada del servidor MCP y registro de herramientassrc/services/*— interfaz de hardware y orquestación de trabajosschemas/— JSON Schemas utilizados para validación y pruebasdocs/— arquitectura, convenciones y análisis profundos
Desarrollo
npm run dev(servidor MCP stdio),npm run dev:http(transporte HTTP)make verifyejecuta lint, typecheck y pruebas- Convenciones:
docs/CONVENTIONS.mdy arquitectura endocs/BLUEPRINT.md
Hoja de ruta
Las ideas de seguimiento y mejoras futuras están documentadas en docs/ROADMAP.md.