← Back to directory
S

Scan MCP

Community
MCP server for scanner discovery and batch capture via SANE on Linux
GitHub source repository ↗
★ 6 Stars Category · Filesystem Popular Source revision e7a6fa110276

FMRS 53/100 · D — Read the FMRS scoring method →

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.

Tools

list_devices
List connected scanners with backend details.
get_device_options
Get SANE options for a specific device to adjust settings before starting a job.
start_scan_job
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
Check the status and artifact counts of a job.
cancel_job
Request cancellation of a running job (best effort).
list_jobs
List recent jobs from the inbox directory, optionally filtered by state and limit.
get_manifest
Fetch the manifest.json for a specific job.
get_events
Retrieve the events.jsonl log for a specific job.

Setup

  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"
      }
    }
  }
}

Fit and risk

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

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

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 DesktopFull support