A Model Context Protocol (MCP) server providing direct text encoding tools plus a consumer bridge for the current P4RS3LT0NGV3 transform catalog.
Overview
A Model Context Protocol (MCP) server providing direct text encoding tools plus a consumer bridge for the current P4RS3LT0NGV3 transform catalog. - : Discover transforms from the local P4RS3LT0NGV3/src/transformers tree. - : Apply any discovered P4RS transform by id or display name. - : Decode/reverse any discovered reversible transform. - Set P4RS3LT0NGV3_PATH if the repo is not at ~/git/P4RS3LT0NGV3. - : Encode text with a custom ICAO-style A-Z alphabet JSON map. - : Decode spelling-alphabet text back to letters. - and for QR code generation. - for Code 128, Code 39, and EAN-13 SVG generation.
README
Parseltongue MCP Server 🐍
A Model Context Protocol (MCP) server providing direct text encoding tools plus a consumer bridge for the current P4RS3LT0NGV3 transform catalog.
Features
🧬 P4RS3LT0NGV3 Consumer Bridge
- list_p4rs_transforms: Discover transforms from the local
P4RS3LT0NGV3/src/transformerstree. - apply_p4rs_transform: Apply any discovered P4RS transform by id or display name.
- decode_p4rs_transform: Decode/reverse any discovered reversible transform.
- Set
P4RS3LT0NGV3_PATHif the repo is not at~/git/P4RS3LT0NGV3.
🔤 Custom Spelling Alphabets
- encode_spelling_alphabet: Encode text with a custom ICAO-style A-Z alphabet JSON map.
- decode_spelling_alphabet: Decode spelling-alphabet text back to letters.
🔳 QR Codes & Barcodes
- generate_qr_code_svg and generate_qr_code_data_uri for QR code generation.
- generate_barcode_svg for Code 128, Code 39, and EAN-13 SVG generation.
📦 Basic Encodings (22 tools)
- Base64: Encode/decode Base64
- Base64URL: Encode/decode Base64 URL-safe format
- Base32: Encode/decode Base32
- Base58: Encode/decode Base58 (Bitcoin-style)
- Base62: Encode/decode Base62
- Base45: Encode/decode Base45
- ASCII85: Encode/decode ASCII85
- Hexadecimal: Encode/decode hex
- Binary: Encode/decode 8-bit binary
- URL Encoding: Percent encoding for URLs
- HTML Entities: Encode/decode HTML entities
🔐 Ciphers (8 tools)
- ROT13: Classic rotation cipher (encode/decode)
- Caesar Cipher: Custom shift cipher (encode/decode)
- Atbash: Reverse alphabet substitution (encode/decode)
- Morse Code: Encode/decode to Morse code
🎨 Unicode Transformations (6 tools)
- Zalgo Text: Glitch effect with combining marks
- Upside Down: Flip text using Unicode
- Bubble Text: Circle-enclosed letters (Ⓐⓑⓒ)
- Full Width: Vaporwave aesthetic (full width)
- Strikethrough: S̶t̶r̶i̶k̶e̶t̶h̶r̶o̶u̶g̶h̶
- Underline: U̲n̲d̲e̲r̲l̲i̲n̲e̲d̲
🕵️ Steganography (3 tools)
- Zero-Width Encoding: Hide text using invisible Unicode characters (encode/decode)
- Invisible Ink: Hide messages within cover text
🔧 Utilities (2 tools)
- Reverse Text: Simple string reversal
- Pig Latin: Classic word game transformation
Installation
# Clone the repository
git clone
cd parseltongue_mcp
# Install dependencies using uv
uv sync
# Or using pip
pip install -e .
Usage
As an MCP Server
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"parseltongue": {
"command": "uv",
"args": [
"--directory",
"(Full path)/parseltongue_mcp",
"run",
"parseltongue-mcp"
]
}
}
}
Running Directly
# Using uv
uv run parseltongue-mcp
# Or with python
python main.py
Available Tools
Encoding Examples
# Base64
encode_base64(text="Hello World")
# Returns: "SGVsbG8gV29ybGQ="
# Base64URL (URL-safe)
encode_base64url(text="Hello World")
# Returns: "SGVsbG8gV29ybGQ="
# Base58 (Bitcoin-style)
encode_base58(text="Hello")
# Returns: "9Ajdvzr"
# Base62
encode_base62(text="Hello")
# Returns: "5TP3P3v"
# Base45
encode_base45(text="Hello")
# Returns: "JBSWY3DP"
# ASCII85
encode_ascii85(text="Hello")
# Returns: "87cURD]i"
# Morse Code
encode_morse(text="SOS")
# Returns: "... --- ..."
# Binary
encode_binary(text="Hi")
# Returns: "01001000 01101001"
# Hexadecimal
encode_hex(text="Hi")
# Returns: "4869"
# Zero-Width (Steganography)
encode_zero_width(text="secret")
# Returns invisible Unicode characters
Cipher Examples
# ROT13
encode_rot13(text="Hello World")
# Returns: "Uryyb Jbeyq"
# Caesar Cipher with custom shift
encode_caesar(text="Attack at dawn", shift=5)
# Returns: "Fyyfhp fy ifbs"
# Atbash
encode_atbash(text="SECRET")
# Returns: "HVXIVG"
Unicode Transformation Examples
# Zalgo Text
encode_zalgo(text="Chaos", intensity="high")
# Returns: C̴̢̛͇̽h̵͎̓a̸̰͊ö̶́̚s̸̰̈
# Upside Down
encode_upside_down(text="Hello")
# Returns: "olləH"
# Bubble Text
encode_bubble_text(text="Hello")
# Returns: "Ⓗⓔⓛⓛⓞ"
# Full Width
encode_fullwidth(text="Wave")
# Returns: "Wave"
# Strikethrough
encode_strikethrough(text="Cancelled")
# Returns: "C̶a̶n̶c̶e̶l̶l̶e̶d̶"
# Underline
encode_underline(text="Important")
# Returns: "I̲m̲p̲o̲r̲t̲a̲n̲t̲"
Tool Categories
All tools are exposed as MCP tools with detailed descriptions and type hints:
| Category | Count | Examples |
|---|---|---|
| Basic Encodings | 22 | Base64, Base58, Base62, Base45, ASCII85, Hex, Binary, URL |
| Ciphers | 8 | ROT13, Caesar, Atbash, Morse |
| Unicode Transformations | 6 | Zalgo, Upside Down, Bubble, Full Width, Strikethrough, Underline |
| Steganography | 3 | Zero-Width, Invisible Ink |
| Utilities | 2 | Reverse, Pig Latin |
| P4RS Bridge | 3 | List/apply/decode transforms from the P4RS3LT0NGV3 transformer tree |
| Spelling Alphabet | 2 | Encode/decode custom alphabets |
| Codes | 3 | Generate QR codes and barcodes |
Development
# Install development dependencies
uv sync
# Run the server in development mode
uv run python main.py
# Test with MCP inspector
npx @modelcontextprotocol/inspector uv run python main.py
Technical Details
- Framework: FastMCP (MCP Python SDK)
- Python Version: 3.12+
- Dependencies:
mcp[cli]>=1.16.0- MCP server frameworkhttpx>=0.28.1- HTTP client (for potential future features)qrcode[pil]>=8.0andpillow>=10.0.0- QR PNG/SVG generationpython-barcode>=0.15.1- Code 128, Code 39, and EAN-13 SVG generation
Credits
Inspired by P4RS3LT0NGV3.
License
Open source. See LICENSE file for details.
Contributing
Contributions welcome. Useful areas to expand:
- Native wrappers for high-use P4RS bridge transforms.
- QR/barcode image decoding parity with the browser app.
- More structured batch transform chains.
- Better diagnostics when the local P4RS checkout is stale relative to the hosted app.
Examples in Action
Hiding Messages
# Create invisible message
hidden = encode_zero_width(text="TOP SECRET")
visible = f"This is a normal message{hidden}"
# Looks like: "This is a normal message"
# But contains hidden text!
# Decode it
decode_zero_width(encoded_text=hidden)
# Returns: "TOP SECRET"
Text Styling
# Create stylized text for social media
normal = "AWESOME"
bubble = encode_bubble_text(text=normal) # ⒶⓌⒺⓈⓄⓂⒺ
wide = encode_fullwidth(text=normal) # AWESOME
zalgo = encode_zalgo(text=normal) # A̴W̸E̵S̶O̴M̵E̸
strike = encode_strikethrough(text=normal) # A̶W̶E̶S̶O̶M̶E̶
underline = encode_underline(text=normal) # A̲W̲E̲S̲O̲M̲E̲
upside = encode_upside_down(text=normal) # ƎWOSƎפ∀
Classic Ciphers
# Encode a message with Caesar cipher
message = "Meet at the park"
encoded = encode_caesar(text=message, shift=7)
# Returns: "Tlla ha aol whyr"
# Decode it
decode_caesar(text=encoded, shift=7)
# Returns: "Meet at the park"
Made with 🐍 and MCP
Install
npx @modelcontextprotocol/inspector uv run python main.pyConfiguration
{
"mcpServers": {
"parseltongue": {
"command": "uv",
"args": [
"--directory",
"(Full path)/parseltongue_mcp",
"run",
"parseltongue-mcp"
]
}
}
}