developer-tools

Page/Image Scanner

by jacksenechal

Digitize documents with Page/Image Scanner—supports ADF, duplex, batch, and multi-page TIFF for seamless document scanni

Integrates with SANE-compatible scanners to provide document capture with ADF support, duplex scanning, batch processing, and automatic multi-page TIFF assembly for digitizing physical documents and building document management workflows.

github stars

5

Local-first privacy with stdio transportSmart device selection prefers ADF/duplexLinux SANE backend integration

best for

  • / Building document management workflows
  • / Digitizing physical document archives
  • / Automating office document capture
  • / Developers integrating scanning into applications

capabilities

  • / Discover available SANE scanners
  • / Start scan jobs with ADF and duplex support
  • / Batch process multiple pages automatically
  • / Assemble multi-page TIFF documents
  • / Configure scan settings like page size and resolution
  • / Monitor scan job progress and events

what it does

Provides MCP tools to control SANE-compatible scanners for document digitization. Handles automatic device selection, batch scanning, duplex mode, and multi-page TIFF assembly.

about

Page/Image Scanner is a community-built MCP server published by jacksenechal that provides AI assistants with tools and capabilities via the Model Context Protocol. Digitize documents with Page/Image Scanner—supports ADF, duplex, batch, and multi-page TIFF for seamless document scanni It is categorized under developer tools.

how to install

You can install Page/Image Scanner in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.

license

NOASSERTION

Page/Image Scanner is released under the NOASSERTION license.

readme

scan-mcp logo

scan-mcp

[![CI](https://github.com/jacksenechal/scan-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/jacksenechal/scan-mcp/actions/workflows/ci.yml) [![npm version](https://img.shields.io/npm/v/scan-mcp.svg)](https://www.npmjs.com/package/scan-mcp) ![node-current](https://img.shields.io/node/v/scan-mcp) [![npm downloads](https://img.shields.io/npm/dm/scan-mcp.svg)](https://www.npmjs.com/package/scan-mcp) Minimal MCP server for scanner capture (ADF/duplex/page-size), batching, and multipage assembly. ## Features - Small, typed MCP server exposing tools for device discovery and scan jobs - JSON Schema–validated inputs with deterministic, typed outputs - Smart device selection (prefers ADF/duplex, avoids camera backends), robust defaults - Local-first transports: stdio by default to keep everything on-device, optional HTTP for your own network deployments Note: This package targets Node 22 and Linux SANE backends (`scanimage`). ## Quick Start (local stdio, default) Add a server entry to your MCP client configuration: ``` { "mcpServers": { "scan": { "command": "npx", "args": [ "-y", "scan-mcp" ], "env": { "INBOX_DIR": "~/Documents/scanned_documents/inbox" } } } } ``` - This invocation runs over stdio for a privacy-first, single-machine setup. - Call `start_scan_job` without a `device_id` to auto-select a scanner and begin scanning. - Artifacts are written under `INBOX_DIR` per job: `job-*/page_*.tiff`, `doc_*.tiff`, `manifest.json`, `events.jsonl`. ## Streamable HTTP transport Prefer to attach the scanner to another machine on your network? `scan-mcp` also supports the streamable HTTP transport: ```bash scan-mcp --http ``` - Default port is `3001`; set `MCP_HTTP_PORT` to override (for example `MCP_HTTP_PORT=3333 scan-mcp --http`). - HTTP responses use server-sent events (SSE) for streaming tool output; clients such as Claude Desktop and Windsurf support this transport. - There is currently no authentication; this is intended for internal LAN networking ## Install - Run with npx: `npx scan-mcp` (recommended) - The CLI runs a quick preflight check for Node 22+ and required scanner/image tools and prints installation hints if anything is missing. - See recommended server config above - Use `npx scan-mcp --http` to launch the streamable HTTP transport when running on another machine. - CLI help: `scan-mcp --help` - From source (for development): - `npm install` - `npm run build` - For Cline setup, and other automated agentic installation, see [llms-install.md](llms-install.md) ## System Requirements - Linux with SANE utilities: `scanimage` (and optionally `scanadf`) - TIFF tools: `tiffcp` (preferred) or ImageMagick `convert` ## Environment Variables - `SCAN_MOCK` (default: `false`): mock SANE calls and generate fake TIFFs for testing. - `INBOX_DIR` (default: `scanned_documents/inbox`): base directory for job runs and artifacts. - `SCANIMAGE_BIN` / `SCANADF_BIN` (defaults: `scanimage` / `scanadf`): override binary paths. - `TIFFCP_BIN` / `IM_CONVERT_BIN` (defaults: `tiffcp` / `convert`): multipage assembly tools. - `SCAN_EXCLUDE_BACKENDS` (CSV): backends to exclude (e.g., `v4l`). - `SCAN_PREFER_BACKENDS` (CSV): preferred backends (e.g., `epjitsu,epson2`). - `PERSIST_LAST_USED_DEVICE` (default: `true`): persist and lightly prefer last used device. - `MCP_HTTP_PORT` (default: `3001`): TCP port for the HTTP transport. ## API ### Tools - **list_devices** - Discover connected scanners with backend details. - Inputs: none. - **get_device_options** - Get SANE options for a specific device. - Inputs: - `device_id` (string): Target device identifier. - **start_scan_job** - Begin a scanning job; omitting `device_id` triggers auto-selection and default options. - Inputs (all optional unless noted): - `device_id` (string) - `resolution_dpi` (integer, 50–1200) - `color_mode` (`Color` | `Gray` | `Lineart`) - `source` (`Flatbed` | `ADF` | `ADF Duplex`) - `duplex` (boolean) - `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` (string, default `tiff`) - `tmp_dir` (string) - **get_job_status** - Inspect job state and artifact counts. - Inputs: - `job_id` (string) - **cancel_job** - Request job cancellation; best effort during scan loops. - Inputs: - `job_id` (string) - **list_jobs** - List recent jobs from the inbox directory. - Inputs (optional): - `limit` (integer, max 100) - `state` (`running` | `completed` | `cancelled` | `error` | `unknown`) - **get_manifest** - Fetch a job's `manifest.json`. - Inputs: - `job_id` (string) - **get_events** - Retrieve a job's `events.jsonl` log. - Inputs: - `job_id` (string) See JSON Schemas in `schemas/` for input shapes. Tests assert against these contracts. ## How Selection and Defaults Work Defaults aim for 300dpi, reasonable color mode, and ADF/duplex when available. Full details on scoring and fallbacks live in docs: - Selection and defaults: `docs/SELECTION.md` ## Project Layout - `src/mcp.ts` — MCP server entry and tool registration - `src/services/*` — hardware interface and job orchestration - `schemas/` — JSON Schemas used for validation and tests - `docs/` — architecture, conventions, and deep dives ## Development - `npm run dev` (stdio MCP server), `npm run dev:http` (HTTP transport) - `make verify` runs lint, typecheck, and tests - Conventions: `docs/CONVENTIONS.md` and architecture in `docs/BLUEPRINT.md` ## Roadmap Tracking ideas and future improvements are documented in `docs/ROADMAP.md`.

FAQ

What is the Page/Image Scanner MCP server?
Page/Image Scanner is a Model Context Protocol (MCP) server profile on explainx.ai. MCP lets AI hosts (e.g. Claude Desktop, Cursor) call tools and resources through a standard interface; this page summarizes categories, install hints, and community ratings.
How do MCP servers relate to agent skills?
Skills are reusable instruction packages (often SKILL.md); MCP servers expose live capabilities. Teams frequently combine both—skills for workflows, MCP for APIs and data. See explainx.ai/skills and explainx.ai/mcp-servers for parallel directories.
How are reviews shown for Page/Image Scanner?
This profile displays 10 aggregated ratings (sample rows for discoverability plus signed-in user reviews). Average score is about 4.5 out of 5—verify behavior in your own environment before production use.
MCP server reviews

Ratings

4.510 reviews
  • Shikha Mishra· Oct 10, 2024

    Page/Image Scanner is among the better-indexed MCP projects we tried; the explainx.ai summary tracks the official description.

  • Piyush G· Sep 9, 2024

    We evaluated Page/Image Scanner against two servers with overlapping tools; this profile had the clearer scope statement.

  • Chaitanya Patil· Aug 8, 2024

    Useful MCP listing: Page/Image Scanner is the kind of server we cite when onboarding engineers to host + tool permissions.

  • Sakshi Patil· Jul 7, 2024

    Page/Image Scanner reduced integration guesswork — categories and install configs on the listing matched the upstream repo.

  • Ganesh Mohane· Jun 6, 2024

    I recommend Page/Image Scanner for teams standardizing on MCP; the explainx.ai page compares cleanly with sibling servers.

  • Oshnikdeep· May 5, 2024

    Strong directory entry: Page/Image Scanner surfaces stars and publisher context so we could sanity-check maintenance before adopting.

  • Dhruvi Jain· Apr 4, 2024

    Page/Image Scanner has been reliable for tool-calling workflows; the MCP profile page is a good permalink for internal docs.

  • Rahul Santra· Mar 3, 2024

    According to our notes, Page/Image Scanner benefits from clear Model Context Protocol framing — fewer ambiguous “AI plugin” claims.

  • Pratham Ware· Feb 2, 2024

    We wired Page/Image Scanner into a staging workspace; the listing’s GitHub and npm pointers saved time versus hunting across READMEs.

  • Yash Thakker· Jan 1, 2024

    Page/Image Scanner is a well-scoped MCP server in the explainx.ai directory — install snippets and categories matched our Claude Code setup.