Skip to main content
Glama
jacksenechal

scan-mcp

by jacksenechal

CI npm version node-current npm downloads

スキャナキャプチャ(ADF/両面/用紙サイズ)、バッチ処理、複数ページの結合のための最小限のMCPサーバーです。

特徴

  • デバイス検出とスキャンジョブのためのツールを公開する、小規模で型付けされたMCPサーバー

  • JSON Schemaで検証された入力と、決定的で型付けされた出力

  • スマートなデバイス選択(ADF/両面を優先し、カメラバックエンドを回避)、堅牢なデフォルト設定

  • ローカルファーストのトランスポート: デフォルトではstdioを使用してすべてをデバイス上に保持し、独自のネットワーク展開用にオプションのHTTPもサポート

注: このパッケージはNode 22とLinux SANEバックエンド(scanimage)を対象としています。

Related MCP server: MCPOSprint

クイックスタート(ローカルstdio、デフォルト)

MCPクライアント設定にサーバーエントリを追加します:

{
  "mcpServers": {
    "scan": {
      "command": "npx",
      "args": [
        "-y",
        "scan-mcp"
      ],
      "env": {
        "INBOX_DIR": "~/Documents/scanned_documents/inbox"
      }
    }
  }
}
  • この呼び出しは、プライバシー優先の単一マシン構成のためにstdio経由で実行されます。

  • device_idを指定せずにstart_scan_jobを呼び出すと、スキャナが自動選択され、スキャンが開始されます。

  • 成果物はジョブごとにINBOX_DIRの下に書き込まれます: job-*/page_*.tiffdoc_*.tiffmanifest.jsonevents.jsonlcrop_carrier_sheetsが設定され、キャリアシートが検出された場合、影響を受けるページごとにpage_*.cropped.tiff派生ファイルも書き込まれます。

ストリーミング可能なHTTPトランスポート

スキャナをネットワーク上の別のマシンに接続したい場合、scan-mcpはストリーミング可能なHTTPトランスポートもサポートしています:

scan-mcp --http
  • デフォルトのポートは3001です。MCP_HTTP_PORTを設定して上書きします(例: MCP_HTTP_PORT=3333 scan-mcp --http)。

  • デフォルトではすべてのインターフェース(::)にバインドします。MCP_HTTP_HOSTを設定して制限します(例: リバースプロキシがサーバーの前にある場合はMCP_HTTP_HOST=127.0.0.1)。

  • HTTPレスポンスは、ツール出力のストリーミングにサーバー送信イベント(SSE)を使用します。Claude DesktopやWindsurfなどのクライアントはこのトランスポートをサポートしています。

  • 現在、認証はありません。これは社内LANネットワーク用に意図されています。

インストール

  • npxで実行: npx scan-mcp(推奨)

    • CLIはNode 22+と必要なスキャナ/画像ツールの簡単な事前チェックを実行し、不足しているものがあればインストールのヒントを表示します。

    • 上記の推奨サーバー設定を参照してください。

  • 別のマシンで実行する場合は、npx scan-mcp --httpを使用してストリーミング可能なHTTPトランスポートを起動します。

  • CLIヘルプ: scan-mcp --help

  • ソースから(開発用):

    • npm install

    • npm run build

  • Clineのセットアップやその他の自動エージェントインストールについては、llms-install.mdを参照してください。

システム要件

  • SANEユーティリティを備えたLinux: scanimage(およびオプションでscanadf

  • TIFFツール: tiffcp(推奨)またはImageMagickのconvert

環境変数

  • SCAN_MOCK(デフォルト: false): テスト用にSANE呼び出しをモックし、偽のTIFFを生成します。

  • INBOX_DIR(デフォルト: scanned_documents/inbox): ジョブの実行と成果物のベースディレクトリ。

  • SCANIMAGE_BIN / SCANADF_BIN(デフォルト: scanimage / scanadf): バイナリパスを上書きします。

  • TIFFCP_BIN / IM_CONVERT_BIN(デフォルト: tiffcp / convert): 複数ページ結合ツール。

  • SCAN_EXCLUDE_BACKENDS(CSV): 除外するバックエンド(例: v4l)。

  • SCAN_PREFER_BACKENDS(CSV): 優先するバックエンド(例: epjitsu,epson2)。

  • PERSIST_LAST_USED_DEVICE(デフォルト: true): 最後に使用したデバイスを永続化し、軽く優先します。

  • MCP_HTTP_PORT(デフォルト: 3001): HTTPトランスポートのTCPポート。

API

ツール

  • list_devices

    • バックエンドの詳細を含む接続済みスキャナを検出します。

    • 入力: なし。

  • get_device_options

    • 特定のデバイスのSANEオプションを取得します。

    • 入力:

      • device_id(文字列): 対象デバイスの識別子。

  • start_scan_job

    • スキャンジョブを開始します。device_idを省略すると、自動選択とデフォルトオプションがトリガーされます。

    • 入力(特に記載がない限りすべてオプション):

      • device_id(文字列)

      • resolution_dpi(整数、50〜1200)

      • color_modeColor | Gray | Lineart): color_modeはデフォルトでLineart(ドキュメント優先)です。600dpi以上ではデフォルトでColorになります。高dpiキャプチャは通常、アートワークや写真を意味し、1ビットでは情報が破壊されるためです。どちらのデフォルトも上書きするにはcolor_modeを明示的に渡します。高dpiのみが使用されるシグナルです。

      • sourceFlatbed | ADF | ADF Duplex

      • duplex(ブール値)

      • page_sizeLetter | A4 | Legal | Custom

      • custom_size_mm { width, height }

      • doc_break_policy { type, blank_threshold, page_count, timer_ms, barcode_values }

      • output_format(文字列、デフォルトtiff

      • tmp_dir(文字列)

      • crop_carrier_sheets(ブール値、デフォルトfalse): キャリアシートの先端バンドを検出し、切り抜いたページの派生ファイルを書き込みます。元のページは保持されます。

  • get_job_status

    • ジョブの状態と成果物の数を検査します。

    • 入力:

      • job_id(文字列)

  • cancel_job

    • ジョブのキャンセルを要求します。スキャンループ中はベストエフォートです。

    • 入力:

      • job_id(文字列)

  • list_jobs

    • インボックスディレクトリから最近のジョブを一覧表示します。

    • 入力(オプション):

      • limit(整数、最大100)

      • staterunning | completed | cancelled | error | unknown

  • get_manifest

    • ジョブのmanifest.jsonを取得します。

    • 入力:

      • job_id(文字列)

  • get_events

    • ジョブのevents.jsonlログを取得します。

    • 入力:

      • job_id(文字列)

入力の形状については、schemas/のJSON Schemaを参照してください。テストはこれらの契約に対して検証されます。

選択とデフォルトの仕組み

デフォルトは300dpi、適切なカラーモード、利用可能な場合はADF/両面を目指します。スコアリングとフォールバックの詳細はドキュメントに記載されています:

  • 選択とデフォルト: docs/SELECTION.md

プロジェクト構成

  • src/mcp.ts — MCPサーバーのエントリポイントとツール登録

  • src/services/* — ハードウェアインターフェースとジョブオーケストレーション

  • schemas/ — 検証とテストに使用されるJSON Schema

  • docs/ — アーキテクチャ、規約、詳細な解説

開発

  • npm run dev(stdio MCPサーバー)、npm run dev:http(HTTPトランスポート)

  • make verifyはlint、型チェック、テストを実行します。

  • 規約: docs/CONVENTIONS.md、アーキテクチャ: docs/BLUEPRINT.md

ロードマップ

アイデアの追跡と今後の改善はdocs/ROADMAP.mdに文書化されています。

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
3moRelease cycle
4Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that enables users to print markdown tasklists, Notion tasks with QR codes, and arbitrary images directly to ESC/POS thermal printers over USB. It includes specialized tools for task processing, automated card generation, and printer diagnostics.
    7
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that converts HTML or URLs to PDF, captures screenshots, and generates EU-compliant e-invoices (Factur-X/ZUGFeRD).
    53
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server for the PDFGate API. Generate PDFs, manage documents and handle e-signatures.

  • A paid remote MCP for developer endpoint scanner MCP, built to return verdicts, receipts, usage logs

  • OCR, transcription, file extraction, and image generation for AI agents via MCP.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jacksenechal/scan-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server