Tinify image tools について
Tinify image toolsは、Tinify.dev APIを使って画像の圧縮、サイズ変更、切り抜き、形式変換を行うMCPクライアント向けサービスです。ローカルファイル用とホスト型の接続方法があり、数値を構造化して返し、圧縮で容量が減らない場合も明示します。
主な機能
- 01画像の圧縮、サイズ変更、切り抜き
- 02PNG、JPEG、WebP、AVIFの変換
- 03プランと残り操作数の確認
- 04バイト数の構造化データ返却
- 05元ファイルの無断上書き防止
活用シーン
- 01Web画像を圧縮して削減バイト数を確認
- 02指定幅に画像をリサイズ
- 03画像をWebPまたはAVIFに変換
- 04月内のTinify残り操作数を確認
MCP 対応
MCP経由で、画像処理と利用状況確認の5つのツールを公開します。ローカルのstdioサーバーまたはホスト型Streamable HTTPサービスにクライアントから接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @tinify-dev/mcpTINIFY_API_KEYシークレットTinify.dev API key (tnf_live_* or tnf_test_*), created at https://tinify.dev/developers. Free tier: 500 operations/month.TINIFY_BASE_URLOverride the API origin (advanced; defaults to https://api.tinify.dev).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
5掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| path | string | はい | 画像の絶対パス(png、jpg、jpeg、webp、avif、最大 40 MB)。 |
| overwrite | boolean | いいえ | 出力パスにある既存ファイルの置き換えを許可します。デフォルトは false です。 |
| output_path | string | いいえ | 結果を書き込む絶対パス。デフォルト:入力ファイルの隣にある <name>.min.<ext>。output_path が元画像を指し、かつ overwrite が true でない限り、元画像が上書きされることはありません。 |
| quality_mode | enum | いいえ | balanced(デフォルト)、best_quality、または lossless。JPEG 入力では lossless は拒否されます。balanced | best_quality | lossless |
| target_size_kb | integer | いいえ | 結果をこの KB 数値以下にすることを目指します(ベータ版;サーバーへの段階的な展開)。 |
詳細
@tinify-dev/mcp
Tinify.dev の画像 API 用 MCP(Model Context Protocol)サーバーです。ChatGPT、Claude、Cursor、その他の MCP クライアントから、画像の圧縮、サイズ変更、切り抜き、変換を行えます。結果は正確に伝えます。
You: compress the screenshots in ~/Desktop/launch/
Claude: 312.4 KB → 97.1 KB (-68.9%), wrote /Users/you/Desktop/launch/hero.min.png
84.2 KB → 84.2 KB — logo.png is already as small as Tinify.dev can make it
(optimized: false), so no file was written.
- 節約量を偽りません — API でファイルを小さくできない場合は、バイト単位で同一の「最適化済み」コピーを書き出すのではなく、その旨を伝えます(
optimized: false)。 - 元のファイルを黙って上書きしません — 結果は入力ファイルと同じ場所に
<name>.min.<ext>として保存するか、明示的に指定したoutput_pathに保存します。ファイルを置き換えるにはoverwrite: trueが必要です。 - すべての呼び出しで
structuredContentに数値をそのまま返すため、エージェントは文章を解析せずに計算できます。
TinyPNG とは提携していません。このサーバーは Tinify.dev API と通信します。
要件
- Node.js >= 20
- tinify.dev/developers の Tinify.dev API キー — 無料枠は月 500 回の操作で、カードは不要です。
セットアップ
Claude Desktop
claude_desktop_config.json に追加します(Settings → Developer → Edit Config):
{
"mcpServers": {
"tinify": {
"command": "npx",
"args": ["-y", "@tinify-dev/mcp"],
"env": { "TINIFY_API_KEY": "tnf_live_..." }
}
}
}
Claude Code
claude mcp add tinify -e TINIFY_API_KEY=tnf_live_... -- npx -y @tinify-dev/mcp
Cursor
プロジェクト内に .cursor/mcp.json を作成します(グローバルに設定する場合は ~/.cursor/mcp.json):
{
"mcpServers": {
"tinify": {
"command": "npx",
"args": ["-y", "@tinify-dev/mcp"],
"env": { "TINIFY_API_KEY": "tnf_live_..." }
}
}
}
リモートサーバー(ホステッド)
同じ 5 つのツールを、ホステッド型のストリーミング可能な HTTP MCP サーバーとして利用できます。インストールは不要で、ChatGPT コネクター、claude.ai ディレクトリ、URL を必要とするあらゆるレジストリーで動作します:
Endpoint: https://api.tinify.dev/mcp
Auth: OAuth 2.1 (PKCE + dynamic client registration), or
Authorization: Bearer tnf_live_... (or tnf_test_...)
認証方法は 2 つあります:
- OAuth(コネクター向け) — ChatGPT コネクターと claude.ai ディレクトリが対応している認証方式は「OAuth」または「認証なし」のみです。サーバー URL(
https://api.tinify.dev/mcp)を追加して OAuth を選択します。クライアントはサーバーの.well-knownメタデータから認証エンドポイントとトークンエンドポイントを自動的に検出して自身を登録し、Tinify API キーを貼り付ける Connect Tinify ページを開きます。API キーは認証情報として保持され、クライアントが保持するのは、サーバー側でキーに対応付けられた不透明なトークンだけです。 - 直接ベアラー認証(スクリプト/CLI 向け) —
Authorization: Bearer tnf_live_...(またはtnf_test_...)を送信すれば、OAuth を使わずに利用できます。従来どおりです。
ChatGPT の開発者モードで接続する
-
ChatGPT で Settings → Security and login を開き、Developer mode を有効にします。
-
ChatGPT Plugins を開き、プラスボタンを選択して
https://api.tinify.dev/mcpを追加します。 -
Tinify API キーを使って Connect Tinify を完了します。
-
会話のツールメニューから接続を追加し、PNG/JPEG/WebP/AVIF を添付して、次のように依頼します:
Use Tinify to compress this image for the web. Show the original size, result size, and percentage saved.
ホステッドサーバーはローカルパスにアクセスできないため、各画像ツールでは次のいずれか 1 つだけを指定できます:
image— ChatGPT の添付ファイルオブジェクトです。記述子でopenai/fileParamsが宣言されているため、ChatGPT が自動的に値を設定します。image_base64— その他の MCP クライアント向けのポータブルな代替手段です。デコード後のサイズは約 28 MB が上限です。
ChatGPT の添付ファイルは HTTPS 経由でのみダウンロードされます。プライベート/予約済みネットワークの宛先とリダイレクトは拒否され、タイムアウトは 30 秒、サイズ上限は Tinify API の 40 MB です。操作が成功すると、正確なバイト数の指標と一時的な MCP 結果リンクが返されます。既存の base64 呼び出し元には、後方互換性のため structuredContent.image_base64 も返されます。get_usage はローカル版と同一です。ユーザーのファイルシステムには何も書き込まれません。
curl で試すには:
curl -s https://api.tinify.dev/mcp \
-H "Authorization: Bearer tnf_live_..." \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"curl","version":"0"}}}'
ローカルファイルには、上記の stdio サーバーをお使いください。ファイルを直接読み書きでき、base64 への往復変換や 28 MB の上限もありません。
1 つのサーバー、2 つのトランスポートアダプター
このリポジトリは、意図的に OpenAI と Claude の両方をサポートしています。
- 共通のツール名、Tinify クライアント、結果メトリクス、エラー、注釈は、プラットフォームに依存しません。
- stdio アダプターは絶対ローカルパスを使用し、Claude、Cursor、Codex などのデスクトップ/CLI クライアント向けにファイルを書き込みます。
- ホステッドアダプターは ChatGPT のファイル添付または base64 を使用し、ホステッドサーバーはユーザーのファイルシステムを読み取れないため、一時的な結果リンクを返します。
OpenAI 専用のリポジトリを作成すると、Tinify のロジックが重複し、動作に差異が生じる可能性が高まります。OpenAI 固有のディスクリプターメタデータは、ホステッドアダプターの小さな追加レイヤーとして維持します。別のリポジトリは必要ありません。
OpenAI への一般公開申請では、ポータルから提供されたドメイントークンを
OPENAI_APPS_CHALLENGE_TOKEN として /etc/tinify/mcp-http.env に設定し、
deploy/nginx-location.conf にある対応する nginx ロケーションをデプロイしてください。このエンドポイントは /.well-known/openai-apps-challenge でそのトークンのみを返します。実際のポータルトークンをコミットしないでください。
ツール
| ツール | 引数 | 機能 |
|---|---|---|
compress_image | path(絶対パス)、output_path?、quality_mode?(balanced/best_quality/lossless)、target_size_kb?(ベータ版)、overwrite? | PNG/JPEG/WebP/AVIF を圧縮します。入力ファイルと同じ場所に <name>.min.<ext> を書き込みます。API が optimized: false を返した場合は、明示的な output_path を指定していない限り、何も書き込みません。 |
resize_image | path、width?/height?/scale?(少なくとも 1 つ)、keep_aspect_ratio?、output_path?、overwrite? | サイズを変更し、結果を書き込みます。 |
crop_image | path、x、y、width、height、output_path?、overwrite? | 矩形に切り抜き、結果を書き込みます。 |
convert_image | path、format(avif/webp/jpeg/png)、quality_mode?、output_path?、overwrite? | 形式を変換します(ベータ版 — エンドポイントはサーバー側で順次展開中です)。デフォルトの出力先:<name>.min.<new-ext>。 |
get_usage | — | プラン、請求期間、使用済みおよび残りのオペレーション数。 |
すべての画像ツールでは絶対パスが必要です(MCP サーバーは予測できない作業ディレクトリで実行されます)。また、API の40 MB制限をローカルで事前に確認します。API エラーは、サポートに問い合わせる際に伝えられるエラー code と request_id を含む、わかりやすいツールエラーとして返されます。
プロンプトの例
- 「/Users/me/site/static/img にある PNG をすべて圧縮して」
- 「/Users/me/photo.jpg の幅を 1200px に変更して、何バイト節約できたか教えて」
- 「/Users/me/hero.png を最高品質で webp に変換して」
- 「今月、Tinify のオペレーションはあといくつ使えますか?」
制限とプライバシー
- 画像 1 枚あたり最大 40 MB/50 MP。PNG、JPEG、WebP、AVIF に対応しています。
- アップロードされた画像と結果は、2 時間後に Tinify.dev のサーバーから削除されます。
- サーバーは指定されたファイルのみを読み取り、書き込み先として通知した場所にのみ書き込みます。
トラブルシューティング
- 「TINIFY_API_KEY is not set」 — サーバーは起動時に終了し、修正用の設定スニペットを正確に表示します。MCP 設定の
envブロックにキーを追加してください。 invalid_api_key— キーが間違っているか、無効化されています。tinify.dev/developers で新しいキーを作成してください。quota_exhausted(429) — 月間クォータを使い切っています。get_usageを実行して、期間の終了日を確認してください。- 「path must be absolute」 —
./img.pngではなく、/Users/you/img.pngのようなフルパスを指定してください。 - ログは stderr に出力されます。Claude Desktop では
~/Library/Logs/Claude/mcp-server-tinify.logを確認してください。
ロードマップ
- 永続バッチ API を利用したバッチツール(create/commit/wait/download)— v1 には含まれません。
ライセンス
MIT © Stian Larsen
ワンクリック/1行でのインストール
Cursor:Cursor に追加 - その後、Cursor の MCP 設定で実際のキーを設定してください。
VS Code:
code --add-mcp '{"name":"tinify","command":"npx","args":["-y","@tinify-dev/mcp"],"env":{"TINIFY_API_KEY":"tnf_live_..."}}'
Codex CLI:
codex mcp add tinify --env TINIFY_API_KEY=tnf_live_... -- npx -y @tinify-dev/mcp
または ~/.codex/config.toml に記述します:
[mcp_servers.tinify]
command = "npx"
args = ["-y", "@tinify-dev/mcp"]
[mcp_servers.tinify.env]
TINIFY_API_KEY = "tnf_live_..."
Claude Code プラグイン(MCP + 画像最適化スキル):
/plugin marketplace add Stianlars1/tinify-claude-plugin
/plugin install tinify@tinify
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。