Skip to main content
Glama

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 text

Warum das funktioniert

MCP stellt Tools bereit, die ein Agent aufrufen kann. Der Agent benötigt nie native Bilderkennung:

  1. Benutzer lädt ein oder mehrere Bilder hoch oder verweist darauf

  2. Agent ruft ein Vision-Tool mit diesen Quellen (und optionalen Beschriftungen) auf

  3. Server lädt das/die Bilder und sendet sie an ein multimodales Modell

  4. Server gibt nur Text mit stabilen Bildbeschriftungen zurück

  5. Der reine Textagent verwendet diesen Text wie jedes andere Tool-Ergebnis

Related MCP server: MCP Vision Server

Tools

Tool

Zweck

analyze_image

Allgemeine Fragen und Antworten zu einem oder mehreren Bildern

describe_image

Detaillierte Szenen-/UI-Beschreibung (toller „Kontext-Dump“ für Agenten)

ocr_image

Sichtbaren Text extrahieren (bei mehreren Bildern pro Bildabschnitte)

compare_images

2+ Bilder vergleichen (vorher/nachher, A/B, Varianten)

refer_images

Fragen beantworten, die sich auf „Bild 1“, „beide Abbildungen“ usw. beziehen

inspect_ui

UI/UX-Screenshot-Überprüfung und mehrstufige Abläufe

read_chart

Diagramme, Plots, Tabellen, Dashboards

explain_diagram

Erklärungen zu Architektur / Flussdiagrammen / ERD / Whiteboards

extract_from_images

Strukturiertes JSON aus Formularen, Belegen, Tabellen, Etiketten

vision_status

Konfigurierten Anbieter/das Modell und Limits anzeigen

Bildeingaben

Jedes Bildtool akzeptiert:

  • Einzeln: image: lokaler Pfad, file://, http(s), Daten-URL oder base64

  • Mehrere: 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.png oder C:\path\to\image.png)

  • file:// URI

  • http(s) URL

  • data URL (data:image/png;base64,...)

  • rohes base64 (nach Möglichkeit mimeType angeben)

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-eyes

Oder global / als Projektabhängigkeit installieren:

npm install -g mcp-six-eyes
# or
npm install mcp-six-eyes

Die 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 Start

  • npm speichert das Paket für spätere Starts zwischen

Lokale Entwicklung

npm install
npm run build

Dann 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=200

Der 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 deaktivieren

  • Die 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.json

  • Windows: %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-eyes

und Umgebungsvariablen übergeben kann, funktioniert.

Anbieter

Anbieter

VISION_PROVIDER

Env-Variable für Schlüssel

Standardmodell

OpenAI

openai

OPENAI_API_KEY

gpt-4o-mini

Anthropic

anthropic

ANTHROPIC_API_KEY

claude-sonnet-4-5

Google Gemini

google

GOOGLE_API_KEY

gemini-2.0-flash

OpenRouter

openrouter

OPENROUTER_API_KEY

openai/gpt-4o-mini

Benutzerdefiniert (OpenAI-kompatibel)

custom

VISION_API_KEY + VISION_BASE_URL

VISION_MODEL festlegen

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 text

Mehrere 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 logo

Designhinweise

  • 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 start

Skript

Zweck

npm run build

TypeScript nach build/ kompilieren

npm run typecheck

Nur Typprüfung

npm test

Build + vollständige Unit-Test-Suite

npm run test:unit

Tests gegen aktuelles build/ ausführen

npm run smoke

Schnelles Smoke-Skript für den Bildlader

npm start

MCP-Server auf stdio ausführen

Debuggen mit dem MCP Inspector:

npx @modelcontextprotocol/inspector node ./build/index.js

Siehe CONTRIBUTING.md für PR- und Codierungsrichtlinien.

Release-Workflow

Pfad des Betreuers nach lokalen Änderungen:

# one-time
npm login

# bump version + CHANGELOG, then ship
npm test
npm publish --access public

Optionaler Helfer (Tests, dann npm publish):

npm run release

Sicherheit

  • 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_BYTES abgelehnt (Standard 20 MB)

  • Die Bildanzahl pro Aufruf ist über VISION_MAX_IMAGES begrenzt (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

MIT

Install Server
A
license - permissive license
A
quality
A
maintenance

Maintenance

Maintainers
Response time
1wRelease cycle
2Releases (12mo)
Commit activity

Related MCP Servers

View all related MCP servers

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

View all MCP Connectors

Latest Blog Posts

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