scan-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| INBOX_DIR | No | Base directory for job runs and artifacts. | scanned_documents/inbox |
| LOG_LEVEL | No | Pino log level. | info |
| SCAN_MOCK | No | Mock SANE calls and generate fake TIFFs for testing. | false |
| TIFFCP_BIN | No | Override the tiffcp binary path used for multipage assembly. | tiffcp |
| MCP_HTTP_HOST | No | Bind address for the HTTP transport. | 127.0.0.1 |
| MCP_HTTP_PORT | No | TCP port for the HTTP transport. | 3001 |
| SCANIMAGE_BIN | No | Override the scanimage binary path. | scanimage |
| IM_CONVERT_BIN | No | Override the ImageMagick convert binary path used for image analysis. | convert |
| SCAN_PREFER_BACKENDS | No | Comma-separated list of preferred scanner backends (e.g., epjitsu,epson2). | |
| SCAN_EXCLUDE_BACKENDS | No | Comma-separated list of scanner backends to exclude (e.g., v4l). | |
| PERSIST_LAST_USED_DEVICE | No | Persist and lightly prefer the last used device. | true |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_devicesA | List connected scanner devices with basic capabilities |
| get_device_optionsB | Get SANE options for a specific device (sources, resolutions, modes) |
| start_scan_jobC | Start a scan job; auto-selects device and fills defaults when omitted |
| get_job_statusC | Get status and artifact counts for a job |
| cancel_jobC | Cancel a running scan job |
| list_jobsC | List recent scan jobs from the inbox directory |
| get_manifestC | Fetch a job manifest JSON by job_id |
| get_eventsB | Fetch job events JSONL by job_id |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| bootstrap_context | Initialize Context |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| orientation |
TDQS
Scored across 8 tools
Each tool maps to a distinct resource or action: device listing, device options, job start/cancel, job listing/status, manifest, and events. The job-read tools are adjacent but clearly differentiated by their outputs.
All names use consistent snake_case with clear verb_object patterns such as list_devices, get_job_status, start_scan_job, and cancel_job. There is no mixed casing or vague verb usage.
Eight tools is well-scoped for scanner discovery, job control, and job inspection. Each tool covers a separate operation with no obvious filler.
The surface covers device discovery/options and the core job lifecycle plus manifest/events inspection. However, there is no tool to retrieve or download scanned artifacts, and no explicit option-setting operation, which can leave end-to-end scanning workflows at a dead end.