LLM-native image optimization MCP server
- ✓Actively maintained (<30d)
- ✓Clear description
- ✓Topics declared
- !No standard license detected
/plugin marketplace add eralpozcan/vision-squeezer
/plugin install vision-squeezer3 items in this repository
Plugins overview
<p align="center">
<img src="assets/logo.png" width="300" alt="VisionSqueezer Logo" />
</p>
# VisionSqueezer
<p align="center">
<a href="https://github.com/eralpozcan/vision-squeezer/actions"><img src="https://img.shields.io/github/actions/workflow/status/eralpozcan/vision-squeezer/ci.yml?label=build" alt="Build"></a>
<a href="https://crates.io/crates/vision-squeezer"><img src="https://img.shields.io/crates/v/vision-squeezer" alt="crates.io"></a>
<a href="https://www.npmjs.com/package/vision-squeezer"><img src="https://img.shields.io/npm/v/vision-squeezer" alt="npm"></a>
<a href="LICENSE"><img src="https://img.shields.io/badge/license-Elastic--2.0-blue" alt="License"></a>
</p>
LLM-native image optimization middleware & MCP server. Reduces vision model token consumption by preprocessing images into tile-boundary-aligned, padding-free formats.
Works with **any agent or editor** that speaks MCP — Claude, GPT, Gemini, Codex, or your own.
---
## Install
### Interactive (recommended)
Picks the client, method, and scope for you:
```bash
npx vision-squeezer install
```
Prompts for:
- Target CLI — Claude Code / Codex CLI / Qwen Code / OpenCode / Gemini CLI / Kimi CLI
- Install method (Claude Code only) — `plugin` (bundles MCP + stats/doctor/upgrade skills) or `mcp-add` (server only)
- Install scope (`mcp-add` only) — `user` (all projects, recommended), `local` (this project only), `project` (share via `.mcp.json`)
Scripted setups pass the choices directly:
```bash
npx vision-squeezer install --client claude --method plugin --yes
npx vision-squeezer install --client claude --method mcp-add --scope user --yes
```
### Claude Code — plugin marketplace (one-liner, bundles skills)
```
/plugin marketplace add eralpozcan/vision-squeezer
/plugin install vision-squeezer-mcp@vision-squeezer
```
Installs the MCP server *and* `/vision-stats`, `/vision-doctor`, `/vision-upgrade` skills as a single Claude Code plugin. Restart open Claude Code sessions for the MCP server to attach.
### Claude Code — `mcp add` (server only)
```bash
# All projects on this machine (recommended)
claude mcp add --scope user vision-squeezer -- npx -y vision-squeezer
# This project only (Claude Code's default)
claude mcp add vision-squeezer -- npx -y vision-squeezer
# Share with the team via .mcp.json in the repo
claude mcp add --scope project vision-squeezer -- npx -y vision-squeezer
```
### Claude Desktop
Add to `~/.config/claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"vision-squeezer": {
"command": "npx",
"args": ["-y", "vision-squeezer"]
}
}
}
```
### Cursor
```bash
cursor --add-mcp '{"name":"vision-squeezer","type":"stdio","command":"npx","args":["-y","vision-squeezer"]}'
```
Or add to `.cursor/mcp.json`:
```json
{
"servers": {
"vision-squeezer": {
"type": "stdio",
"command": "npx",
"args": ["-y", "vision-squeezer"]
}
}
}
```
<details>
<summary><b>Click here to view installation instructions for 10+ other IDEs and Agents (VS Code, JetBrains, Windsurf, Zed, etc.)</b></summary>
### VS Code Copilot
Add to `.vscode/mcp.json`:
```json
{
"servers": {
"vision-squeezer": {
"type": "stdio",
"command": "npx",
"args": ["-y", "vision-squeezer"]
}
}
}
```
### JetBrains (IntelliJ, WebStorm, PyCharm)
Open **Tools → GitHub Copilot → Model Context Protocol (MCP) → Configure**, then add:
```json
{
"servers": {
"vision-squeezer": {
"command": "npx",
"args": ["-y", "vision-squeezer"]
}
}
}
```
### Windsurf
Add to `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"vision-squeezer": {
"command": "npx",
"args": ["-y", "vision-squeezer"]
}
}
}
```
### Gemini CLI
```bash
gemini mcp add --scope user vision-squeezer -- npx -y vision-squeezer
```
Or add to `~/.gemini/settings.json` (user) / `.gemini/settings.json` (project):
```json
{
"mcpServers": {
"vision-squeezer": {
"command": "npx",
"args": ["-y", "vision-squeezer"]
}
}
}
```
### Codex CLI
```bash
codex mcp add vision-squeezer -- npx -y vision-squeezer
```
Or add to `~/.codex/config.toml`:
```toml
[mcp_servers.vision-squeezer]
command = "npx"
args = ["-y", "vision-squeezer"]
```
### Qwen Code
```bash
qwen mcp add vision-squeezer -- npx -y vision-squeezer
```
### OpenCode
`opencode mcp add` is interactive-only, so add directly to `~/.config/opencode/opencode.json` (global) or `opencode.json` in the repo root (project):
```json
{
"mcp": {
"vision-squeezer": {
"type": "local",
"command": ["npx", "-y", "vision-squeezer"],
"enabled": true
}
}
}
```
### Kimi CLI
```bash
kimi mcp add vision-squeezer -- npx -y vision-squeezer
```
### Zed
Add to `~/.config/zed/settings.json`:
```json
{
"context_servers": {
"vision-squeezer": {
"command": "npx",
"args": ["-y", "vision-squeezer"]
}
}
}
```
### Kiro
Add to `.kiro/settings/mcp.json` (workspace) or `~/.kiro/settings/mcp.json` (global):
```json
{
"mcpServers": {
"vision-squeezer": {
"command": "npx",
"args": ["-y", "vision-squeezer"]
}
}
}
```
### Antigravity
MCP-only, no hooks needed. Configure via the Antigravity MCP settings:
```json
{
"mcpServers": {
"vision-squeezer": {
"command": "npx",
"args": ["-y", "vision-squeezer"]
}
}
}
```
</details>
### Manual install (Rust binary)
```bash
# From crates.io
cargo install vision-squeezer
# Or from source
git clone https://github.com/eralpozcan/vision-squeezer && cd vision-squeezer
make install # builds → ~/.local/bin/
```
Then use the binary path directly in any config above instead of `npx`:
```json
{ "command": "vision-squeezer-mcp" }
```
> **Tip:** Run `npx -y vision-squeezer --setup` to print ready configs with auto-detected paths.
---
## CLI Usage
```bash
vision-squeezer path/to/image.jpg \
--mode auto|ocr|standard \ # default: auto (detects text/grayscale)
--format jpeg|webp|avif \ # default: jpeg
--quality 85 \ # output quality 1-100 (default: 75)
--tile-size 256 \ # patch size in px (default: 512)
--no-crop \ # disable padding removal
--smart-crop \ # edge-energy crop (vs corner-tolerance)
--auto-quality 0.95 \ # binary-search quality to hit SSIM target
--bg-tolerance 25 \ # background detection 0-255 (default: 15)
--model claude|gpt4o|gpt5|gemini|llama|qwen|deepseek \ # model-aware resizing
--max-tiles 20 \ # hard cap on tile count
--json \ # machine-readable JSON output
--dry-run # run pipeline, skip disk write
```
### Batch mode
Pass a directory instead of a file:
```bash
vision-squeezer ./screenshots --recursive --output-dir ./optimized
vision-squeezer ./screenshots --recursive --json > report.json
```
---
<details>
<summary><b>The Math: How Vision Models Bill You in 2026</b></summary>
If you send raw images to an LLM, you are leaking tokens. Modern vision models do not care about your file size (MB/KB); they only care about **pixel dimensions**, but each provider calculates costs completely differently. `vision-squeezer` simulates these algorithms to find the mathematical minimum size that drops your token usage without losing visual context.
### 1. Claude (Area-Based)
As of 2026 (Claude 3.5 / 4.5+), Anthropic uses an **area-based formula**: `Tokens ≈ (Width × Height) / 750`.
Every single pixel of solid background or padding costs you tokens.
* **The Fix:** `vision-squeezer` aggressively crops padding (removing solid color borders). A 1025×1025 screenshot shrinks just enough to drop from 1,400 tokens to 1,024 tokens (**%26 savings**).
### 2. GPT-4.5 / GPT-4o (Tiling & Short-side Scaling)
OpenAI scales your image to fit inside a 2048px box, then rescales it again so the **shortest side is exactly 768px**. Finally, it chops the image into a grid of **512×512 tiles**. Each tile costs 170 tokens.
* **The Fix:** If your image's shortest side ends up being 769px, OpenAI will spill over into an entirely new row of 512×512 tiles, doubling your cost. `vision-squeezer` simulates this exact math and snaps the image down by a few pixels so it fits perfectly into the minimum number of tiles.
### 3. Gemini 2.0 / 3.0 (Massive Tiles)
Gemini uses a massive **768×768 tile** system (if the image is > 384px). Each tile is a flat 258 tokens.
* **The Fix:** An 800×600 image will trigger a 2×1 tile grid (1,032 tokens). `vision-squeezer` snaps it down slightly to fit exactly inside a 768×768 box, dropping the cost to 258 tokens (**%75 savings**).
### 4. Llama 3.2 / 3.3 Vision (560px Tiles)
Meta's Mllama vision tiles images on a **560×560** grid, capped at 4 tiles (~1601 tokens each).
* **The Fix:** A 2400×1670 screenshot trimmed to 2400×1200 drops from a 2×2 to a 2×1 canvas: **6,404 → 3,202 tokens (−50%)**. (Llama 4 uses a different vision encoder and is not modeled.)
### 5. Qwen2-VL / 2.5-VL / 3-VL (28px Patch Grid)
Alibaba's Qwen-VL uses a **28px effective grid** (14px patch × 2×2 merge); `tokens = (W/28)·(H/28)` bounded to `[4, 16384]`.
* **The Fix:** The patch is small, so area is the lever — a 1024×1024 image with its border stripped to 896×896 drops **1,369 → 1,024 tokens (−25%)**.
### 6. DeepSeek-VL2 (384px Anyres Tiles)
SigLIP-384 + 2× pixel-shuffle gives 196 tokens/tile on a `(m·384, n·384)` canvas (`m·n ≤ 9`).
* **The Fix:** An 800×768 image snapped to 768×768 drops from 3×2 to 2×2 tiles: **1,415 → 1,023 tokens (−28%)**. (Open weights — the win is local-inference context, not API billing.)
> Full provider math, exact formulas, and cited sources: **[visionsqueezer.com/providers](https://visionsqueezer.com/providers/claude)**
</details>
## Pipeline
```
Input image
→ crop_padding remove solid-color borders
→ calculate_optimal_dims snap to tile boundary (always down)
→ [enWhat people ask about vision-squeezer
What is eralpozcan/vision-squeezer?
+
eralpozcan/vision-squeezer is plugins for the Claude AI ecosystem. LLM-native image optimization MCP server It has 4 GitHub stars and was last updated today.
How do I install vision-squeezer?
+
You can install vision-squeezer by cloning the repository (https://github.com/eralpozcan/vision-squeezer) or following the README instructions on GitHub. ClaudeWave also provides quick install blocks on this page.
Is eralpozcan/vision-squeezer safe to use?
+
Our security agent has analyzed eralpozcan/vision-squeezer and assigned a Trust Score of 62/100 (tier: OK). See the full breakdown of passed checks and flags on this page.
Who maintains eralpozcan/vision-squeezer?
+
eralpozcan/vision-squeezer is maintained by eralpozcan. The last recorded GitHub activity is from today, with 0 open issues.
Are there alternatives to vision-squeezer?
+
Yes. On ClaudeWave you can browse similar plugins at /categories/plugins, sorted by popularity or recent activity.
Deploy vision-squeezer to your cloud
Ship this repo to production in minutes. Each platform spins up its own environment with editable env vars.
Maintain this repo? Add a badge to your README
Drop the badge into your GitHub README to show it's tracked on ClaudeWave. Each badge links back to this page and reflects the live Trust Score.
[](https://claudewave.com/repo/eralpozcan-vision-squeezer)<a href="https://claudewave.com/repo/eralpozcan-vision-squeezer"><img src="https://claudewave.com/api/badge/eralpozcan-vision-squeezer" alt="Featured on ClaudeWave: eralpozcan/vision-squeezer" width="320" height="64" /></a>More Plugins
Claude Code is an agentic coding tool that lives in your terminal, understands your codebase, and helps you code faster by executing routine tasks, explaining complex code, and handling git workflows - all through natural language commands.
Academic Research Skills for Claude Code: research → write → review → revise → finalize
A Claude Code plugin that shows what's happening - context usage, active tools, running agents, and todo progress
Create beautiful slides on the web using a coding agent's frontend skills
PM Skills Marketplace: 100+ agentic skills, commands, and plugins — from discovery to strategy, execution, launch, and growth.
A 100% free modern JS SaaS boilerplate (React, NodeJS, Prisma). Full-featured: Auth (email, google, github, slack, MS), Email sending, Background jobs, Landing page, Payments (Stripe, Polar.sh), Shadcn UI, S3 file upload. AI-ready with tailored AGENTS.md, skills, and Claude Code plugin. One cmd deploy. Powered by Wasp full-stack framework.