mcp-vision-image-fadhli
This MCP server analyzes images using vision models routed through 9router (schema descriptions still reference Gemini).
analyze_image — Analyze/describe an image from a local file path (
image_path) or a URL (image_url), with an optional custompromptand optionalmodeloverride (default per schema:gemini-3.7-flash, overridable viaGEMINI_MODEL).get_usage_stats — Show API usage statistics: calls today, total, remaining daily limit, per-model breakdown, and daily history.
Auto-selects a working vision model, with optional overrides via
ROUTER9_MODEL,VISION_PROVIDERS,ROUTER9_BASE_URL, token/timeout env vars.Requires a running 9router instance and
ROUTER9_API_KEY; a single 9router key covers the whole model pool.Note: the README also describes a
discover_vision_modelstool for scanning the machine for working vision models, but it is not present in this server schema.
Allows analyzing images using Google's Gemini API, supporting local file paths or URLs (PNG/JPG/WebP/GIF/BMP/SVG) and retrieving usage statistics.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-vision-image-fadhli Can you analyze this image and describe what's in it? https://example.com/cat.jpg"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-vision-image-fadhli
MCP server untuk analisis gambar lewat 9router — dengan penemuan otomatis model vision yang benar-benar bekerja di mesin Anda.
Tidak perlu daftar model hardcoded. Tidak perlu API key Google. Tidak ada quota free tier.
Kenapa perlu penemuan otomatis?
9router mengekspos ratusan model, dan katalognya punya flag capabilities.vision. Flag itu tidak bisa dipercaya.
Diukur pada satu mesin (24 Sep 2026):
Model di katalog | 824 |
Mengklaim | 468 |
Benar-benar bisa memproses gambar | segelintir |
Sampel 50 model yang mengklaim vision: hanya 4 yang menjawab benar. Sisanya gagal karena:
401/403— API key provider mati402— kredit habis5xx— error upstream (dibungkus 9router jadi 503)200dengancontentkosong — paling menyesatkan: HTTP sukses, tapi tidak ada jawabantimeout
Yang penting: penyebabnya hampir selalu provider, bukan model. Dan karena setiap instalasi 9router punya provider & akun yang berbeda, daftar model yang bekerja tidak bisa di-hardcode — harus ditemukan di mesin tempat server berjalan.
Related MCP server: vision-mcp
Cara kerja
analyze_image
│
├─ 1. Coba model eksplisit / env ROUTER9_MODEL / cache / default
│ └─ berhasil? selesai. (kasus umum, cepat)
│
└─ 2. Semua gagal → pindai mesin ini
├─ sapu SATU model per provider (gelombang 1)
├─ provider hidup? perdalam di gelombang berikutnya
├─ uji pakai gambar 3 kotak, nilai jawabannya
└─ simpan hasil → pakai model tercepatMengapa menyapu provider dulu: kegagalan itu soal provider. Menguji 5 model dari provider yang sama itu sia-sia — kalau providernya mati, kelimanya mati. Gelombang 1 mengambil satu model per provider, jadi berapa pun jumlah providernya, sekali jalan langsung ketahuan mana yang hidup.
Model dinilai secara objektif. Gambar uji berisi 3 kotak (merah, hijau, biru). Model yang benar-benar bisa melihat akan menyebut ketiga warna; model yang mengarang tidak akan cocok.
Instalasi
npm install -g mcp-vision-image-fadhliButuh 9router berjalan di mesin yang sama (default http://127.0.0.1:20128).
Konfigurasi MCP
Tambahkan ke ~/.claude.json (atau config MCP klien Anda):
{
"mcpServers": {
"mcp-vision-image": {
"type": "stdio",
"command": "node",
"args": ["C:\\path\\ke\\mcp-vision-image\\src\\server.js"],
"env": {
"ROUTER9_API_KEY": "sk-xxxxxxxxxxxx"
}
}
}
}API key diambil dari dashboard 9router → Endpoint & Key.
Cuma satu key yang dibutuhkan. Key 9router membuka seluruh pool model Anda — tidak perlu key Antigravity, B.AI, atau provider lain satu per satu.
Variabel lingkungan
Variabel | Default | Keterangan |
| — | Wajib. API key 9router. |
|
| Provider yang dipakai, dipisah koma. Isi |
|
| Alamat 9router. |
| — | Paksa satu model, lewati pemilihan otomatis. |
|
| Batas token jawaban. |
|
| Timeout per model. |
Provider yang dipakai
Default ag,oc — Antigravity dan OpenCode Free. Keduanya dipakai karena
terukur, bukan dipilih sembarangan:
Provider | Model | Verifikasi |
|
| ✅ 4,1 dtk |
|
| ✅ 3,8–10 dtk |
Semua diuji 25 Sep 2026 lewat endpoint Anthropic 9router memakai gambar uji (3 kotak merah/hijau/biru) — keempatnya menjawab dengan benar.
Kenapa dibatasi: memindai semua provider menemukan 4 model bekerja dari 30
diuji; dibatasi ke ag,oc menemukan 8 dari 8. Provider lain menghabiskan
waktu dan kuota untuk model yang kreditnya kosong atau key-nya mati.
Ganti lewat env kalau instalasi Anda berbeda:
"env": {
"ROUTER9_API_KEY": "sk-xxxxxxxxxxxx",
"VISION_PROVIDERS": "ag" // Antigravity saja
}Provider yang diminta tapi tidak ada di katalog dilaporkan sebagai peringatan — tidak diabaikan diam-diam.
Catatan: kenapa endpoint Anthropic
Modul ini memanggil /v1/messages, bukan /v1/chat/completions. Dua alasan,
keduanya terukur:
Input gambar di endpoint OpenAI mengembalikan
contentkosong — HTTP-nya 200, tapi jawabannya tidak ada, untuk semua model yang diuji.Provider
ockena gate tambahan di endpoint OpenAI. OpenCode Free hanya menjawab kalau tool quartet{bash, glob, grep, read}ikut dikirim; tanpanya, HTTP 200 dengancontentkosong. Endpoint Anthropic tidak menerapkan gate itu, jadiocbekerja tanpa trik tambahan.
Bentuk responsnya juga tidak seragam — Antigravity menjawab SSE, oc
menjawab JSON. Parser menangani keduanya.
Tools
analyze_image
Menganalisis gambar dari file lokal atau URL.
Parameter | Keterangan |
| Path file lokal |
| URL gambar (diunduh otomatis) |
| Instruksi spesifik (opsional) |
| Paksa model tertentu (opsional) |
Jawabannya menyertakan model mana yang dipakai dan berapa lama.
discover_vision_models
Memindai 9router untuk menemukan model yang benar-benar bisa memproses gambar di mesin ini. Hasilnya di-cache dan dipakai otomatis oleh analyze_image.
Jalankan ulang kalau daftar terasa basi (provider berganti, kredit berubah).
Parameter | Default | Keterangan |
| 5 | Berhenti setelah sekian model bekerja |
| 48 | Batas atas model diuji (pengaman kuota) |
| false | Ikut uji yang tidak mengklaim vision — untuk memeriksa akurasi metadata |
Batas selalu dilaporkan. Kalau ada model yang tidak diuji karena kena batas, jumlahnya disebutkan — supaya hasilnya tidak terbaca "menyeluruh" padahal tidak.
get_usage_stats
Statistik pemakaian per model, riwayat harian, status backend, dan ringkasan hasil pemindaian terakhir.
Catatan teknis
Kenapa endpoint Anthropic, bukan OpenAI?
Untuk input gambar, /v1/chat/completions di 9router mengembalikan HTTP 200 dengan content kosong — untuk semua model yang diuji. /v1/messages dengan model yang sama menjawab benar. Jadi ini soal jalur translasi gambar di 9router, bukan soal model.
Endpoint | Hasil untuk input gambar |
| HTTP 200, |
| jawaban benar |
Blok thinking dibuang
Model thinking mengirim rantai penalaran di thinking_delta (sering dalam bahasa Mandarin). Parser hanya mengambil text_delta, dan max_tokens dijaga cukup tinggi supaya jatah tidak habis di thinking lalu menyisakan content kosong.
Test
ROUTER9_API_KEY=xxx npm test13 pemeriksaan, termasuk memanggil tool lewat protokol MCP sungguhan (stdio) dan memverifikasi jawaban terhadap gambar uji secara objektif.
Untuk memindai lebih luas di luar test:
node test/probe-vision.js --per-provider 2 # sampel stratifikasi
node test/probe-vision.js --all # sapu bersih
node test/probe-vision.js --only ag/gemini-3.8-flash-high
node test/probe-vision.js --control # uji akurasi metadata katalogLisensi
MIT
Available Tools
2 toolsanalyze_imageA
Menganalisis dan mendeskripsikan gambar (file path lokal atau URL) menggunakan Gemini Vision AI.
Inputs: model, prompt, image_url, image_path.
get_usage_statsA
Menampilkan statistik pemakaian API Gemini Vision (jumlah panggilan hari ini, total, sisa limit harian, per model, dan riwayat harian).
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: analyze_image handles image analysis, while get_usage_stats reports API usage metrics. No overlap or ambiguity exists.
Both tools follow a consistent verb_noun pattern: analyze_image and get_usage_stats. The naming is uniform and predictable.
With only 2 tools, the server feels thin but is reasonable for a focused single-purpose image analysis service. It sits at the borderline of being too minimal.
For its stated purpose of image analysis via Gemini Vision, the server covers the core operation (analyze_image) and adds useful monitoring (get_usage_stats). No obvious missing operations within this narrow domain.
Related MCP Connectors
MCP server exposing the YourImageShare upload API (upload/list/delete) as tools for AI agents.
MCP server for Qwen Image 3 AI image generation
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
Focused MCP server for OpenAI image/audio generation (v2.0.0). Wraps endpoints via HAPI CLI.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server for image generation using the Gemini API.1160 npm2MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that analyzes images using OpenRouter's Gemini Flash model, supporting local file paths and URLs.30 npmMIT
- AlicenseAqualityDmaintenanceMCP server for generating images using Gemini, supporting multiple aspect ratios and both AI Studio and Vertex AI backends.1MIT
- AlicenseAqualityDmaintenanceMCP server for generating and editing images using Google Gemini API. Supports text-to-image generation, image editing, and image description.326 npmMIT