scan-mcp
Servidor MCP minimalista para la captura con escáner (ADF/dúplex/tamaño de página), el procesamiento por lotes y el ensamblado multipágina.
Características
Servidor MCP pequeño y tipado que expone herramientas para el descubrimiento de dispositivos y los trabajos de escaneo
Entradas validadas con JSON Schema y salidas deterministas y tipadas
Selección inteligente de dispositivo (prefiere ADF/dúplex, evita los backends de cámara), valores predeterminados robustos
Transportes con prioridad local: stdio por defecto para mantenerlo todo en el dispositivo, HTTP opcional para tus propios despliegues de red
Nota: este paquete está dirigido a Node 22+ y a los backends SANE de Linux (scanimage).
Related MCP server: MCPOSprint
Inicio rápido (stdio local, por defecto)
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 a través de stdio para una configuración de una sola máquina que prioriza la privacidad.
Llama a
start_scan_jobsindevice_idpara seleccionar automáticamente un escáner y comenzar a escanear.Los artefactos se escriben en
INBOX_DIRpor trabajo:job-*/page_*.tiff,doc_*.tiff,manifest.json,events.jsonl. Cuandocrop_carrier_sheetsestá activado y se detecta una hoja portadora, también se escribe un archivo derivadopage_*.cropped.tiffpara cada página afectada.
Transporte HTTP en streaming
¿Prefieres conectar el escáner a otra máquina de tu red? scan-mcp también admite el
transporte HTTP en streaming:
scan-mcp --httpEl puerto por defecto es
3001; estableceMCP_HTTP_PORTpara sobrescribirlo (por ejemploMCP_HTTP_PORT=3333 scan-mcp --http).Se vincula a todas las interfaces (
::) por defecto; estableceMCP_HTTP_HOSTpara restringirlo (por ejemploMCP_HTTP_HOST=127.0.0.1cuando un proxy inverso se sitúa delante del servidor).Las respuestas HTTP utilizan eventos enviados por el servidor (SSE) para transmitir la salida de las herramientas por streaming; clientes como Claude Desktop y Windsurf admiten este transporte.
Actualmente no hay autenticación; está pensado para redes LAN internas.
Instalación
Ejecútalo con npx:
npx scan-mcp(recomendado)La CLI realiza una comprobación previa rápida de Node 22+ y de las herramientas de escáner/imagen necesarias, e imprime sugerencias de instalación si falta algo.
Consulta la configuración de servidor recomendada más arriba
Usa
npx scan-mcp --httppara lanzar el transporte HTTP en streaming cuando se ejecute en otra máquina.Ayuda de la CLI:
scan-mcp --helpDesde el código fuente (para desarrollo):
npm installnpm run build
Para la configuración de Cline y otras instalaciones de agentes automatizadas, consulta llms-install.md
Requisitos del sistema
Linux con utilidades SANE:
scanimage(y opcionalmentescanadf)Herramientas TIFF:
tiffcp(preferido) oconvertde ImageMagick
Variables de entorno
SCAN_MOCK(por defecto:false): simula las llamadas SANE y genera TIFF simulados para las pruebas.INBOX_DIR(por defecto:scanned_documents/inbox): directorio base para las ejecuciones de trabajos y los artefactos.SCANIMAGE_BIN/SCANADF_BIN(por defecto:scanimage/scanadf): sobrescribe las rutas de los binarios.TIFFCP_BIN/IM_CONVERT_BIN(por defecto:tiffcp/convert): herramientas de ensamblado multipágina.SCAN_EXCLUDE_BACKENDS(CSV): backends a excluir (p. ej.,v4l).SCAN_PREFER_BACKENDS(CSV): backends preferidos (p. ej.,epjitsu,epson2).PERSIST_LAST_USED_DEVICE(por defecto:true): persiste y prefiere ligeramente el último dispositivo utilizado.MCP_HTTP_PORT(por defecto:3001): puerto TCP para el transporte HTTP.
API
Herramientas
list_devices
Descubre los escáneres conectados con detalles del backend.
Entradas: ninguna.
get_device_options
Obtiene las opciones SANE de un dispositivo específico.
Entradas:
device_id(cadena): identificador del dispositivo de destino.
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 se establece en Lineart por defecto (prioridad a documentos); a partir de 600dpi se establece en Color, ya que la captura a alta resolución suele significar ilustraciones/fotos donde 1-bit destruye información. Pasa color_mode explícitamente para anular cualquiera de los dos valores predeterminados; la 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, por defectotiff)tmp_dir(cadena)crop_carrier_sheets(booleano, por defectofalse): detecta la banda del borde delantero de la hoja portadora y escribe archivos derivados de página recortados; las páginas originales se conservan
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; se intenta en la medida de lo posible durante los bucles de escaneo.
Entradas:
job_id(cadena)
list_jobs
Enumera los trabajos recientes del directorio de entrada.
Entradas (opcionales):
limit(entero, máximo 100)state(running|completed|cancelled|error|unknown)
get_manifest
Obtiene el
manifest.jsonde un trabajo.Entradas:
job_id(cadena)
get_events
Recupera el registro
events.jsonlde un trabajo.Entradas:
job_id(cadena)
Consulta los JSON Schemas en schemas/ para conocer 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, un modo de color razonable y ADF/dúplex cuando esté disponible. Los detalles completos sobre la puntuación y los mecanismos de respaldo están en la documentación:
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 la validación y las pruebasdocs/— arquitectura, convenciones y análisis en profundidad
Desarrollo
npm run dev(servidor MCP por stdio),npm run dev:http(transporte HTTP)make verifyejecuta lint, typecheck y pruebasConvenciones:
docs/CONVENTIONS.mdy arquitectura endocs/BLUEPRINT.md
Hoja de ruta
Las ideas en seguimiento y las mejoras futuras están documentadas en docs/ROADMAP.md.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceA universal MCP server for document processing, conversion, and automation. Handle PDF, DOCX, HTML, Markdown, and more through a unified API and toolset.1343139MIT
- AlicenseAqualityDmaintenanceAn MCP server that enables users to print markdown tasklists, Notion tasks with QR codes, and arbitrary images directly to ESC/POS thermal printers over USB. It includes specialized tools for task processing, automated card generation, and printer diagnostics.71MIT

polydoc-mcpofficial
AlicenseNot gradedqualityCmaintenanceMCP server that converts HTML or URLs to PDF, captures screenshots, and generates EU-compliant e-invoices (Factur-X/ZUGFeRD).53MIT- AlicenseNot gradedqualityAmaintenanceA full-featured secure MCP server for local file system operations, with built-in image processing, OCR and media tools.Apache 2.0
Related MCP Connectors
MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.
A paid remote MCP for developer endpoint scanner MCP, built to return verdicts, receipts, usage logs
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jacksenechal/scan-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server