EnigmaPython MCP
Un servidor MCP (Model Context Protocol) que lleva las capacidades de la biblioteca enigmapython a los LLMs, permitiéndoles cifrar y descifrar mensajes utilizando emuladores históricamente precisos de la máquina Enigma.
Documentación
Servidor EnigmaPython MCP
Un servidor MCP (Model Context Protocol) que aporta las capacidades de la librería enigmapython a los LLMs, permitiéndoles cifrar y descifrar mensajes utilizando emuladores de máquinas Enigma históricamente precisos.

Este servidor MCP está listado en Glama.ai con esta puntuación
Características
- Expone todos los modelos conocidos de máquinas Enigma: Enigma M3, Enigma M4, Enigma I, Enigma K, Enigma Z, Enigma D, Enigma T, y más.
- Configuración dinámica: Los LLMs pueden especificar rotores, posiciones iniciales, ajustes de anillo, reflectores y pares de panel de conexiones para el cifrado.
- Modo local y de red: Soporta tanto el transporte
stdiopara integraciones MCP locales (como Claude Desktop) como el transportessepara exponer las herramientas a través de una red. - Dockerizado: Fácil portabilidad y ejecución en múltiples plataformas.
Herramientas expuestas
encrypt_message
Cifra o descifra un mensaje utilizando una máquina Enigma configurada.
Argumentos:
machine_model(str): Nombre del modelo. Soportados:'M3','M4','I','I_Norway','I_Sondermaschine','K','K_Swiss','D','Z','B_A133','T'.message(str): El texto plano o cifrado a procesar.rotors(list[object]): Lista de objetosRotorConfig. Cada objeto especificarotor_type(str),ring_setting(int, default=0) yinitial_position(int | str, default=0). IMPORTANTE: La lista DEBE estar ordenada exactamente como:[Fastest/Rightmost, Middle, Slowest/Leftmost, Greek (if M4)].reflector(object): Un objetoReflectorConfigque especificareflector_type(str) y, opcionalmente,ring_setting(int) yinitial_position(int | str) para reflectores rotatorios.plugboard_pairs(dict, opcional): Diccionario que mapea conexiones del panel de conexiones (p. ej.,{"A": "B", "C": "D"}).
Ejecución del servidor
Usando Python
Requiere Python 3.11+.
-
Instala el paquete desde PyPI:
pip install enigmapython-mcp(Alternativamente, puedes simplemente ejecutar
uvx enigmapython-mcpsi tienesuvinstalado) -
Ejecuta vía stdio (para clientes MCP locales):
enigmapython-mcp --transport stdio -
Ejecuta vía SSE (exponiendo a través de la red):
enigmapython-mcp --transport sse --host 0.0.0.0 --port 8000
Usando Docker
-
Construye el contenedor:
docker build -t enigmapython-mcp . -
Ejecuta vía stdio (por defecto):
docker run -i enigmapython-mcp -
Ejecuta vía SSE:
docker run -p 8000:8000 enigmapython-mcp --transport sse --host 0.0.0.0 --port 8000
Configuración del cliente (Claude Desktop)
Proporcionamos dos paquetes mcpb distintos para instalación con un clic en Claude Desktop. Simplemente descarga el paquete de tu preferencia desde la página de GitHub Releases y arrástralo y suéltalo en el menú de Extensiones de Claude Desktop:
enigmapython-mcp-docker.mcpb: Extremadamente ligero, depende de tu demonio Docker local para ejecutar el servidor en un contenedor aislado. (Recomendado)enigmapython-mcp-python.mcpb: Contiene el código fuente completo de Python. Claude Desktop construirá nativamente un entorno virtual y ejecutará el servidor sin necesidad de Docker.
Si prefieres la configuración manual vía claude_desktop_config.json, usa la siguiente configuración:
Usando Python (uvx recomendado)
{
"mcpServers": {
"enigma": {
"command": "uvx",
"args": ["enigmapython-mcp", "--transport", "stdio"]
}
}
}
Usando Docker
(Nota: Asegúrate de haber construido la imagen Docker primero: docker build -t enigmapython-mcp .)
{
"mcpServers": {
"enigma": {
"command": "docker",
"args": ["run", "-i", "--rm", "enigmapython-mcp"]
}
}
}
Configuración del cliente (OpenCode)
Para usar este servidor con OpenCode, añade lo siguiente a tu ~/.config/opencode/opencode.json (global) o opencode.json (a nivel de proyecto) bajo la sección mcp:
Usando Python (uvx recomendado)
{
"mcp": {
"enigma": {
"type": "local",
"command": [
"uvx",
"enigmapython-mcp",
"--transport",
"stdio"
],
"enabled": true
}
}
}
Usando Docker
(Nota: Asegúrate de haber construido la imagen Docker primero: docker build -t enigmapython-mcp .)
{
"mcp": {
"enigma": {
"type": "local",
"command": [
"docker",
"run",
"-i",
"--rm",
"enigmapython-mcp"
],
"enabled": true
}
}
}
Ejemplos de indicaciones
Una vez que el servidor esté configurado, puedes probarlo enviando las siguientes indicaciones a tu LLM:
Ejemplo 1: Cifrado básico (Enigma M3)
"Necesito cifrar el mensaje 'TOPSECRET' usando una Enigma M3. Los rotores, ordenados de más rápido a más lento, son III, II y I. Todos comenzando en la posición 0 con ajustes de anillo en 0. Usa el reflector 'UKWB' y sin panel de conexiones. ¿Cuál es el texto cifrado?"
Ejemplo 2: Descifrado histórico (Enigma I)
"Descifra este mensaje de Enigma I de 1930. El texto cifrado es 'GCDSEAHUGWTQGRK'. La configuración de la máquina, estrictamente ordenada de más rápido a más lento, es: Rotores III, I y II. Sus ajustes de anillo respectivos son 21, 12 y 23. Sus posiciones iniciales son 11, 1 y 0. El reflector es 'UKWA'. Los intercambios del panel de conexiones son: A/M, F/I, N/V, P/S, T/U, W/Z."
Ejemplo 3: Configuración compleja M4
"Usa la Enigma M4 para cifrar el mensaje 'DIVE DIVE DIVE'. La máquina usa el reflector 'UKWBThin'. Los rotores, explícitamente ordenados como [Más rápido, Medio, Más lento, Griego], son: VIII (pos 2), III (pos 6), IV (pos 12) y Gamma (pos 21). Todos los ajustes de anillo son 0. Por favor, procesa esto."
Pruebas
Se incluye un conjunto completo de pruebas en tests/test_server.py. Prueba la reversibilidad del cifrado y descifrado para los 10 modelos Enigma soportados.
Para ejecutar las pruebas:
# Activate your virtual environment first
source .venv/bin/activate
pip install pytest
export PYTHONPATH=$PYTHONPATH:$(pwd)/src/enigmapython_mcp && pytest tests/*
Pruebas interactivas del servidor SSE
Debido a que el Model Context Protocol requiere un protocolo de inicialización con estado antes de que se pueda llamar a cualquier herramienta, probar manualmente el endpoint SSE con curl es bastante complejo.
La forma más fácil y oficialmente recomendada de probar el servidor es usando el MCP Inspector:
- Asegúrate de que tu servidor esté ejecutándose en modo SSE:
uv run enigmapython-mcp --transport sse --host 0.0.0.0 --port 8000 - En una segunda terminal, lanza el Inspector:
npx @modelcontextprotocol/inspector - Se abrirá una interfaz web en tu navegador (normalmente en
http://localhost:5173). - Cambia el Tipo de transporte a SSE.
- Introduce
http://localhost:8000/ssecomo URL y haz clic en Conectar. - Ahora puedes configurar y ejecutar visualmente la herramienta
encrypt_message.