is-it-ai-mcp
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.
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-mcpAus 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-mcpOder aus einem lokalen Klon ausführen:
git clone https://github.com/JohannsenLum/is-it-ai-mcp
cd is-it-ai-mcp
uv syncEs 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 Beispielno-credential,credential-invalid,ai-source-type,capture-source-typeodercredential-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 rohevalidation_state, einverified-Boolean und allefailure_codes, die die Signaturprüfung erzeugt hat.declared: was das Manifest behauptet, wenn eines vorhanden ist.signer,claim_generatorundsigned_atsind 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) undwatermark_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 |
| 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 |
| 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) |
| 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.
UNKNOWNbedeutet „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.
Maintenance
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for reading C2PA content provenance manifests from media files, enabling natural language queries about AI-generated content, signatures, and provenance.2MIT
- AlicenseNot gradedqualityDmaintenanceAn 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
- AlicenseNot gradedqualityCmaintenanceMCP server for querying versioned C2PA specification knowledge graphs, enabling AI agents to browse entity definitions, validation rules, and version diffs via natural language.3Apache 2.0
- AlicenseNot gradedqualityDmaintenanceA 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
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.
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/JohannsenLum/is-it-ai-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server