io.github.daedalus/mcp-cryptography
# mcp-cryptography
> MCP server exposing cryptography library functionality.
[](https://pypi.org/project/mcp-cryptography/)
[](https://pypi.org/project/mcp-cryptography/)
[](https://github.com/astral-sh/ruff)
mcp-name: io.github.daedalus/mcp-cryptography
## Install
```bash
pip install mcp-cryptography
```
## Usage
```python
from mcp_cryptography import mcp
# Run the MCP server
if __name__ == "__main__":
mcp.run()
```
## Available Tools
The server provides the following cryptographic tools:
### Key Generation
- `generate_symmetric_key` - Generate a Fernet symmetric key
- `generate_rsa_key` - Generate an RSA key pair
- `generate_x25519_key` - Generate an X25519 key pair
### Symmetric Encryption
- `fernet_encrypt` / `fernet_decrypt` - Fernet encryption
- `aes_encrypt` / `aes_decrypt` - AES encryption (CBC/GCM modes)
### Asymmetric Encryption
- `rsa_encrypt` / `rsa_decrypt` - RSA OAEP encryption
- `rsa_sign` / `rsa_verify` - RSA digital signatures
### Hashing
- `hash_sha256` - SHA-256 hash
- `hash_sha512` - SHA-512 hash
- `hash_sha1` - SHA-1 hash
### HMAC
- `hmac_sign` - Generate HMAC
- `hmac_verify` - Verify HMAC
### Key Derivation
- `pbkdf2_derive` - PBKDF2 key derivation
- `scrypt_derive` - Scrypt key derivation
### X.509 Certificates
- `generate_self_signed_cert` - Generate self-signed certificate
- `parse_certificate` - Parse X.509 certificate
### Utilities
- `generate_random_bytes` - Generate random bytes
- `generate_random_base64` - Generate random base64 bytes
## Development
```bash
git clone https://github.com/daedalus/mcp-cryptography.git
cd mcp-cryptography
pip install -e ".[test]"
# run tests
pytest
# format
ruff format src/ tests/
# lint
ruff check src/ tests/
# type check
mcp_cryptography src/
```
TDQS
Scored across 22 tools
Tools are generally distinct, but generate_symmetric_key and generate_random_bytes both produce random data, which could cause confusion; however, descriptions clarify their purposes.
Naming conventions vary: some tools use verb_noun (generate_symmetric_key), others use algorithm_verb (fernet_encrypt, aes_encrypt), and hash_sha256 mixes verb and algorithm. Inconsistency reduces predictability.
22 tools cover a broad cryptography domain; while slightly above the typical 3-15 range, each tool has a clear purpose and the count is justified.
Major cryptographic operations are covered: symmetric/asymmetric encryption, hashing, signing, key derivation, certificates. Missing modern algorithms like Ed25519 or ECDSA are minor gaps.