is-it-ai-mcp
is-it-ai-mcp
Un servidor MCP que lee la Credencial de Contenido C2PA incrustada en una imagen e informa de lo que el archivo declara sobre su propio origen, además de si esa declaración sigue verificándose contra los bytes que tienes delante.
📖 Documentación: mcp.johannsenlum.com/is-it-ai · guía de instalación · referencia de herramientas
🔍 Pruébalo sin instalar nada: ai.johannsenlum.com/is-it-ai ejecuta las mismas comprobaciones en tu navegador, en tu máquina, sin subir nada.
Qué hace
Abre una imagen, busca un manifiesto C2PA incrustado (una Credencial de Contenido) y, si existe, informa de dos cosas por separado: lo que el manifiesto afirma sobre cómo se creó la imagen, y si la firma criptográfica sobre ese manifiesto sigue coincidiendo con los bytes actuales del archivo. No mira los píxeles y no adivina. Si no hay manifiesto, o el manifiesto existe pero la firma está rota, lo dice claramente en lugar de inventar una respuesta.
Consulta docs/pass-fail.md para entender por qué "la firma se verificó" y "la afirmación es verdadera" son dos preguntas distintas, y por qué este servidor solo responde a la primera.
Related MCP server: image-forensics-mcp
Instalación
Ejecutar el servidor
is-it-ai-mcp está publicado en PyPI. Ejecútalo con:
uvx is-it-ai-mcpInstalar desde el código fuente (contribuidores / main sin publicar). No forma parte de la
ruta de instalación normal anterior; solo se necesita si quieres el código más reciente sin
publicar en lugar de la versión publicada en PyPI:
uvx --from git+https://github.com/JohannsenLum/is-it-ai-mcp is-it-ai-mcpO ejecútalo desde un clon local:
git clone https://github.com/JohannsenLum/is-it-ai-mcp
cd is-it-ai-mcp
uv syncNo se requiere cuenta, clave de API ni variable de entorno. El servidor solo lee archivos locales a los que tú lo apuntes.
Claude Code y 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
Copia este JSON mediante Configuración → Desarrollador → Editar configuración:
{
"mcpServers": {
"is-it-ai": {
"command": "uvx",
"args": ["is-it-ai-mcp"]
}
}
}Herramientas
check_image_provenance
Dale la ruta a un archivo de imagen en el disco. Devuelve:
verdict: uno de los tres estados siguientes (AI_DECLARED,NO_AI_DECLARED,UNKNOWN).reason: la base específica de ese veredicto, por ejemplono-credential,credential-invalid,ai-source-type,capture-source-typeocredential-silent.what_this_does_not_mean: una advertencia en lenguaje sencillo adjunta a cada veredicto, para que el resultado no pueda convertirse silenciosamente en una afirmación más fuerte de lo que la evidencia respalda.signature: elvalidation_statebruto, un booleanoverifiedy cualquierfailure_codesque haya producido la comprobación de firma.declared: lo que el manifiesto afirma cuando existe.signer,claim_generatorysigned_atson texto libre extraído directamente del archivo, por lo que cada uno se protege según la sección de Seguridad siguiente antes de llegar a ti.source_types(URIs IPTC de tipo de fuente digital, extraídas de un vocabulario cerrado) ywatermark_declared(un booleano) no pueden contener texto escrito por un atacante, por lo que ambos se devuelven tal cual y nunca se delimitan.
Un archivo que no se puede leer (ruta incorrecta, formato no compatible) se devuelve como un
resultado de error distinto en lugar de un UNKNOWN falso. Necesita una ruta real en el disco,
no los bytes de la imagen. Consulta Nota sobre rutas de archivo.
scan_directory
Dale una carpeta. Recorre el árbol, ejecuta la misma comprobación en cada imagen que encuentre y devuelve recuentos agregados por veredicto y por firmante, además de una muestra limitada de los archivos que llevaban una credencial, en lugar de una línea por archivo. Esta es la herramienta que reproduce el propio barrido de 401 imágenes de este proyecto (ver más abajo) contra cualquier directorio al que la apuntes.
Los tres veredictos
Veredicto | Significa | Solo se alcanza cuando |
| El manifiesto del archivo afirma generación por IA o algorítmica | Hay un manifiesto presente, su firma se verifica y lleva un tipo de fuente digital IPTC que marca participación de IA |
| El manifiesto del archivo afirma una captura del mundo real | Hay un manifiesto presente, su firma se verifica y lleva un tipo de fuente digital IPTC que marca una captura (cámara, película, impresión, ediciones menores) |
| No se estableció nada útil | Todo lo demás, incluido la ausencia de manifiesto, una firma rota o un manifiesto que nunca registró un tipo de fuente |
UNKNOWN es el valor predeterminado y, con diferencia, la respuesta más común. En un
barrido de 401 imágenes reales, solo 14 llevaban una Credencial de Contenido, y todas ellas
eran de OpenAI: alrededor del 96,5% no tenía credencial alguna. Espera UNKNOWN en casi todo
lo que compruebes. Eso no es un error de este servidor, es el estado actual de la procedencia
de imágenes en el mundo real.
Lo que esto no puede decirte
No detecta IA a partir de los píxeles. Aquí no hay ningún análisis de imagen, ningún modelo que mire la foto. Cada veredicto proviene de un registro de texto firmado criptográficamente, o de la ausencia de uno.
La falta de una credencial no es evidencia de nada. Una imagen de IA sin marcar y una fotografía sin marcar son indistinguibles para esta herramienta. Hacer una captura de pantalla, volver a guardar o pasar una imagen por casi cualquier editor elimina la credencial, sea o no de IA.
UNKNOWNsignifica "no sobrevivió ningún registro útil", nunca "no hubo IA".Una firma válida no hace que las afirmaciones del firmante sean verdaderas. La firma demuestra que el manifiesto no ha sido alterado desde que se firmó y confirma quién lo firmó. No demuestra nada sobre si el firmante dijo la verdad. Cualquiera puede generar su propio certificado, firmar su propio archivo y afirmar el origen que quiera: se verificará perfectamente y seguirá siendo falso. La verificación trata sobre el sello, no sobre la carta. Consulta docs/pass-fail.md.
Por qué existe
Cuando adjuntas una imagen a un modelo, la imagen se decodifica a píxeles y se vuelve a codificar antes de que el modelo la vea. Los metadatos del contenedor, incluido cualquier manifiesto C2PA, nunca llegan al modelo: el modelo ve una matriz RGB, nada más. Sin una herramienta, no puede leer un manifiesto en absoluto, y tenderá a adivinar si una imagen es generada por IA a partir de artefactos visuales. Los puntos de referencia publicados sitúan esa suposición en aproximadamente un 18 a 31% de precisión, poco mejor que el azar. Este servidor existe para que el modelo lea el registro firmado real en el disco en lugar de hacer coincidencias de patrones con artefactos de compresión JPEG.
Seguridad
Cada cadena legible por humanos que devuelve este servidor se originó dentro del archivo que se inspecciona: nombre del firmante, cadena del generador de afirmaciones y cualquier razón o etiqueta de texto libre. Ese texto fue escrito por quien produjo el archivo, no por ti, y aterriza en la misma ventana de contexto que tus propias instrucciones. Un campo etiquetado como "firmante" transmite un aire de autoridad verificada, pero la firma cubre los bytes del activo, no la honestidad de ninguna cadena dentro del manifiesto. Cualquiera puede firmar su propio archivo con su propio certificado y escribir en él lo que quiera.
Antes de que se devuelva cualquier cadena de este tipo, se limpia de caracteres de control, se limita su longitud y se envuelve en un límite delimitado que la marca explícitamente como dato no confiable en lugar de instrucciones, con un nonce aleatorio que el autor del archivo no podría haber adivinado de antemano. Los valores estructurales, el veredicto en sí, el estado de validación y las URIs de tipo de fuente IPTC se extraen de vocabularios cerrados que este servidor controla y nunca se delimitan, ya que no pueden contener texto escrito por un atacante.
Consulta src/is_it_ai_mcp/safety.py para la implementación
y el modelo de amenazas completo en su docstring de módulo.
Nota sobre rutas de archivo
Esta herramienta toma una ruta de archivo, no bytes de imagen. En Claude Code, una imagen que pegas en la conversación se escribe primero en el disco, por lo que su ruta es accesible y esto simplemente funciona. En otros clientes, una imagen pegada o adjunta puede existir solo como datos en línea sin una ruta en el sistema de archivos que el servidor pueda alcanzar, en cuyo caso no hay nada que esta herramienta pueda abrir. Si una comprobación devuelve que no se puede encontrar el archivo, guarda la imagen en el disco primero y apunta la herramienta a esa ruta.
Desarrollo
uv sync --extra dev
uv run pytest -v--extra dev importa: sin él, pytest-asyncio (necesario para asyncio_mode = "auto"
en pyproject.toml) no se instala, y pytest imprime una advertencia "Unknown config option:
asyncio_mode" en cada ejecución.
Las pruebas se ejecutan contra los fixtures en fixtures/, una imagen firmada
real más variantes manipuladas y despojadas con resultados esperados verificados manualmente.
Consulta fixtures/GROUND-TRUTH.md para saber cómo se produjo
cada una y qué se espera que demuestre cada una.
Licencia
MIT © 2026 Johannsen Lum.
Úsalo, cámbialo, redistribúyelo, construye algo comercial con él: la única condición es que conserves el aviso de copyright y el texto de la licencia. Viene sin garantía de ningún tipo.
Las contribuciones se aceptan bajo la misma licencia.
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