MCP server for text encoding and transformation tools
Project description
Parseltongue MCP Server 🐍
A Model Context Protocol (MCP) server providing 40+ text encoding, cipher, and transformation tools inspired by P4RS3LT0NGV3.
Features
📦 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 <your-repo-url>
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 |
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)
Credits
Inspired by P4RS3LT0NGV3 by elder-plinius.
License
Open source. See LICENSE file for details.
Contributing
Contributions welcome! Areas to expand:
- More cipher algorithms (Vigenère, Rail Fence, Playfair)
- Fantasy language encodings (Elvish, Klingon, etc.)
- Ancient scripts (Runes, Hieroglyphics)
- Additional Unicode styles
- Batch encoding/decoding operations
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
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iflow_mcp_joaodunas_parseltongue_mcp-0.1.2.tar.gz.
File metadata
- Download URL: iflow_mcp_joaodunas_parseltongue_mcp-0.1.2.tar.gz
- Upload date:
- Size: 19.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d8aeffeaccbd1baf83da915f365e4d30ecd828440ad69b2cf6677f14abbacd96
|
|
| MD5 |
7a567c5b762f29fe57defd59cb99d850
|
|
| BLAKE2b-256 |
91992ec6c7103bb7728a3b3f2765da545f7ab1ad8ba12ca1d16e0f84ec3d786c
|
File details
Details for the file iflow_mcp_joaodunas_parseltongue_mcp-0.1.2-py3-none-any.whl.
File metadata
- Download URL: iflow_mcp_joaodunas_parseltongue_mcp-0.1.2-py3-none-any.whl
- Upload date:
- Size: 24.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4d8fda46113f992d049c274cbb69984ce42c32625fb4829ffca96b430549c1e
|
|
| MD5 |
0d04d6b32926b676b65fa471e8f278a6
|
|
| BLAKE2b-256 |
0614acf0a16ac46b01efc377bfb146b83ce650f8747f5b027000d0f76e862aa7
|