Mochify について
Mochifyは、mochify.appのAPIを使ってファイルを処理する画像・PDF向けコマンドラインツール兼MCPサーバーです。画像の変換、圧縮、編集、PDF処理に対応し、ローカルstdioとホスト型HTTPの接続方式を選べます。
主な機能
- 01AVIF、JXL、WebPなどへの画像変換
- 02画像のリサイズ、切り抜き、最適化
- 03背景除去と画像領域のマスキング
- 04PDFの最適化、抽出、ラスタライズ、分割
- 05ローカルstdioとホスト型HTTPのMCPサーバー
活用シーン
- 01Web掲載用画像の一括変換
- 02共有前の写真のリサイズやマスキング
- 03テキストを保ったままPDFを縮小
- 04AIアシスタントに画像・PDF処理を提供
MCP 対応
`mochify serve`によるローカルstdioサーバーと、`mcp.mochify.app`のホスト型Streamable HTTPサーバーを提供します。どちらも同じ処理エンジンを使い、ローカルモードはディスク上のパス、ホスト型モードはHTTPS URLまたはbase64入力を受け取ります。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.mochify.app/mcpclaude mcp add --transport http app-mochify-mochify https://mcp.mochify.app/mcp{"mcpServers":{"app-mochify-mochify":{"type":"http","url":"https://mcp.mochify.app/mcp"}}}Cursor で開く{"servers":{"app-mochify-mochify":{"type":"http","url":"https://mcp.mochify.app/mcp"}}}VS Code で開く{"mcpServers":{"app-mochify-mochify":{"type":"http","url":"https://mcp.mochify.app/mcp"}}}{"mcpServers":{"app-mochify-mochify":{"serverUrl":"https://mcp.mochify.app/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
mochify-cli
mochify.app 用のコマンドラインツール兼 MCP サーバーです。ネイティブ C++ エンジンを搭載した、高速でプライバシーを最優先する画像圧縮・変換 API です。
ターミナルから画像を最新フォーマット(AVIF、JXL、WebP、Jpegli)に圧縮・変換したり、PDF を処理したりできます。また、Model Context Protocol を介して、Claude などの AI アシスタントに同じエンジンを直接利用させることもできます。ローカルの stdio サーバー(mochify serve)として実行する方法と、インストール不要のホスト型サーバー mcp.mochify.app を利用する方法があります。
目次: インストール · CLI の使い方 · PDF の処理 · MCP サーバー · プラン
インストール
macOS(Homebrew):
brew tap getmochify/mochify
brew install mochify
Windows(Scoop):
scoop bucket add mochify https://github.com/getmochify/scoop-mochify
scoop install mochify
Linux / WSL:
# x86_64
curl -L https://github.com/getmochify/mochify-cli/releases/latest/download/mochify-linux-x86_64 -o mochify
chmod +x mochify
sudo mv mochify /usr/local/bin/
# arm64
curl -L https://github.com/getmochify/mochify-cli/releases/latest/download/mochify-linux-arm64 -o mochify
chmod +x mochify
sudo mv mochify /usr/local/bin/
Cargo(すべてのプラットフォーム):
cargo install mochify
Rust が必要です。Linux/WSL ですでにツールチェーンをお使いの場合は、これが最も簡単な方法です。
手動: すべてのバイナリは Releases にあります。
ソースから:
cargo install --path .
認証
mochify.app のアカウントにサインインすると、利用枠の全量が使えるようになります。
mochify auth login
ブラウザーが開くので、サインインして CLI を認証してください。認証情報は ~/.config/mochify/credentials.toml に自動保存されるため、環境変数の設定やキーの手動コピーは不要です。CLI と MCP サーバーの両方が、保存された認証情報を自動的に読み込みます。
ブラウザーを使えないマシン(たとえば SSH 接続時)では、コードを使ってサインインできます。表示されたリンクを任意のデバイスで開き、コードを入力してください。
mochify auth login --no-browser
mochify auth status # check whether you're signed in
mochify auth logout # remove saved credentials
アカウントがない場合は、1 バッチあたり 3 枚の画像を処理できます(IP アドレスに基づく制限)。無料アカウントでは月 25 枚です。mochify.app で登録してください。
CLI の使い方
mochify [OPTIONS] <FILES>...
オプション
| フラグ | 説明 |
|---|---|
-t, --type <FORMAT> | 出力フォーマット:jpg、png、webp、avif、jxl |
-w, --width <N> | 出力幅(ピクセル) |
-H, --height <N> | 出力高さ(ピクセル) |
--crop | 指定した寸法に正確に切り抜きます(顕著性ガイド付き) |
--region <X,Y,W,H> | 左上を起点に、正立画像に対する割合 0–1 で指定した矩形に切り抜きます |
--redact <SPEC> | 領域を隠します:faces および/または ; 区切りのボックス x,y,w,h(--region と同じ指定方法) |
--redact-style <STYLE> | fill(単色の黒。デフォルト)または blur(見た目だけの処理) |
-r, --rotation <DEG> | 回転:0、90、180、270 |
-o, --output <DIR> | 出力ディレクトリ(デフォルト:入力と同じ場所) |
-n, --name <NAME> | 出力ファイルのベース名(拡張子なし) |
--clarity | 明瞭度を適用します(中間調のコントラストを強調し、よりくっきりと詳細な見た目にします) |
--remove-bg | 背景を除去します(AI による前景の分離) |
--background <COLOR> | --remove-bg で使用する合成色(white、#ff0000、…) |
--keep-metadata | EXIF/メタデータを保持します(デフォルトでは削除) |
-q, --quality <N> | 出力品質 1–100(デフォルト:自動) |
--smart-compress | 顕著性ガイド付きの品質設定。細部は高品質に、平坦な領域は低品質にします |
--brightness <N> | 露出:-100(最も暗い)から +100(最も明るい) |
--optimize-for-web | プログレッシブ形式+4:2:0 クロマにより、配信用ファイルを最小化します |
--lossless | ピクセル単位で正確な出力(jxl、webp、png のみ) |
--hdr [MODE] | Ultra HDR ゲインマップ:preserve(フラグのみ)または generate |
-p, --prompt <TEXT> | 自然言語のプロンプト。すべてのパラメーターを自動的に設定します |
-j, --jobs <N> | 同時に処理するファイル数(デフォルトは 4。厳密に 1 件ずつ処理する場合は 1) |
-k, --api-key <KEY> | API キーの上書き(または環境変数 MOCHIFY_API_KEY を設定) |
例
# Convert to AVIF
mochify photo.jpg -t avif
# Resize and convert to WebP
mochify photo.jpg -t webp -w 800
# Batch convert a folder to AVIF at 1200px wide
mochify ./images/*.jpg -t avif -w 1200 -o ./compressed
# Natural-language prompt — let the AI pick the right params
mochify photo.jpg -p "convert to avif, 1200px wide"
mochify photo.jpg -p "optimise for eBay"
mochify photo.jpg -p "remove background and convert to WebP"
mochify photo.jpg -p "resize to 50%, strip EXIF, keep as WebP"
# Custom output name
mochify photo.jpg -t webp -n hero
mochify product.jpg -p "optimise for Shopify" -n product-main
# Pipe file paths from stdin
find . -name "*.jpg" | mochify -t webp -o ./out
cat images.txt | mochify -p "convert to avif 1200px wide" -o ./compressed
ls *.heic | mochify -t jpg
品質
指定しない場合、品質は自動的に選択されます。
# Fixed quality
mochify photo.jpg -t webp -q 70
# Let saliency pick it — detailed subjects keep more, flat areas less
mochify photo.jpg -t avif --smart-compress
# Smallest file to serve from a web server
mochify photo.jpg -t webp --optimize-for-web
# Brighten a dark photo
mochify photo.jpg --brightness 30
# Pixel-exact
mochify scan.png -t webp --lossless
--lossless が動作するのは jxl、webp、png のみです。jpg と avif はリクエスト送信前に拒否されます。-q と --smart-compress より優先され、出力は通常、入力より大きくなります。ロスレスではピクセルが保持されますが、ファイルサイズは保持されないためです。元画像がすでに非可逆圧縮(JPEG、AVIF、HEIC)されている場合は、破棄された情報を復元することはできないため、最良の非可逆エンコードとして返されます。その場合、CLI がその旨を伝えます。
領域の切り抜き
--crop は被写体そのものを見つけます。--region は、あなた自身、または MCP サーバーを操作する AI アシスタントが、画像のどの部分を切り抜くかすでに把握している場合に使います。
# The bottom-left quarter
mochify photo.jpg --region 0,0.5,0.5,0.5
# A region, then sized: -w/-H apply to the cropped part
mochify photo.jpg --region 0.2,0.1,0.6,0.8 -w 800 -t webp
4 つの数値は x,y,width,height で、画像に対する比率(0~1)です。表示された状態の画像の左上を基準に測定され、横向きに保存されたスマートフォンの写真でも、正しい向きが基準になります。ピクセルではなく比率を使うため、画像の表示サイズが変わっても同じボックスを使えます。1 を超える値は、ほとんどの場合ピクセル単位のボックスであるため、リクエスト送信前に拒否されます。まず領域を切り抜き、その後に -w/-H、--crop、--rotation、--remove-bg が適用されます。--verbose を指定すると、実際に切り抜かれたピクセル範囲が表示されます。
MCP 経由では、アシスタントが「足元を切り抜く」「ロゴだけ」のように、内容を基準に切り抜けます。画像そのものを見てボックスを選び、Mochify には 4 つの数値だけが渡されます。
マスキング
画像を共有する前に、顔、ナンバープレート、住所などを隠します。
# Every face, found automatically
mochify family.jpg --redact faces
# A number plate, as a box (fractions of the upright image, like --region)
mochify car.jpg --redact 0.38,0.71,0.24,0.08
# Both, softened with a blur instead of a solid fill
mochify street.jpg --redact "faces;0.38,0.71,0.24,0.08" --redact-style blur
項目は ; で区切ります。ボックス内の , はそのまま使います。fill(黒で塗りつぶし)はデフォルトであり、秘密にしておく必要があるものに使います。blur は顔をぼかした見た目にするためのものですが、ぼかしたテキストや顔は復元できる場合があります。
マスキングを行うと、メタデータ(EXIF には元画像のサムネイルが含まれることがあります)は常に削除され、HDR ゲインマップ(シーンの構造が含まれます)も、保持するよう指定されていても削除されます。faces はベストエフォートのため、小さな顔や横顔を見逃すことがあります。顔が見つからなかった場合は CLI がその旨を伝えます。共有する前に出力を確認してください。
HDR(Ultra HDR ゲインマップ)
--hdr は、HDR ディスプレイで写真を実際のヘッドルームで表示するための Ultra HDR/ISO 21496-1 ゲインマップを制御します。
| モード | 動作 |
|---|---|
--hdr(または --hdr preserve) | ソースにすでにあるゲインマップを保持します。新たに生成することはないため、SDR 写真には何も行いません。 |
--hdr generate | 既存のゲインマップを保持し、ソースが通常の SDR 画像の場合はゲインマップを生成します。「HDR にする」場合はこちらを使います。 |
ゲインマップを含められる出力形式は jpg のみです(jxl は別の方法で HDR を含められますが、avif、webp、png は対応していません)。そのため、-t jpg と組み合わせてください。また、ゲインマップの比率の基準となる画像を変更する --clarity または --remove-bg と併用した場合も処理されません。CLI は X-Mochify-HDR レスポンスヘッダーを読み取り、出力にゲインマップが含まれなかった場合にその旨を伝えます。
# Keep the headroom an iPhone photo already captured, converting to JPEG
mochify IMG_1234.heic -t jpg --hdr
# Give an SDR photo a gain map
mochify photo.jpg --hdr generate
# Or just say so
mochify photo.jpg -p "make this HDR"
出力ファイルの命名
出力形式とディレクトリが入力と同じ場合、デフォルトでは結果が {name}_mochified.{ext} として保存され、処理が行われたことが常にわかります。そのファイルがすでに存在する場合は、数値の接尾辞(_1、_2 など)が追加されます。形式が変わる場合(例:.jpg → .webp)、拡張子の変更で明確に区別できるため、接尾辞は追加されません。
-n, --name を使うと、ベース名を明示的に指定できます。mochify photo.jpg -t webp -n hero は hero.webp として保存します。プロンプトのパスでも指定できます。mochify *.jpg -p "optimise for Shopify, name them product" を実行すると、product.webp、product_1.webp などが生成されます。
PDF 処理
PDF は .pdf 拡張子で自動的に検出され、--op で処理内容を指定します。(1 つのコマンドで PDF と画像を混在させることはできません。別々に実行してください。)
例外は create です。入力は画像なので、処理を振り分けるための .jpg の情報はありません。--op create を指定するか、プロンプトで「pdf」と伝えてください。mochify *.jpg -p "convert to pdf" でも PDF を作成できます。
| Op | 対象 | 戻り値 | 処理内容 |
|---|---|---|---|
optimize | .pdf | PDF 内の画像を再圧縮します。テキスト、フォント、ベクター画像、レイアウトには手を加えないため、ドキュメントの検索可能な状態は保たれます。 | |
extract | .zip | ドキュメントに配置された画像を、保存時の解像度のまま取り出します。 | |
rasterize | .zip | テキストも含め、すべてのページを画像にレンダリングします。 | |
split | .zip | PDF をページごとに 1 ページの PDF に分割します。 | |
create | 画像 | .pdf | 指定された順に、画像 1 枚につき 1 ページの PDF を作成します。 |
| フラグ | 対象 | 説明 |
|---|---|---|
--op <OP> | すべて | optimize、extract、rasterize、split、create |
-t, --type <FORMAT> | rasterize、extract | png、jpg、webp、avif、jxl。さらに extract では original(再エンコードなし)も指定できます |
--dpi <N> | rasterize、optimize、create | レンダリング解像度(rasterize、デフォルトは 150)、PDF 内に保持する画像の目標解像度(optimize)、またはページサイズ(create) |
-q, --quality <N> | split 以外のすべて | 出力品質 1–100(画像の場合と同じフラグです) |
--max-width <N> | extract、optimize、create | 画像の幅をピクセル単位で制限します。0 にするとサイズを変更しません |
--min-size <N> | extract、optimize | いずれかの辺がこのサイズより小さい画像をスキップします。0 にするとすべて処理します |
--page <SIZE> | create | fit(デフォルト)、a4、letter |
--no-combine | create | 画像ごとに 1 ページの PDF を作成し、.zip で返します |
# Make a PDF smaller without touching the text
mochify report.pdf --op optimize -q 75 --dpi 150
# Pull the embedded images out as WebP, capped at 1600px
mochify brochure.pdf --op extract -t webp --max-width 1600
# Render pages to PNG at 150 DPI, or high-res JPEGs for print
mochify document.pdf --op rasterize -t png --dpi 150
mochify document.pdf --op rasterize -t jpg --dpi 300 -q 90
# One PDF per page
mochify document.pdf --op split
# Build a PDF from images (one page per image, in the order given)
mochify page-*.jpg --op create --page a4 -n scanned
mochify page-*.jpg --op create --no-combine # one PDF per image, as a zip
# Or describe it in natural language
mochify report.pdf -p "compress this pdf"
mochify brochure.pdf -p "get the photos out as png"
mochify document.pdf -p "split into pngs"
mochify page-*.jpg --op create -p "one a4 pdf, good quality"
# A prompt that says "pdf" on image inputs implies --op create
mochify page-*.jpg -p "convert to pdf"
mochify scan-*.png -p "one a4 pdf, good quality"
mochify shot-*.jpg -p "each image as its own pdf"
出力ファイル名には入力名が使われます。report_compressed.pdf、brochure_images.zip、document_rasterized.zip、document_pages.zip、および create の場合は <first image>.pdf となります(-n で変更できます)。
optimize、extract、rasterize、split の利用には有料プランが必要です。create は Free を含むすべてのプランで利用できます。
MCP サーバー
Mochify は 2 つの方法で MCP に対応しています。どちらも api.mochify.app にある同じエンジンを呼び出し、エンコードは RAM 上で行われ、元のファイルは直ちに破棄されます。異なるのはファイルの保存場所です。
ホステッド(mcp.mochify.app) | ローカル(mochify serve) | |
|---|---|---|
| インストール | 不要 | このバイナリ |
| トランスポート | Streamable HTTP | stdio |
| 認証 | OAuth 2.0 + PKCE、ブラウザーでの承認 1 回 | mochify auth login、または匿名 |
| 入力 | 公開 HTTPS URL、または base64 バイト列 | ディスク上の絶対パス |
| 出力 | files.mochify.app 上の短時間有効なダウンロード URL(約 5 分) | ディスクに直接書き込み |
| エージェント経由の画像バイト列 | base64 入力の場合 | なし |
| 対応形式 | 画像 | 画像および PDF |
ファイルシステムにアクセスできないエージェント(Claude.ai、ホステッドランタイム、すでにウェブ上にある画像を扱うものなど)には、ホステッドを選んでください。ファイルが手元のマシンにある場合、たいていはこちらに当たりますが、ローカルを選んでください。モデルのコンテキストに入るのはパスとバイト数だけです。
同じクライアントで両方を、独立したトークンを使って併用できます。
ホスト型(インストール不要)
https://mcp.mochify.app をリモート MCP コネクターとして登録し、OAuth フローを一度完了します。コピーやローテーションが必要な API キーはありません。
- Claude.ai — Settings → Connectors → Add custom connector
- Claude Desktop — Settings → Connectors、または設定ファイルに
"type": "http"のエントリーを追加 - Cursor、Windsurf、Gemini、その他リモート MCP に対応するクライアント — 同じ URL
または、Smithery からインストールできます。
結果は、有効期限が約 5 分のダウンロード URL として返され、取得されるか TTL が切れるまでメモリ内の取得用ストアに保持されます。元のファイルが保存されることはありません。この方法だけは、エンドツーエンドでゼロリテンションではありません。MCP のゼロリテンションを緩和した理由をご覧ください。
ローカル(stdio)
まず mochify auth login を実行してから、クライアントでバイナリを指定します。
{
"mcpServers": {
"mochify": {
"command": "mochify",
"args": ["serve"]
}
}
}
Claude Desktop の設定ファイルは、macOS では ~/Library/Application Support/Claude/claude_desktop_config.json にあります。その後、クライアントを再起動してください。サーバーは保存済みの認証情報を自動的に読み込みます。Cursor、Continue、Cline、Claude Code など、stdio 対応の MCP クライアントでも同じように動作します。
CI では代わりに MOCHIFY_API_KEY を設定するか、認証を完全にオフにして匿名の無料枠で実行できます。
ツール
どちらのサーバーも同じ 4 つのツールを公開します。違いはファイルの入出力方法です。ローカルサーバーはパスを受け取り、ディスクに書き込みます。ホスト型サーバーは URL または base64 を受け取り、有効期間の短いダウンロード URL を返します。
| ツール | 入力 | 処理 |
|---|---|---|
squish | 画像 1 枚 | 画像に関するすべての処理を行います。形式変換、サイズ変更、切り抜き、回転、背景の削除、明るさ調整、鮮明化、品質制御(固定、顕著性ガイド付き、または可逆)、Web 向け最適化、Ultra HDR ゲインマップに対応します。 |
pdf | PDF 1 件 | optimize(テキストとレイアウトはそのままで PDF を小さくします)、extract(PDF 内の画像を ZIP にします)、rasterize(ページを画像に変換して ZIP にします)、split(ページごとに PDF を作成して ZIP にします)。 |
pdf_create | 画像 | 指定された順序で、画像 1 枚につき 1 ページの PDF を作成します。ページサイズは fit、a4、letter です。combine: false を指定すると、1 ページの PDF をまとめた ZIP を返します。 |
check_usage | なし | 今回の請求期間に残っている操作回数と、それに適用されるプランを報告します。認証が必要です。 |
squish のパラメーター:file_path、type、width、height、crop、rotation、quality、smart_compress、lossless、optimize_for_web、brightness、clarity、remove_background、background、strip_metadata、hdr、output_dir、output_name。
pdf のパラメーター:file_path、op、type、dpi、quality、max_width、min_size、output_dir。
pdf_create のパラメーター:file_paths、page、quality、dpi、max_width、combine、output_name、output_dir。
check_usage はパラメーターを取りません。
各ツールはファイルシステムを自ら読み書きするため、エージェントが処理のために画像を読み込む必要はありません。応答には保存先のパスと、API が返した情報(PDF の縮小率、ゲインマップが保持されたかどうか、可逆処理の要求が非可逆処理に切り替わったかどうか、残りのクォータなど)が含まれます。
使用方法
ファイルのフルパスを含めて、自然な言葉で実行したいことを説明します。
「
/Users/me/Desktop/photo.jpgを、幅 1000px の AVIF に変換して」
「
/Users/me/projects/blog/images/内の JPEG をすべて WebP に圧縮し、/Users/me/projects/blog/compressed/に保存して」
「eBay 向けに
/Users/me/Desktop/product.jpgを最適化して」
「
/Users/me/Desktop/shirt.pngの背景を削除して、WebP で保存して」
「
/Users/me/Desktop/report.pdfを圧縮して。メールで送るには大きすぎます」
「
/Users/me/Desktop/report.pdfを 200 DPI の PNG にラスタライズして」
「
/Users/me/Desktop/sunset.jpgを HDR にして」
「
/Users/me/Desktop/dim.jpgを少し明るくして、ウェブサイト向けに最適化して」
「
/Users/me/Desktop/receipts/内のスキャン画像を 1 つの A4 PDF にまとめて」
API
https://api.mochify.app を利用します。画像には /v1/squish、PDF の最適化/抽出/ラスタライズ/分割/作成には /v1/pdf を使用します。ファイルは RAM 上で処理され、ディスクに書き込まれることはありません。
| プラン | 月間操作数 | 1 バッチあたりのファイル数 | 最大ファイルサイズ |
|---|---|---|---|
| 無料(アカウントなし) | 1 バッチあたり 3 | 3 | 20 MB |
| 無料(アカウントあり) | 25 | 3 | 20 MB |
| デイパス(一度限り $2) | 100、24 時間有効 | 25 | 75 MB |
| セラー($7.99/月) | 300 | 25 | 75 MB |
| Pro($24.99/月) | 1,200 | 25 | 75 MB |
| Growth($79.99/月) | 5,000 | 25 | 75 MB |
1 回の操作は出力画像 1 枚分です。同じファイルを圧縮、変換、サイズ変更、回転しても、操作数は 1 のままです。2 つのサイズで 2 つの形式を指定すると、操作数は 4 になります。PDF の optimize、extract、rasterize、split には有料プランが必要です(デイパスも対象です)。create は無料プランを含むすべてのプランで利用できます。
ウェブインターフェース、料金、API ドキュメントについては、mochify.app をご覧ください。
質問
GitHub Discussions で質問してください。サポートメールのやり取りとは異なり、回答を後から検索できます。バグ報告や機能リクエストはIssuesにお寄せください。アカウントや請求に関するお問い合わせは、[email protected] までメールでご連絡ください。
公式 MCP Registry に mcp-name: app.mochify/mochify として登録されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。