EnigmaPython MCP

Um servidor MCP (Model Context Protocol) que traz as capacidades da biblioteca enigmapython para LLMs, permitindo que eles criptografem e descriptografem mensagens usando emuladores historicamente precisos da máquina Enigma

Documentação

Servidor EnigmaPython MCP

Um servidor MCP (Model Context Protocol) que traz as capacidades da biblioteca enigmapython para LLMs, permitindo que eles criptografem e descriptografem mensagens usando emuladores de máquina Enigma historicamente precisos.

Claude Desktop Integration

PyPI version Python Versions Downloads License: MIT Publish Status

Este servidor MCP está listado no Glama.ai com esta pontuação

enigma-python-mcp MCP server

Recursos

  • Expõe todos os modelos conhecidos de máquina Enigma: Enigma M3, Enigma M4, Enigma I, Enigma K, Enigma Z, Enigma D, Enigma T e outros.
  • Configuração Dinâmica: LLMs podem especificar rotores, posições iniciais, configurações de anel, refletores e pares de plugboard para a criptografia.
  • Modo Local e de Rede: Suporta tanto o transporte stdio para integrações MCP locais (como Claude Desktop) quanto o transporte sse para expor as ferramentas pela rede.
  • Dockerizado: Portabilidade e execução fáceis em diferentes plataformas.

Ferramentas Expostas

encrypt_message

Criptografe ou descriptografe uma mensagem usando uma máquina Enigma configurada.

Argumentos:

  • machine_model (str): Nome do modelo. Suportados: 'M3', 'M4', 'I', 'I_Norway', 'I_Sondermaschine', 'K', 'K_Swiss', 'D', 'Z', 'B_A133', 'T'.
  • message (str): O texto simples ou cifrado a ser processado.
  • rotors (list[object]): Lista de objetos RotorConfig. Cada objeto especifica rotor_type (str), ring_setting (int, padrão=0) e initial_position (int | str, padrão=0). IMPORTANTE: A lista DEVE ser ordenada exatamente como: [Fastest/Rightmost, Middle, Slowest/Leftmost, Greek (if M4)].
  • reflector (object): Um objeto ReflectorConfig especificando reflector_type (str) e, opcionalmente, ring_setting (int) e initial_position (int | str) para refletores rotativos.
  • plugboard_pairs (dict, opcional): Dicionário mapeando conexões do plugboard (ex.: {"A": "B", "C": "D"}).

Executando o Servidor

Usando Python

Requer Python 3.11+.

  1. Instale o pacote do PyPI:

    pip install enigmapython-mcp
    

    (Alternativamente, você pode simplesmente executar uvx enigmapython-mcp se tiver o uv instalado!)

  2. Execute via stdio (para cliente MCP local):

    enigmapython-mcp --transport stdio
    
  3. Execute via SSE (expondo pela rede):

    enigmapython-mcp --transport sse --host 0.0.0.0 --port 8000
    

Usando Docker

  1. Construa o contêiner:

    docker build -t enigmapython-mcp .
    
  2. Execute via stdio (padrão):

    docker run -i enigmapython-mcp
    
  3. Execute via SSE:

    docker run -p 8000:8000 enigmapython-mcp --transport sse --host 0.0.0.0 --port 8000
    

Configuração do Cliente (Claude Desktop)

Fornecemos dois pacotes distintos de mcpb para instalação com 1 clique no Claude Desktop. Basta baixar o pacote de sua preferência na página de Releases do GitHub e arrastá-lo e soltá-lo no menu Extensões do Claude Desktop:

  1. enigmapython-mcp-docker.mcpb: Extremamente leve, depende do seu daemon Docker local para executar o servidor em um contêiner isolado. (Recomendado)
  2. enigmapython-mcp-python.mcpb: Contém o código-fonte Python completo. O Claude Desktop criará nativamente um ambiente virtual e executará o servidor sem precisar do Docker.

Se você preferir configuração manual via claude_desktop_config.json, use as configurações abaixo:

Usando Python (uvx recomendado)

{
  "mcpServers": {
    "enigma": {
      "command": "uvx",
      "args": ["enigmapython-mcp", "--transport", "stdio"]
    }
  }
}

Usando Docker

(Nota: Certifique-se de ter construído a imagem Docker primeiro: docker build -t enigmapython-mcp .)

{
  "mcpServers": {
    "enigma": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "enigmapython-mcp"]
    }
  }
}

Configuração do Cliente (OpenCode)

Para usar este servidor com OpenCode, adicione o seguinte ao seu ~/.config/opencode/opencode.json (global) ou opencode.json (nível de projeto) na seção mcp:

Usando Python (uvx recomendado)

{
  "mcp": {
    "enigma": {
      "type": "local",
      "command": [
        "uvx",
        "enigmapython-mcp",
        "--transport",
        "stdio"
      ],
      "enabled": true
    }
  }
}

Usando Docker

(Nota: Certifique-se de ter construído a imagem Docker primeiro: docker build -t enigmapython-mcp .)

{
  "mcp": {
    "enigma": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "-i",
        "--rm",
        "enigmapython-mcp"
      ],
      "enabled": true
    }
  }
}

Exemplos de Prompts

Depois que o servidor estiver configurado, você pode testá-lo enviando os seguintes prompts ao seu LLM:

Exemplo 1: Criptografia Básica (Enigma M3)

"Preciso criptografar a mensagem 'TOPSECRET' usando uma Enigma M3. Os rotores, ordenados do mais rápido ao mais lento, são III, II e I. Todos começando na posição 0 com configurações de anel em 0. Use o refletor 'UKWB' e sem plugboard. Qual é o texto cifrado?"

Exemplo 2: Descriptografia Histórica (Enigma I)

"Descriptografe esta mensagem Enigma I de 1930. O texto cifrado é 'GCDSEAHUGWTQGRK'. As configurações da máquina, estritamente ordenadas do Mais Rápido ao Mais Lento, são: Rotores III, I e II. Suas respectivas configurações de anel são 21, 12 e 23. Suas posições iniciais são 11, 1 e 0. O refletor é 'UKWA'. As trocas do plugboard são: A/M, F/I, N/V, P/S, T/U, W/Z."

Exemplo 3: Configuração Complexa M4

"Use a Enigma M4 para criptografar a mensagem 'DIVE DIVE DIVE'. A máquina usa o refletor 'UKWBThin'. Os rotores, explicitamente ordenados como [Mais Rápido, Médio, Mais Lento, Grego], são: VIII (pos 2), III (pos 6), IV (pos 12) e Gamma (pos 21). Todas as configurações de anel são 0. Por favor, processe isso."

Testes

Uma suíte de testes abrangente está incluída em tests/test_server.py. Ela testa a reversibilidade de criptografia e descriptografia para todos os 10 modelos Enigma suportados.

Para executar os testes:

# Activate your virtual environment first
source .venv/bin/activate

pip install pytest
export PYTHONPATH=$PYTHONPATH:$(pwd)/src/enigmapython_mcp && pytest tests/* 

Testando o servidor SSE interativamente

Como o Model Context Protocol exige um handshake de inicialização com estado antes que qualquer ferramenta possa ser chamada, testar manualmente o endpoint SSE com curl é bastante complexo.

A maneira mais fácil e oficialmente recomendada de testar o servidor é usando o MCP Inspector:

  1. Certifique-se de que seu servidor esteja rodando no modo SSE:
    uv run enigmapython-mcp --transport sse --host 0.0.0.0 --port 8000
    
  2. Em um segundo terminal, inicie o Inspector:
    npx @modelcontextprotocol/inspector
    
  3. Uma interface web será aberta no seu navegador (geralmente em http://localhost:5173).
  4. Altere o Tipo de Transporte para SSE.
  5. Digite http://localhost:8000/sse como URL e clique em Conectar.
  6. Agora você pode configurar e executar visualmente a ferramenta encrypt_message!