# laszlopere/mcp-bytesmith [Health: Active]

**Category:** 🔑 Cryptography  
**Repository:** https://github.com/laszlopere/mcp-bytesmith  
**GitHub Stars:** 2  
**Views:** 2  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/laszlopere-mcp-bytesmith

## Description
Local byte-wrangling toolbox: encoding (hex/Base64/Base32/Base58/Base45…), cryptographic + CRC hashing, base conversion, and CSPRNG tokens/passphrases, plus an opt-in Ethereum/EVM toolset (keccak, ABI/RLP codecs, EIP-191/712 hashing, function/event selectors, EIP-55). No network calls. uvx mcp-bytesmith.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "mcp-bytesmith": {
    "command": "uvx",
    "args": ["mcp-bytesmith"]
  }
}
```

## Documentation & README

# mcp-bytesmith

[![CI](https://github.com/laszlopere/mcp-bytesmith/actions/workflows/ci.yml/badge.svg)](https://github.com/laszlopere/mcp-bytesmith/actions/workflows/ci.yml)
[![PyPI](https://img.shields.io/pypi/v/mcp-bytesmith.svg)](https://pypi.org/project/mcp-bytesmith/)
[![Python 3.10+](https://img.shields.io/badge/python-3.10%2B-blue.svg)](https://www.python.org/)
[![License: GPLv3](https://img.shields.io/badge/License-GPLv3-blue.svg)](LICENSE)
[![Sponsor](https://img.shields.io/badge/Sponsor-%E2%9D%A4-db61a2.svg)](https://github.com/sponsors/laszlopere)
[![mcp-bytesmith MCP server](https://glama.ai/mcp/servers/laszlopere/mcp-bytesmith/badges/score.svg)](https://glama.ai/mcp/servers/laszlopere/mcp-bytesmith)
[![Ruff](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json)](https://github.com/astral-sh/ruff)
[![Checked with mypy](https://www.mypy-lang.org/static/mypy_badge.svg)](https://mypy-lang.org/)
[![Last commit](https://img.shields.io/github/last-commit/laszlopere/mcp-bytesmith.svg)](https://github.com/laszlopere/mcp-bytesmith/commits)

A pure-Python [Model Context Protocol](https://modelcontextprotocol.io) server,
built on the official MCP SDK (FastMCP), exposing a toolbox of byte-wrangling
utilities — encoding, hashing, number crunching, and Ethereum primitives — all
computed locally and for real, with no network calls or remote APIs.

Distribution name: `mcp-bytesmith` · import package: `mcp_bytesmith`.

## Tools

mcp-bytesmith ships an always-on **core toolset** built entirely on the Python
standard library, so it works out of the box with no extra dependencies. This
covers the everyday primitives: `encode` and `decode` move data between a wide
set of schemes (hex, the Base64/Base32 family, Base58/Base58check, Base45, and
more), `hash` computes cryptographic, CRC, and fast non-cryptographic digests,
`hash_file` checksums a file on disk and soft-verifies it against an expected
digest, `hmac` computes and verifies keyed-hash authentication tags, and
`num_convert` translates integers between bases. Rounding out the core are
`bytes_edit` (pad/trim/slice/concat byte glue), `data_uri` (build and parse
`data:` URIs), `otpauth_uri` (build and parse `otpauth://` authenticator
provisioning URIs), `unicode_normalize` and `charset_transcode` for text and
character-set work, `string_escape`/`string_unescape` for JSON/JS/Python/C
escaping, `codepoints` for per-scalar Unicode inspection, `random` for
CSPRNG-backed bytes, tokens, and passphrases, and `id_generate` for UUIDs
(v1/v4/v5/v7), ULIDs, and nanoids. `password_hash` turns a password
into a verifiable storage string and checks one back — scrypt and PBKDF2 out of
the box, bcrypt and the argon2 variants with the `crypto` extra — while
`derive_key` derives raw key bytes from a password or secret via PBKDF2, scrypt,
or HKDF.

An opt-in **Ethereum/EVM toolset** (enabled via the `ethereum` extra) adds the
primitives you reach for when working on-chain: `eth_hash` for keccak-256,
EIP-191, EIP-712 typed-data, and EIP-7702 authorization hashing,
`eth_userop_hash` for the ERC-4337 userOpHash (EntryPoint 0.6/0.7/0.8),
`abi_codec` and `rlp_codec` for ABI and
RLP encode/decode, `eth_selector` for function and event selectors,
`abi_inspect` for converting a contract ABI between its JSON and human-readable
forms and listing every selector and topic0 it declares,
`eth_calldata` for splitting a call's calldata into named, typed arguments (and
building it back), `eth_log_decode` for turning a receipt log's topics and data
into named event arguments, `eth_revert_decode` for turning a failed call's
revert data into a reason (`Error(string)`, `Panic(uint256)`, or a custom error),
`eth_bytecode` for disassembling deployed bytecode, scraping the selectors out of
its dispatcher, and reading its trailing solc metadata,
`eth_tx_codec` for transactions, `eth_storage_slot`
for storage layout — mapping and array slots, plus the well-known constant ones
(EIP-1967 proxy, UUPS, ERC-7201 namespaced, diamond) — `eth_address_case` for
EIP-55 checksums, `ens_namehash` for
EIP-137 ENS namehash/labelhash, `bip39` for BIP-39 mnemonic generation,
validation, and seed derivation, `bip32_derive` for BIP-32/44 HD key and address
derivation from a seed, `eth_eoa_address` for the address and public key behind a
private key, and `eth_contract_address` for CREATE and CREATE2 deployment
addresses. An always-available `info` tool reports which toolsets are active
along with version information.

An opt-in **serialization toolset** (enabled via the `serialize` extra) adds
`serialize_codec`, a single tool multiplexed by `format`. It encodes and decodes
schemaless structured data across CBOR, MessagePack, bencode, and ASN.1 DER/BER
(a tag-length-value tree; the `crypto` extra's asn1crypto is needed for ASN.1);
it encodes and decodes SSZ (Simple Serialize) driven by an `options.schema`,
also returning the `hash_tree_root`; and it decodes raw protobuf wire format
(protobuf is decode-only — without a `.proto` schema it surfaces field numbers,
wire types, and values rather than field names).

Further toolsets (the rest of crypto, IDs, validation) are on the roadmap — see
[`TODO`](https://github.com/laszlopere/mcp-bytesmith/blob/HEAD/TODO).

## Development

```sh
uv sync                 # create venv + install (incl. dev extras)
uv run mcp-bytesmith    # start the server over stdio
uv run pytest           # run the test suite
```

## Sponsoring

mcp-bytesmith is free, open-source software developed in my spare time.
Sponsorships are what keep the project alive and actively maintained — they fund
new toolsets, bug fixes, and ongoing support, and they're a direct signal that
the work is worth continuing.

If the project is useful to you, please consider sponsoring it through
**[GitHub Sponsors](https://github.com/sponsors/laszlopere)**. Click the
**Sponsor** button at the top of the repository, or visit the link directly, and
pick a one-time or recurring tier. Every contribution, large or small, is hugely
appreciated and goes straight back into keeping mcp-bytesmith healthy.

## License

GPLv3 — see [`LICENSE`](https://github.com/laszlopere/mcp-bytesmith/blob/HEAD/LICENSE).

The bundled passphrase wordlist
([`src/mcp_bytesmith/wordlists/eff_large.txt`](https://github.com/laszlopere/mcp-bytesmith/blob/HEAD/src/mcp_bytesmith/wordlists/eff_large.txt),
used by the `random` tool's `passphrase` kind) is the EFF "large" wordlist by the
[Electronic Frontier Foundation](https://www.eff.org/dice), licensed
[CC BY 3.0 US](https://creativecommons.org/licenses/by/3.0/us/).

The bundled BIP-39 wordlist
([`src/mcp_bytesmith/wordlists/bip39_english.txt`](https://github.com/laszlopere/mcp-bytesmith/blob/HEAD/src/mcp_bytesmith/wordlists/bip39_english.txt),
used by the `bip39` tool) is the canonical English wordlist from
[BIP-39](https://github.com/bitcoin/bips/blob/master/bip-0039/english.txt), which
falls under the [MIT License](https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#copyright).
Its SHA-256 is `2f5eed53a4727b4bf8880d8f3f199efc90e58503646d9ff8eff3a2ed3b24dbda`.

