is-it-ai-mcp
is-it-ai-mcp
MCP-сервер, который читает C2PA Content Credential, встроенное в изображение, и сообщает, что файл заявляет о своём происхождении, а также проверяет, подтверждается ли это заявление байтами, которые находятся перед вами.
📖 Документация: mcp.johannsenlum.com/is-it-ai · руководство по установке · справочник инструментов
🔍 Попробуйте без установки: ai.johannsenlum.com/is-it-ai выполняет те же проверки в вашем браузере, на вашей машине, без загрузки файлов.
Что он делает
Он открывает изображение, ищет встроенный манифест C2PA (Content Credential), и если он существует, сообщает две отдельные вещи: что манифест заявляет о том, как было создано изображение, и соответствует ли криптографическая подпись этого манифеста текущим байтам файла. Он не смотрит на пиксели и не угадывает. Если манифеста нет, или манифест существует, но подпись нарушена, он прямо говорит об этом, а не выдумывает ответ.
См. docs/pass-fail.md о том, почему «подпись проверена» и «заявление истинно» — это два разных вопроса, и почему этот сервер отвечает только на первый.
Related MCP server: image-forensics-mcp
Установка
Запуск сервера
is-it-ai-mcp опубликован на PyPI. Запустите его с помощью:
uvx is-it-ai-mcpУстановка из исходников (для контрибьюторов / невыпущенная ветка main). Не является
частью обычного пути установки выше, нужна только если вы хотите последний невыпущенный код
вместо опубликованного релиза PyPI:
uvx --from git+https://github.com/JohannsenLum/is-it-ai-mcp is-it-ai-mcpИли запустите из локального клона:
git clone https://github.com/JohannsenLum/is-it-ai-mcp
cd is-it-ai-mcp
uv syncНе требуется ни аккаунт, ни API-ключ, ни переменная окружения. Сервер читает только локальные файлы, на которые вы указываете.
Claude Code и 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
Скопируйте этот JSON через Настройки → Разработчик → Изменить конфигурацию:
{
"mcpServers": {
"is-it-ai": {
"command": "uvx",
"args": ["is-it-ai-mcp"]
}
}
}Инструменты
check_image_provenance
Дайте ему путь к одному файлу изображения на диске. Он возвращает:
verdict: одно из трёх состояний ниже (AI_DECLARED,NO_AI_DECLARED,UNKNOWN).reason: конкретное основание для этого вердикта, напримерno-credential,credential-invalid,ai-source-type,capture-source-typeилиcredential-silent.what_this_does_not_mean: пояснение на простом языке, прикреплённое к каждому вердикту, чтобы результат нельзя было незаметно превратить в более сильное утверждение, чем позволяют доказательства.signature: сыроеvalidation_state, логическоеverifiedи любыеfailure_codes, которые выдала проверка подписи.declared: что заявляет манифест, если он существует.signer,claim_generatorиsigned_at— это свободный текст, взятый прямо из файла, поэтому каждый из них защищён в соответствии с разделом «Безопасность» ниже, прежде чем попасть к вам.source_types(URI IPTC digital-source-type, взятые из закрытого словаря) иwatermark_declared(логическое значение) не могут содержать текст, созданный злоумышленником, поэтому оба возвращаются как есть и никогда не заключаются в ограждение.
Файл, который не удаётся прочитать (неверный путь, неподдерживаемый формат), возвращается
как отдельный результат ошибки, а не как поддельный UNKNOWN. Нужен реальный путь на диске,
а не сами байты изображения. См. Примечание о путях к файлам.
scan_directory
Дайте ему папку. Он обходит дерево, прогоняет каждое найденное изображение через ту же проверку и возвращает агрегированные счётчики по вердиктам и по подписантам, а также ограниченную выборку файлов с учётными данными, а не строку на каждый файл. Это инструмент, который воспроизводит собственный обход 401 изображения этого проекта (см. ниже) для любой указанной вами директории.
Три вердикта
Вердикт | Значение | Доступен только когда |
| Манифест файла утверждает ИИ или алгоритмическую генерацию | Манифест присутствует, его подпись проверяется, и он содержит IPTC digital-source-type, помечающий участие ИИ |
| Манифест файла утверждает реальную съёмку | Манифест присутствует, его подпись проверяется, и он содержит IPTC digital-source-type, помечающий съёмку (камера, плёнка, печать, незначительные правки) |
| Ничего полезного не установлено | Всё остальное, включая отсутствие манифеста, нарушенную подпись или манифест, который никогда не записывал тип источника |
UNKNOWN — это значение по умолчанию и самый частый ответ. При сканировании 401 реального
изображения только 14 вообще содержали Content Credential, и все они были от OpenAI:
около 96,5% не имели никаких учётных данных. Ожидайте UNKNOWN почти для всего, что вы
проверяете. Это не ошибка сервера, это текущее состояние происхождения изображений в реальном мире.
Что это не может вам сказать
Он не определяет ИИ по пикселям. Здесь вообще нет анализа изображений, нет модели, смотрящей на картинку. Каждый вердикт исходит из криптографически подписанной текстовой записи или из её отсутствия.
Отсутствие учётных данных не является доказательством чего-либо. Немаркированное ИИ-изображение и немаркированная фотография неразличимы для этого инструмента. Снимок экрана, повторное сохранение или пропускание изображения через почти любой редактор удаляет учётные данные, независимо от того, создано ли оно ИИ.
UNKNOWNозначает «не сохранилось никакой пригодной записи», а не «ИИ не участвовал».Действительная подпись не делает утверждения подписанта истинными. Подпись доказывает, что манифест не был изменён с момента подписания, и подтверждает, кто его подписал. Она ничего не доказывает о том, сказал ли подписант правду. Любой может сгенерировать собственный сертификат, подписать свой файл и заявить любое происхождение, какое пожелает: подпись будет проверена идеально, но утверждение останется ложным. Проверка касается печати, а не письма. См. docs/pass-fail.md.
Зачем он существует
Когда вы прикрепляете изображение к модели, оно декодируется в пиксели и перекодируется до того, как модель его увидит. Метаданные контейнера, включая любой манифест C2PA, никогда не достигают модели: модель видит массив RGB, и ничего больше. Без инструмента она вообще не может прочитать манифест и вместо этого склонна угадывать, создано ли изображение ИИ, по визуальным артефактам. Опубликованные бенчмарки оценивают такое угадывание примерно в 18–31% точности, что немногим лучше случайности. Этот сервер существует, чтобы модель читала фактическую подписанную запись на диске, а не сопоставляла шаблоны артефактов JPEG-сжатия.
Безопасность
Каждая человекочитаемая строка, возвращаемая этим сервером, происходит изнутри проверяемого файла: имя подписанта, строка claim-generator и любой свободный текст причины или метки. Этот текст был написан тем, кто создал файл, а не вами, и он попадает в то же окно контекста, что и ваши собственные инструкции. Поле с меткой «signer» несёт оттенок проверенного авторитета, но подпись покрывает байты актива, а не честность любой строки внутри манифеста. Любой может подписать свой файл собственным сертификатом и написать в нём всё, что угодно.
Прежде чем любая такая строка будет возвращена, она очищается от управляющих символов, ограничивается по длине и оборачивается в ограждённую границу, которая явно помечает её как недоверенные данные, а не инструкции, со случайным nonce, который автор файла не мог предугадать. Структурные значения, сам вердикт, состояние проверки и URI IPTC source-type взяты из закрытых словарей, которыми управляет этот сервер, и никогда не ограждаются, поскольку они не могут содержать текст, созданный злоумышленником.
См. src/is_it_ai_mcp/safety.py для реализации
и полной модели угроз в docstring модуля.
Примечание о путях к файлам
Этот инструмент принимает путь к файлу, а не байты изображения. В Claude Code изображение, которое вы вставляете в разговор, сначала записывается на диск, поэтому его путь доступен, и всё работает. В других клиентах вставленное или прикреплённое изображение может существовать только как встроенные данные без пути в файловой системе, доступного серверу; в этом случае инструменту нечего открывать. Если проверка возвращает ошибку «файл не найден», сначала сохраните изображение на диск и укажите инструменту этот путь.
Разработка
uv sync --extra dev
uv run pytest -v--extra dev важен: без него pytest-asyncio (необходимый для asyncio_mode = "auto"
в pyproject.toml) не устанавливается, и pytest выводит предупреждение "Unknown config option:
asyncio_mode" при каждом запуске.
Тесты запускаются на фикстурах в fixtures/: реальное подписанное изображение,
а также изменённые и лишённые подписи варианты с вручную проверенными ожидаемыми результатами.
См. fixtures/GROUND-TRUTH.md о том, как каждый вариант был
создан и что он должен доказать.
Лицензия
MIT © 2026 Johannsen Lum.
Используйте, изменяйте, распространяйте, стройте на нём коммерческие продукты: единственное условие — сохранить уведомление об авторских правах и текст лицензии. Он предоставляется без каких-либо гарантий.
Вклад принимается на условиях той же лицензии.
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