← 返回目录
S

Scan MCP

社区
通过 SANE 在 Linux 上进行扫描仪发现和批量捕获的 MCP 服务器
分类
文件系统 第 17 / 24
Stars
★ 6 热门
传输方式
stdio(本地进程) · Streamable HTTP
运行环境
Node.js 22+ · 预编译二进制
凭据
无需凭据
许可证
MIT
最近提交
工具数
8

静态评测 · 未实际运行收录于 2026-09-08

FMRS 53/100 · D · 最弱项 安全与权限 9/20 — 查看 FMRS 评分方法 →

选型与风险

能访问什么写入 / 删除本地文件执行命令或代码访问网络

适合谁

  • Linux 用户使用 SANE 兼容扫描仪
  • 需要本地、隐私优先的扫描自动化(stdio)
  • 希望通过可编程工具实现批量和多页扫描的开发者或高级用户

不适合谁

  • Windows 或 macOS 用户(仅 Linux)
  • 依赖网络认证或安全传输的用户(HTTP 无认证)
  • 需要相机或非 SANE 扫描后端的用户(虽然会尝试避免此类设备)

所需权限

  • 执行 scanimage/scanadf 命令所需系统权限
  • 对 INBOX_DIR 的写入访问权限(默认:scanned_documents/inbox)
  • 能够访问临时目录和输出文件的文件系统权限
  • 可选:如果使用 HTTP 传输,需要网络权限和 TCP 端口访问

风险与副作用

  • HTTP 传输无内置认证,仅适用于可信内部网络
  • 扫描失败可能导致数据丢失或不完整;应启用任务取消和状态监控
  • 错误的设备选项或高分辨率可能导致大量磁盘空间的使用
  • 外部命令依赖:缺少工具或 SANE 配置不当会导致服务器不可用

安装接入

准备工作

运行环境:Node.js 22+ · 预编译二进制

其他可选配置项(11 个)
INBOX_DIR 可选 扫描任务与产出文件的根目录,默认 scanned_documents/inbox,示例配置设为 ~/Documents/scanned_documents/inbox。
SCAN_MOCK 可选 设为 true 时模拟 SANE 调用并生成假 TIFF,用于测试。
SCANIMAGE_BIN 可选 覆盖 scanimage 二进制路径,默认 scanimage。
SCANADF_BIN 可选 覆盖 scanadf 二进制路径,默认 scanadf。
TIFFCP_BIN 可选 覆盖 tiffcp 二进制路径,用于多页拼装,默认 tiffcp。
IM_CONVERT_BIN 可选 覆盖 ImageMagick convert 路径,作为 tiffcp 的备选拼装工具,默认 convert。
SCAN_EXCLUDE_BACKENDS 可选 CSV 格式,排除的 SANE 后端,如 v4l。
SCAN_PREFER_BACKENDS 可选 CSV 格式,优先选择的 SANE 后端,如 epjitsu,epson2。
PERSIST_LAST_USED_DEVICE 可选 默认 true,记住并优先使用上次使用的设备。
MCP_HTTP_PORT 可选 HTTP 传输的 TCP 端口,默认 3001。
MCP_HTTP_HOST 可选 HTTP 传输绑定的主机,默认绑定所有接口,可设为 127.0.0.1 限制访问。
  1. 确保系统满足要求:Node 22+,Linux 且装有 SANE 工具 (scanimage/scanadf),并有 TIFF 工具 (tiffcp 或 ImageMagick convert)。
  2. 如 README 所示,在 MCP 客户端配置中添加服务器条目(例如对于 Claude Desktop,使用 npx -y scan-mcp)。
  3. 配置环境变量,如 INBOX_DIR(输出目录)和任何扫描偏好(SCAN_PREFER_BACKENDS 等)。
  4. 运行客户端并测试 list_devices 以确保扫描仪可见。
claude_desktop_config.json
{
  "mcpServers": {
    "scan": {
      "command": "npx",
      "args": [
        "-y",
        "scan-mcp"
      ],
      "env": {
        "INBOX_DIR": "~/Documents/scanned_documents/inbox"
      }
    }
  }
}

以 Claude Desktop 为例。其他客户端的配置文件位置或字段可能不同(如 VS Code 使用 servers 字段),可用下方配置生成器转换。

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

写入项目的 .vscode/mcp.json(VS Code 使用 servers 字段)。

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

在终端运行;先把 <…> 占位符换成你自己的值。

验证是否装好

连接后应在客户端工具列表中看到 list_devices、start_scan_job、get_job_status 等工具;调用 list_devices 能返回已连接扫描仪即证明安装成功。

常见排障

  1. 使用 scanimage -L 检查扫描仪是否被识别
  2. 验证 scanimage、tiffcp/convert 已安装且可执行
  3. 检查 INBOX_DIR 是否存在且可写
  4. 查看服务端日志或事件以获取错误详情

试试这样问

连接成功后,可以直接对 AI 助手这样说:

  • 列出当前连接的扫描仪设备

工具能力 8

list_devices 只读
列出已连接的扫描仪及其后端详细信息。
get_device_options 只读
获取特定扫描仪的 SANE 选项,以便在启动作业前进行配置。
start_scan_job 写入
开始扫描作业;如果不提供设备 ID,则自动选择扫描仪并使用最佳默认设置。支持 ADF/双面、分辨率、颜色模式、页面大小、文档拆分、输出格式和裁剪载体页。
get_job_status 只读
检查作业的状态和生成的文件数量。
cancel_job 写入
请求取消正在运行的作业(尽力而为)。
list_jobs 只读
列出收件箱中的最近作业,可按状态和数量过滤。
get_manifest 只读
获取作业的 manifest.json 文件。
get_events 只读
获取作业的 events.jsonl 日志。

使用场景

自动化文档扫描到本地收件箱目录
批量扫描多页文档(自动文档进纸器/双面)
通过载体纸检测自动裁剪扫描页
将扫描作业集成到 AI 工作流中

支持客户端

Claude Desktop

依据项目文档列出,未经本站实测。

详细介绍

scan-mcp 是一个极简的 MCP 服务器,提供通过 SANE (scanimage) 控制扫描仪的工具。它支持设备发现、ADF/双面扫描、页面大小选择、文档拆分政策、多页 TIFF 组装以及工件管理。它专为 Linux 和 Node 22 设计,默认使用 stdio 传输以保护隐私,也可选择 HTTP 传输。输出文件存储在指定的收件箱目录中。

同类可选方案

源版本 e7a6fa110276 数据同步于 2026-10-19 查看 FMRS 评分方法