mcp-six-eyes
mcp-six-eyes
MCP-Server, der rein textbasierten KI-Agenten die Fähigkeit gibt, Bilder zu verstehen, einschließlich Multi-Image-Chats wie „Bild 1 und 2 beachten“ oder „diese Screenshots vergleichen“.
Reine Textmodelle können keine Pixel sehen. Dieser Server schließt diese Lücke: Agenten rufen Vision-Tools auf, der Server kommuniziert mit einer multimodalen API, und der Agent erhält reinen Text zurück.
Agent (text-only)
│ tool call: analyze / compare / refer / ocr / …
▼
mcp-six-eyes (this server)
│ 1..N images: path | URL | base64 (labels: 1, 2, before, …)
▼
Vision API (OpenAI / Anthropic / Gemini / OpenRouter / custom)
│
▼
Plain-text description / OCR / comparison / structured extract
│
▼
Agent continues reasoning with textWarum das funktioniert
MCP stellt Tools bereit, die ein Agent aufrufen kann. Der Agent benötigt nie native Bilderkennung:
Benutzer lädt ein oder mehrere Bilder hoch oder verweist darauf
Agent ruft ein Vision-Tool mit diesen Quellen (und optionalen Beschriftungen) auf
Server lädt das/die Bilder und sendet sie an ein multimodales Modell
Server gibt nur Text mit stabilen Bildbeschriftungen zurück
Der reine Textagent verwendet diesen Text wie jedes andere Tool-Ergebnis
Related MCP server: MCP Vision Server
Tools
Tool | Zweck |
| Allgemeine Fragen und Antworten zu einem oder mehreren Bildern |
| Detaillierte Szenen-/UI-Beschreibung (toller „Kontext-Dump“ für Agenten) |
| Sichtbaren Text extrahieren (bei mehreren Bildern pro Bildabschnitte) |
| 2+ Bilder vergleichen (vorher/nachher, A/B, Varianten) |
| Fragen beantworten, die sich auf „Bild 1“, „beide Abbildungen“ usw. beziehen |
| UI/UX-Screenshot-Überprüfung und mehrstufige Abläufe |
| Diagramme, Plots, Tabellen, Dashboards |
| Erklärungen zu Architektur / Flussdiagrammen / ERD / Whiteboards |
| Strukturiertes JSON aus Formularen, Belegen, Tabellen, Etiketten |
| Konfigurierten Anbieter/das Modell und Limits anzeigen |
Bildeingaben
Jedes Bildtool akzeptiert:
Einzeln:
image: lokaler Pfad,file://,http(s), Daten-URL oder base64Mehrere:
images: Array von Quellen oder Objekten{ source, label?, mimeType? }Sie können beides übergeben; sie werden zusammengeführt
Beschriftungen sind standardmäßig "1", "2", … sodass Agentenaufforderungen wie „Bild 1 und 2 vergleichen“ sauber zugeordnet werden. Benutzerdefinierte Beschriftungen funktionieren ebenfalls ("before", "after", "fig-a").
# one image
analyze_image({ image: "./shot.png", prompt: "What failed?" })
# multi-image with default labels 1..n
compare_images({
images: ["./a.png", "./b.png"],
prompt: "What changed in the error state?"
})
# multi-image with explicit labels (best for long threads)
refer_images({
images: [
{ source: "./login.png", label: "1" },
{ source: "./dashboard.png", label: "2" }
],
prompt: "Using image 1 and image 2, is the user authenticated?"
})Unterstützte Quellformate:
lokaler Dateipfad (
/path/to/image.pngoderC:\path\to\image.png)file://URIhttp(s)URLdata URL (
data:image/png;base64,...)rohes base64 (nach Möglichkeit
mimeTypeangeben)
Voraussetzungen
Node.js 20+
Ein für Vision geeigneter API-Schlüssel (OpenAI, Anthropic, Google, OpenRouter oder ein beliebiger OpenAI-kompatibler Endpunkt)
Installation
Veröffentlicht auf npm als mcp-six-eyes.
npx -y mcp-six-eyesOder global / als Projektabhängigkeit installieren:
npm install -g mcp-six-eyes
# or
npm install mcp-six-eyesDie meisten binden es in einen MCP-Client ein, anstatt es von Hand auszuführen. Beispielkonfiguration für Claude Desktop / Cursor:
{
"mcpServers": {
"mcp-six-eyes": {
"command": "npx",
"args": ["-y", "mcp-six-eyes"],
"env": {
"VISION_PROVIDER": "openai",
"OPENAI_API_KEY": "sk-..."
}
}
}
}Warum npx hier beliebt ist:
keine globale Installation
Client startet den Server bei Bedarf
-yüberspringt die Installationsabfrage beim ersten Startnpm speichert das Paket für spätere Starts zwischen
Lokale Entwicklung
npm install
npm run buildDann entweder:
{
"mcpServers": {
"mcp-six-eyes": {
"command": "npx",
"args": ["-y", "."],
"env": {
"VISION_PROVIDER": "openai",
"OPENAI_API_KEY": "sk-..."
}
}
}
}oder weisen Sie Node auf den erstellten Einstiegspunkt:
{
"mcpServers": {
"mcp-six-eyes": {
"command": "node",
"args": ["./build/index.js"],
"env": {
"VISION_PROVIDER": "openai",
"OPENAI_API_KEY": "sk-..."
}
}
}
}Umgebung
Legen Sie Anbieterschlüssel im env-Block des MCP-Clients (empfohlen) oder in einer lokalen .env für die Entwicklung fest.
Minimale OpenAI-Einrichtung:
VISION_PROVIDER=openai
OPENAI_API_KEY=sk-...Optionales Modell / Limits:
VISION_MODEL=gpt-4o-mini
VISION_MAX_IMAGES=10
VISION_MAX_IMAGE_BYTES=20971520
VISION_CACHE_MAX_ENTRIES=200Der Server spricht MCP über stdio. Schreiben Sie keine Anwendungsprotokolle nach stdout.
Caching
Vision-Aufrufe werden nach Inhalt im Speicher zwischengespeichert. Der Cache-Schlüssel hasht die tatsächlichen Bildbytes plus Aufgabe, Eingabeaufforderung, Beschriftungen und Token-Obergrenze (nicht die Quellzeichenfolge), sodass ein Modell, das describe_image (oder ein anderes Vision-Tool) für dasselbe Bild erneut aufruft, die vorherige Antwort sofort mit Cached: yes erhält, ohne die Vision-API erneut zu belasten.
Standard:
VISION_CACHE_MAX_ENTRIES=200(begrenzt, älteste zuerst entfernt)Setzen Sie
VISION_CACHE_MAX_ENTRIES=0, um es zu deaktivierenDie erste Antwort gewinnt für einen bestimmten Schlüssel; eine geänderte Datei oder URL erzeugt einen neuen Schlüssel
Fehlgeschlagene und Fallback-Antworten werden nie zwischengespeichert
Der Cache lebt nur für die Prozesslebensdauer (keine Festplattenpersistenz)
Client-Hinweise
Claude Desktop
Konfigurationsdatei:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%AppData%\Claude\claude_desktop_config.json
Verwenden Sie den npx-Block aus Schnellstart mit npx.
Cursor
Fügen Sie denselben Serverblock zu .cursor/mcp.json (Projekt) oder Ihrer globalen Cursor-MCP-Konfiguration hinzu.
Andere stdio-MCP-Hosts
Jeder Host, der Folgendes starten kann:
npx -y mcp-six-eyesund Umgebungsvariablen übergeben kann, funktioniert.
Anbieter
Anbieter |
| Env-Variable für Schlüssel | Standardmodell |
OpenAI |
|
|
|
Anthropic |
|
|
|
Google Gemini |
|
|
|
OpenRouter |
|
|
|
Benutzerdefiniert (OpenAI-kompatibel) |
|
|
|
Optionaler Fallback:
VISION_FALLBACK_PROVIDER=anthropic
ANTHROPIC_API_KEY=sk-ant-...Beispiel für die Agentennutzung
Einzelner Screenshot
User: What's wrong in this screenshot? ./screenshots/build-error.png
Agent → ocr_image({ image: "./screenshots/build-error.png" })
Agent → analyze_image({
image: "./screenshots/build-error.png",
prompt: "Explain the error and suggest a fix"
})
Agent → answers in plain textMehrere Bilder: verweisen / vergleichen
User: I uploaded two shots. Compare image 1 and 2. Did the fix work?
Agent → compare_images({
images: [
{ source: "./before.png", label: "1" },
{ source: "./after.png", label: "2" }
],
prompt: "Did the red error banner disappear after the fix?"
})User: Refer image 1 and image 2. Which CTA is primary?
Agent → refer_images({
images: [
{ source: "./landing-a.png", label: "1" },
{ source: "./landing-b.png", label: "2" }
],
prompt: "Which image has the stronger primary CTA and why?"
})UI-Ablauf, Diagramm, Schaubild, strukturierte Extraktion
inspect_ui({
images: ["./step1.png", "./step2.png", "./step3.png"],
prompt: "Describe the checkout flow and any friction"
})
read_chart({
image: "https://example.com/revenue.png",
prompt: "Summarize the trend and call out outliers"
})
explain_diagram({
image: "./architecture.png",
prompt: "List services and data flow"
})
extract_from_images({
image: "./receipt.jpg",
schema: "{\"merchant\":string,\"date\":string,\"total\":number,\"items\":[{\"name\":string,\"price\":number}]}"
})Architektur
src/
index.ts MCP server + tools
config.ts env/provider config
image.ts path/URL/base64 loader + multi-image labels
prompts.ts task prompts (analyze/describe/ocr/compare/...)
providers/
index.ts provider router + fallback
openai-compatible.ts OpenAI / OpenRouter / custom (multi-image)
anthropic.ts Claude vision (multi-image)
google.ts Gemini vision (multi-image)
types.ts shared contracts
test/ unit tests (node:test, mocked providers)
assets/
logo.png project logoDesignhinweise
Tools, keine Ressourcen: Bildverständnis ist eine Aktion mit Nebenwirkungen (API-Kosten), daher wird sie als Tools bereitgestellt.
Nur-Text-Ausgabe: Hostmodelle ohne Vision benötigen nur Textinhaltsblöcke.
Beschriftete Mehrfachbilder: Agenten in Chat-Oberflächen sprechen von „Bild 1/2“; Beschriftungen halten diese Verankerung stabil.
Aufgabenspezifische Tools: Vergleichen / Verweisen / UI / Diagramm / Schaubild / Extrahieren schlagen ein Mega-Prompt für die Tool-Auswahl.
Stdio-Transport: einfachste lokale Integration für Desktop-Agenten.
Kein stdout-Logging: stdout ist für JSON-RPC reserviert; Diagnosen gehen an stderr.
Anbieterabstraktion: Backends wechseln, ohne die Tool-Namen zu ändern, die der Agent lernt.
Entwicklung
npm install
npm test
npm startSkript | Zweck |
| TypeScript nach |
| Nur Typprüfung |
| Build + vollständige Unit-Test-Suite |
| Tests gegen aktuelles |
| Schnelles Smoke-Skript für den Bildlader |
| MCP-Server auf stdio ausführen |
Debuggen mit dem MCP Inspector:
npx @modelcontextprotocol/inspector node ./build/index.jsSiehe CONTRIBUTING.md für PR- und Codierungsrichtlinien.
Links
npm: mcp-six-eyes
Betreuer: rimunace
Release-Workflow
Pfad des Betreuers nach lokalen Änderungen:
# one-time
npm login
# bump version + CHANGELOG, then ship
npm test
npm publish --access publicOptionaler Helfer (Tests, dann npm publish):
npm run releaseSicherheit
API-Schlüssel bleiben in Umgebungsvariablen / Client-Konfiguration, niemals in Tool-Antworten
Remote-URL-Abrufe sind explizite Tool-Eingaben; behandeln Sie nicht vertrauenswürdige URLs vorsichtig
Große Bilder werden über
VISION_MAX_IMAGE_BYTESabgelehnt (Standard 20 MB)Die Bildanzahl pro Aufruf ist über
VISION_MAX_IMAGESbegrenzt (Standard 10)Der Antwortcache hält nur Inhalts-Hashes und Ergebnistext im Speicher; nichts wird auf der Festplatte gespeichert
Vollständige Richtlinie: SECURITY.md.
Mitwirken
Issues und Pull-Requests sind willkommen. Bitte führen Sie vor dem Öffnen einer PR npm test aus und lesen Sie CONTRIBUTING.md.
Lizenz
Maintenance
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server that analyzes images with Google's Gemini vision models, allowing agents to describe or ask questions about images without bloating context.1MIT
- FlicenseNot gradedqualityBmaintenanceA versatile MCP server that adds vision capabilities (image analysis, OCR, image/video generation) to AI models lacking native vision, with support for multiple providers and automatic task routing.1
- AlicenseNot gradedqualityCmaintenanceMCP server for analyzing images using multiple vision LLM providers (OpenCode, OpenAI, Anthropic, Google, and custom OpenAI-compatible endpoints). Provides tools to analyze single or multiple images, list providers, and test vision capabilities.MIT
- AlicenseAqualityCmaintenanceEnables non-vision LLMs to analyze images via any OpenAI-compatible vision API. Hardened against truncation, empty responses, and timeouts for reliable analysis.1177MIT
Related MCP Connectors
OCR, transcription, file extraction, and image generation for AI agents via MCP.
MCP server for Flux AI image generation
MCP server for NanoBanana AI image generation and editing
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/RimunAce/mcp-six-eyes'
If you have feedback or need assistance with the MCP directory API, please join our Discord server