Skip to main content

MCP server for historically accurate Enigma machine emulators

Project description

Enigma Python MCP Server

An MCP (Model Context Protocol) server that brings the capabilities of the enigmapython library to LLMs, allowing them to encrypt and decrypt messages using historically accurate Enigma machine emulators.

Claude Desktop Integration

PyPI version Python Versions Downloads License: MIT Publish Status

Features

  • Exposes all known Enigma machine models: Enigma M3, Enigma M4, Enigma I, Enigma K, Enigma Z, Enigma D, and more.
  • Dynamic Configuration: LLMs can specify rotors, initial positions, ring settings, reflectors, and plugboard pairs for the encryption.
  • Local and Network Mode: Supports both stdio transport for local MCP integrations (like Claude Desktop) and sse transport to expose the tools over a network.
  • Dockerized: Easy portability and execution across platforms.

Exposed Tools

encrypt_message

Encrypt or decrypt a message using a configured Enigma machine.

Arguments:

  • machine_model (str): Model name. Supported: 'M3', 'M4', 'I', 'I_Norway', 'I_Sondermaschine', 'K', 'K_Swiss', 'D', 'Z', 'B_A133'.
  • message (str): The plaintext or ciphertext to process.
  • rotors (list[object]): List of RotorConfig objects. Each object specifies rotor_type (str), ring_setting (int, default=0), and initial_position (int | str, default=0). IMPORTANT: The list MUST be ordered exactly as: [Fastest/Rightmost, Middle, Slowest/Leftmost, Greek (if M4)].
  • reflector (object): A ReflectorConfig object specifying reflector_type (str), and optionally ring_setting (int) and initial_position (int | str) for rotating reflectors.
  • plugboard_pairs (dict, optional): Dictionary mapping plugboard connections (e.g., {"A": "B", "C": "D"}).

Running the Server

Using Python

Requires Python 3.11+.

  1. Install the package from PyPI:

    pip install enigmapython-mcp
    

    (Alternatively, you can just run uvx enigmapython-mcp if you have uv installed!)

  2. Run via stdio (for local MCP client):

    enigmapython-mcp --transport stdio
    
  3. Run via SSE (exposing over network):

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

Using Docker

  1. Build the container:

    docker build -t enigmapython-mcp .
    
  2. Run via stdio (default):

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

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

Client Configuration (Claude Desktop)

We provide two distinct mcpb bundles for 1-click installation on Claude Desktop. Simply download your preferred bundle from the GitHub Releases page and drag-and-drop it into Claude Desktop's Extensions menu:

  1. enigmapython-mcp-docker.mcpb: Extremely lightweight, relies on your local Docker daemon to run the server in an isolated container. (Recommended)
  2. enigmapython-mcp-python.mcpb: Contains the full Python source. Claude Desktop will natively build a virtual environment and run the server without needing Docker.

If you prefer manual configuration via claude_desktop_config.json, use the settings below:

Using Python (uvx recommended)

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

Using Docker

(Note: Make sure you have built the Docker image first: docker build -t enigmapython-mcp .)

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

Client Configuration (OpenCode)

To use this server with OpenCode, add the following to your ~/.config/opencode/opencode.json (global) or opencode.json (project-level) under the mcp section:

Using Python (uvx recommended)

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

Using Docker

(Note: Make sure you have built the Docker image first: docker build -t enigmapython-mcp .)

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

Example Prompts

Once the server is configured, you can test it by sending the following prompts to your LLM:

Example 1: Basic Encryption (Enigma M3)

"I need to encrypt the message 'TOPSECRET' using an Enigma M3. The rotors, ordered from fastest to slowest, are III, II, and I. All starting at position 0 with ring settings at 0. Use reflector 'UKWB' and no plugboard. What is the ciphertext?"

Example 2: Historical Decryption (Enigma I)

"Decrypt this 1930 Enigma I message. The ciphertext is 'GCDSEAHUGWTQGRK'. The machine settings, strictly ordered from Fastest to Slowest, are: Rotors III, I, and II. Their respective ring settings are 21, 12, and 23. Their initial positions are 11, 1, and 0. The reflector is 'UKWA'. The plugboard swaps are: A/M, F/I, N/V, P/S, T/U, W/Z."

Example 3: Complex M4 Configuration

"Use the Enigma M4 to encrypt the message 'DIVE DIVE DIVE'. The machine uses the 'UKWBThin' reflector. The rotors, explicitly ordered as [Fastest, Middle, Slowest, Greek], are: VIII (pos 2), III (pos 6), IV (pos 12), and Gamma (pos 21). All ring settings are 0. Please process this."

Testing

A comprehensive test suite is included in tests/test_server.py. It tests the encryption and decryption reversibility for all 10 supported Enigma models.

To run the tests:

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

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

enigmapython_mcp-0.1.2.tar.gz (408.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

enigmapython_mcp-0.1.2-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file enigmapython_mcp-0.1.2.tar.gz.

File metadata

  • Download URL: enigmapython_mcp-0.1.2.tar.gz
  • Upload date:
  • Size: 408.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for enigmapython_mcp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 9bddfed19140612b74f695a4836eb462d347ffd51ab58e926001473036288013
MD5 13dfc43b55c85ac894e8ae5bd7942c2c
BLAKE2b-256 1921ea78b1472c01c6b29d78b3935b9a0c50e81bf492c3bcd1f6fabbbb3b1a6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for enigmapython_mcp-0.1.2.tar.gz:

Publisher: publish.yml on denismaggior8/enigma-python-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file enigmapython_mcp-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for enigmapython_mcp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 97b5d2755d3417e64ec99f85f751338a0ec5213fbde52eac8bbe972cec96a3e6
MD5 b29c09a715f6251236df806db01dedc4
BLAKE2b-256 aa625f724dee70d57036b264b9c3c3b22a5b50cf62b4fbfc40683304b3d8a75f

See more details on using hashes here.

Provenance

The following attestation bundles were made for enigmapython_mcp-0.1.2-py3-none-any.whl:

Publisher: publish.yml on denismaggior8/enigma-python-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page