← Back to directory
S

Scan MCP

Community
MCP server for scanner discovery and batch capture via SANE on Linux
Category
Filesystem #17 of 24
Stars
★ 6 Popular
Transport
stdio (local process) · Streamable HTTP
Runtime
Node.js 22+ · Prebuilt binary
Credentials
No credential needed
License
MIT
Last commit
Tools
8

Static review · not runListed 2026-09-08

FMRS 53/100 · D · Weakest Security and permissions 9/20 — Read the FMRS scoring method →

Fit and risk

What it can accessWrites / deletes local filesRuns commands or codeUses the network

Best for

  • Linux users with SANE-compatible scanners
  • Those needing local, privacy-first scanning automation (stdio)
  • Developers or advanced users who want programmable batch and multipage scanning

Not for

  • Windows or macOS users (Linux-only)
  • Those relying on networked authentication or secure transport (HTTP lacks authentication)
  • Users needing camera or non-SANE backends (although it attempts to avoid such devices)

Required permissions

  • System permissions to execute scanimage/scanadf commands
  • Write access to INBOX_DIR (default: scanned_documents/inbox)
  • Filesystem permissions to access temp and output directories
  • Optional: network permissions and TCP port access if using HTTP transport

Risks and side effects

  • HTTP transport has no built-in authentication; only suitable for trusted internal networks
  • Scanning failures could lead to data loss or incomplete outputs; use job cancellation and status monitoring
  • Incorrect device options or high resolutions may consume significant disk space
  • External command dependencies: missing tools or misconfigured SANE can make the server non-functional

Setup

Before you start

Runtime:Node.js 22+ · Prebuilt binary

Other optional settings (11)
INBOX_DIR optional Base directory for job runs and artifacts; default scanned_documents/inbox; example config sets ~/Documents/scanned_documents/inbox.
SCAN_MOCK optional Set true to mock SANE calls and generate fake TIFFs for testing; default false.
SCANIMAGE_BIN optional Override the scanimage binary path; default scanimage.
SCANADF_BIN optional Override the scanadf binary path; default scanadf.
TIFFCP_BIN optional Override the tiffcp binary used for multipage assembly; default tiffcp.
IM_CONVERT_BIN optional Override the ImageMagick convert binary used as fallback assembler; default convert.
SCAN_EXCLUDE_BACKENDS optional CSV list of SANE backends to exclude, e.g. v4l.
SCAN_PREFER_BACKENDS optional CSV list of preferred SANE backends, e.g. epjitsu,epson2.
PERSIST_LAST_USED_DEVICE optional Default true; persists and lightly prefers the last used device.
MCP_HTTP_PORT optional TCP port for the HTTP transport; default 3001.
MCP_HTTP_HOST optional Bind host for the HTTP transport; defaults to all interfaces, set e.g. 127.0.0.1 to restrict.
  1. Ensure system requirements: Node 22+, Linux with SANE utilities (scanimage/scanadf), and TIFF tools (tiffcp or ImageMagick convert).
  2. Add the server entry to your MCP client configuration as shown in README (e.g., for Claude Desktop, use npx -y scan-mcp).
  3. Configure environment variables such as INBOX_DIR (output directory) and any scan preferences (e.g., SCAN_PREFER_BACKENDS).
  4. Launch your client and test with list_devices to confirm the scanner is visible.
claude_desktop_config.json
{
  "mcpServers": {
    "scan": {
      "command": "npx",
      "args": [
        "-y",
        "scan-mcp"
      ],
      "env": {
        "INBOX_DIR": "~/Documents/scanned_documents/inbox"
      }
    }
  }
}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "scan": {
      "command": "npx",
      "args": [
        "-y",
        "scan-mcp"
      ],
      "env": {
        "INBOX_DIR": "~/Documents/scanned_documents/inbox"
      }
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add scan -e 'INBOX_DIR=~/Documents/scanned_documents/inbox' -- npx -y scan-mcp

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

After connecting, the client tool list should include list_devices, start_scan_job, get_job_status and the other recorded tools; calling list_devices and getting a device response confirms the install works.

Troubleshooting

  1. Check that scanner is recognized with `scanimage -L`
  2. Verify that scanimage, tiffcp/convert are installed and executable
  3. Ensure INBOX_DIR exists and is writable
  4. Inspect server logs or events for error details

Things to try

Once connected, you can ask your AI assistant things like:

  • List my connected scanners and their backend details.
  • Start a scan job at 300dpi without specifying a device, then check its status.
  • Cancel the currently running scan job.
  • Fetch the manifest for the most recent job.

Tools 8

list_devices read-only
List connected scanners with backend details.
get_device_options read-only
Get SANE options for a specific device to adjust settings before starting a job.
start_scan_job writes
Start a scanning job; if device_id is omitted, auto-selects a scanner and uses sensible defaults. Supports ADF/duplex, resolution, color mode, page size, doc break policy, output format, and carrier sheet cropping.
get_job_status read-only
Check the status and artifact counts of a job.
cancel_job writes
Request cancellation of a running job (best effort).
list_jobs read-only
List recent jobs from the inbox directory, optionally filtered by state and limit.
get_manifest read-only
Fetch the manifest.json for a specific job.
get_events read-only
Retrieve the events.jsonl log for a specific job.

Use cases

Automating document scanning to a local inbox directory
Batch scanning multipage documents (ADF/duplex)
Automatic cropping of scanned pages using carrier sheets
Integrating scanning jobs into AI workflows

Supported clients

Claude Desktop

Listed from the project's documentation, not tested by this site.

Overview

scan-mcp is a minimal MCP server that provides tools to control scanners via SANE (scanimage). It supports device discovery, ADF/duplex scanning, page size selection, document break policies, multipage TIFF assembly, and artifact management. It is designed for Linux and Node 22, using stdio transport by default for privacy, with optional HTTP transport. Output files are stored in a specified inbox directory.

Similar servers

Source revision e7a6fa110276 Data synced 2026-10-19 Read the FMRS scoring method