Skip to main content
Glama

is-it-ai-mcp

Ein MCP-Server, der die in einem Bild eingebettete C2PA Content Credential liest und meldet, was die Datei über ihre eigene Herkunft angibt, plus ob diese Angabe noch gegen die vorliegenden Bytes verifiziert.

📖 Dokumentation: mcp.johannsenlum.com/is-it-ai · Installationsanleitung · Tool-Referenz

🔍 Teste es, ohne etwas zu installieren: ai.johannsenlum.com/is-it-ai führt dieselben Prüfungen in deinem Browser, auf deinem Rechner, ohne dass etwas hochgeladen wird.

PyPI Python 3.11+ License: MIT

Was es tut

Es öffnet ein Bild, sucht nach einem eingebetteten C2PA-Manifest (einer Content Credential) und meldet, falls eines vorhanden ist, zwei getrennte Dinge: was das Manifest darüber behauptet, wie das Bild erstellt wurde, und ob die kryptografische Signatur über dieses Manifest noch zu den aktuellen Bytes der Datei passt. Es betrachtet keine Pixel und es rät nicht. Wenn kein Manifest vorhanden ist, oder das Manifest vorhanden ist, aber die Signatur defekt ist, sagt es das klar, statt sich eine Antwort auszudenken.

Siehe docs/pass-fail.md für die Erklärung, warum „die Signatur wurde verifiziert“ und „die Behauptung ist wahr“ zwei verschiedene Fragen sind und warum dieser Server immer nur die erste beantwortet.

Related MCP server: image-forensics-mcp

Installation

Server ausführen

is-it-ai-mcp ist auf PyPI veröffentlicht. Führe es aus mit:

uvx is-it-ai-mcp

Aus dem Quellcode installieren (Mitwirkende / unveröffentlichtes main). Nicht Teil des normalen Installationswegs oben, nur nötig, wenn du den neuesten unveröffentlichten Code anstelle der veröffentlichten PyPI-Version haben möchtest:

uvx --from git+https://github.com/JohannsenLum/is-it-ai-mcp is-it-ai-mcp

Oder aus einem lokalen Klon ausführen:

git clone https://github.com/JohannsenLum/is-it-ai-mcp
cd is-it-ai-mcp
uv sync

Es ist kein Konto, kein API-Schlüssel und keine Umgebungsvariable erforderlich. Der Server liest nur lokale Dateien, auf die du ihn zeigst.

Claude Code und Claude Desktop

{
  "mcpServers": {
    "is-it-ai": {
      "command": "uvx",
      "args": ["is-it-ai-mcp"]
    }
  }
}

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

Füge diese JSON-Datei über Einstellungen → Entwickler → Konfiguration bearbeiten ein:

{
  "mcpServers": {
    "is-it-ai": {
      "command": "uvx",
      "args": ["is-it-ai-mcp"]
    }
  }
}

Werkzeuge

check_image_provenance

Gib den Pfad zu einer Bilddatei auf der Festplatte an. Sie gibt Folgendes zurück:

  • verdict: einer der drei unten aufgeführten Zustände (AI_DECLARED, NO_AI_DECLARED, UNKNOWN).

  • reason: die spezifische Grundlage für dieses Urteil, zum Beispiel no-credential, credential-invalid, ai-source-type, capture-source-type oder credential-silent.

  • what_this_does_not_mean: ein in einfacher Sprache gehaltener Hinweis, der an jedes Urteil angehängt wird, damit das Ergebnis nicht stillschweigend zu einer stärkeren Behauptung aufgewertet werden kann, als es die Belege stützen.

  • signature: der rohe validation_state, ein verified-Boolean und alle failure_codes, die die Signaturprüfung erzeugt hat.

  • declared: was das Manifest behauptet, wenn eines vorhanden ist. signer, claim_generator und signed_at sind Freitexte, die direkt aus der Datei gezogen werden; jeder wird daher gemäß dem Abschnitt Sicherheit unten abgesichert, bevor er dich erreicht. source_types (IPTC-Digital-Source-Type-URIs aus einem geschlossenen Vokabular) und watermark_declared (ein Boolean) können keinen von Angreifern verfassten Text enthalten und werden daher unverändert und ohne Begrenzung zurückgegeben.

Eine Datei, die nicht gelesen werden kann (falscher Pfad, nicht unterstütztes Format), wird als eigenes Fehlerergebnis zurückgegeben und nicht als vorgetäuschtes UNKNOWN. Es wird ein echter Pfad auf der Festplatte benötigt, nicht die Bildbytes selbst. Siehe Hinweis zu Dateipfaden.

scan_directory

Gib ihr einen Ordner. Sie durchläuft den Verzeichnisbaum, führt bei jedem gefundenen Bild dieselbe Prüfung aus und gibt aggregierte Zählungen nach Urteil und nach Signierer zurück, dazu eine begrenzte Stichprobe der Dateien, die eine Content Credential trugen, statt einer Zeile pro Datei. Dies ist das Werkzeug, das den eigenen 401-Bilder-Durchlauf dieses Projekts (siehe unten) für jedes beliebige Verzeichnis reproduziert, auf das du es richtest.

Die drei Urteile

Urteil

Bedeutung

Nur erreichbar, wenn

AI_DECLARED

Das Manifest der Datei behauptet KI- oder algorithmische Erzeugung

Ein Manifest ist vorhanden, seine Signatur verifiziert, und es trägt einen IPTC-Digital-Source-Type, der KI-Beteiligung kennzeichnet

NO_AI_DECLARED

Das Manifest der Datei behauptet eine Aufnahme aus der realen Welt

Ein Manifest ist vorhanden, seine Signatur verifiziert, und es trägt einen IPTC-Digital-Source-Type, der eine Aufnahme kennzeichnet (Kamera, Film, Druck, geringfügige Bearbeitungen)

UNKNOWN

Es wurde nichts Verwertbares festgestellt

Alles andere, einschließlich fehlendem Manifest, defekter Signatur oder einem Manifest, das nie einen Source-Type aufgezeichnet hat

UNKNOWN ist die Standardantwort und mit Abstand die häufigste. Bei einem Scan von 401 echten Bildern trugen nur 14 überhaupt eine Content Credential, und jede davon stammte von OpenAI: etwa 96.5% hatten keinerlei Credential. Erwarte UNKNOWN bei fast allem, was du prüfst. Das ist kein Fehler dieses Servers, sondern der aktuelle Stand der Bildherkunft in freier Wildbahn.

Was es nicht sagen kann

  • Es erkennt KI nicht anhand von Pixeln. Hier findet überhaupt keine Bildanalyse statt, kein Modell betrachtet das Bild. Jedes Urteil stammt aus einem kryptografisch signierten Textdatensatz oder aus dessen Fehlen.

  • Eine fehlende Credential ist kein Beweis für irgendetwas. Ein nicht gekennzeichnetes KI-Bild und ein nicht gekennzeichnetes Foto sind für dieses Tool nicht unterscheidbar. Ein Screenshot, erneutes Speichern oder das Durchlaufen durch fast jeden Editor entfernt die Credential, ob KI-erstellt oder nicht. UNKNOWN bedeutet „kein verwertbarer Datensatz ist erhalten geblieben“, niemals „keine KI war beteiligt“.

  • Eine gültige Signatur macht die Behauptungen des Signierers nicht wahr. Die Signatur beweist, dass das Manifest seit der Unterzeichnung nicht verändert wurde, und bestätigt, wer es signiert hat. Sie beweist nichts darüber, ob der Signierer die Wahrheit gesagt hat. Jeder kann ein eigenes Zertifikat erzeugen, eine eigene Datei signieren und behaupten, was immer er möchte: Es wird einwandfrei verifizieren und trotzdem falsch sein. Bei der Verifizierung geht es um das Siegel, nicht um den Brief. Siehe docs/pass-fail.md.

Warum es das gibt

Wenn du ein Bild an ein Modell anhängst, wird das Bild in Pixel dekodiert und neu kodiert, bevor das Modell es überhaupt zu sehen bekommt. Container-Metadaten, einschließlich eines etwaigen C2PA-Manifests, erreichen das Modell nie: Das Modell sieht ein RGB-Array, nichts weiter. Ohne ein Tool kann es ein Manifest überhaupt nicht lesen und neigt stattdessen dazu, anhand visueller Artefakte zu raten, ob ein Bild KI-generiert ist. Veröffentlichte Benchmarks beziffern dieses Raten auf etwa 18 bis 31 % Genauigkeit, kaum besser als der Zufall. Dieser Server existiert, damit das Modell den tatsächlichen signierten Datensatz auf der Festplatte liest, statt auf JPEG-Kompressionsartefakte zu achten.

Sicherheit

Jede von diesem Server zurückgegebene, für Menschen lesbare Zeichenkette stammt aus der untersuchten Datei: Name des Signierers, Claim-Generator-Zeichenkette und jeder Freitext-Grund oder jede Freitext-Beschriftung. Dieser Text wurde von demjenigen geschrieben, der die Datei erzeugt hat, nicht von dir, und er landet im selben Kontextfenster wie deine eigenen Anweisungen. Ein Feld mit der Bezeichnung „signer“ trägt den Anschein verifizierter Autorität, aber die Signatur deckt die Bytes des Assets ab, nicht die Ehrlichkeit einer beliebigen Zeichenkette im Manifest. Jeder kann eine eigene Datei mit einem eigenen Zertifikat signieren und hineinschreiben, was immer er möchte.

Bevor eine solche Zeichenkette zurückgegeben wird, wird sie von Steuerzeichen bereinigt, in der Länge begrenzt und in eine Begrenzung eingefasst, die sie ausdrücklich als nicht vertrauenswürdige Daten und nicht als Anweisungen kennzeichnet, mit einer zufälligen Nonce, die der Autor der Datei nicht vorhersehen konnte. Strukturwerte, das Urteil selbst, der Validierungsstatus und die IPTC-Source-Type-URIs stammen aus geschlossenen Vokabularen, die dieser Server kontrolliert, und werden niemals eingefasst, da sie keinen von Angreifern verfassten Text enthalten können.

Siehe src/is_it_ai_mcp/safety.py für die Implementierung und das vollständige Bedrohungsmodell in ihrem Modul-Docstring.

Hinweis zu Dateipfaden

Dieses Tool erwartet einen Dateipfad, keine Bildbytes. In Claude Code wird ein Bild, das du in das Gespräch einfügst, zuerst auf die Festplatte geschrieben, sodass sein Pfad erreichbar ist und dies einfach funktioniert. In anderen Clients kann ein eingefügtes oder angehängtes Bild nur als Inline-Daten existieren, ohne einen Pfad im Dateisystem, den der Server erreichen kann; in diesem Fall gibt es für dieses Tool nichts zu öffnen. Wenn eine Prüfung die Datei nicht finden kann, speichere das Bild zuerst auf der Festplatte und richte das Tool auf diesen Pfad.

Entwicklung

uv sync --extra dev
uv run pytest -v

--extra dev ist wichtig: Ohne es wird pytest-asyncio (benötigt für asyncio_mode = "auto" in pyproject.toml) nicht installiert, und pytest gibt bei jedem Lauf eine Warnung „Unknown config option: asyncio_mode“ aus.

Die Tests laufen gegen die Fixtures in fixtures/: ein echtes signiertes Bild sowie manipulierte und bereinigte Varianten mit manuell verifizierten erwarteten Ergebnissen. Siehe fixtures/GROUND-TRUTH.md für die Erklärung, wie jedes erzeugt wurde und was jedes beweisen soll.

Lizenz

MIT © 2026 Johannsen Lum.

Nutze es, verändere es, verbreite es weiter, baue etwas Kommerzielles darauf auf: Die einzige Bedingung ist, dass du den Copyright-Hinweis und den Lizenztext beibehältst. Es wird ohne jegliche Gewährleistung bereitgestellt.

Beiträge werden unter derselben Lizenz angenommen.

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for reading C2PA content provenance manifests from media files, enabling natural language queries about AI-generated content, signatures, and provenance.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that enables AI assistants to analyze images for AI-generated content using noise maps, error level analysis, frequency analysis, spectral decay, color analysis, and metadata inspection.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A hosted remote MCP server for C2PA disclosure policy, enabling AI governance teams to check disclosure policies, validate C2PA status, issue AI media receipts, explain region rules, and export disclosure logs.
    MIT

View all related MCP servers

Related MCP Connectors

  • Remote MCP for C2PA intake verifier MCP, structured receipts, audit logs, and reviewer-ready evidenc

  • Remote MCP for C2PA disclosure policy MCP, structured receipts, audit logs, and reviewer-ready evide

  • Scans MCP servers for tool poisoning, prompt injection and supply chain risks.

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/JohannsenLum/is-it-ai-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server