← Back to search

io.github.daedalus/mcp-cryptography

daedalus Scanned 24d ago

MCP server exposing cryptography library functionality

B
84.9 / 100

Versions

0.1.0latest
first seen Jun 5, 2026
0.1.1
first seen May 19, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 22

hmac_verify
annotations: none low

Verify HMAC. Args: key: Hex-encoded key. data: String that was signed. hmac: Hex-encoded HMAC to verify. algorithm: Hash algorithm - 'sha256' or 'sha512'. Returns: True if HMAC is valid.

key str data str hmac str algorithm str
generate_symmetric_key
annotations: none low

Generate a Fernet symmetric key. Returns: Base64-encoded 32-byte key suitable for Fernet encryption. Example: >>> key = generate_symmetric_key() >>> len(key) # 44 characters base64 encoded 44

generate_rsa_key
annotations: none low

Generate an RSA key pair. Args: key_size: Key size in bits (default 2048). Must be at least 2048. Returns: Dictionary with 'public_key' and 'private_key' in PEM format. Raises: ValueError: If key_size is less than 2048.

key_size int
generate_x25519_key
annotations: none low

Generate an X25519 key pair for key exchange. Returns: Dictionary with 'public_key' and 'private_key' in PEM format. Example: >>> keys = generate_x25519_key() >>> len(keys['public_key']) > 0 True

fernet_encrypt
annotations: none low

Encrypt data using Fernet symmetric encryption. Args: key: Base64-encoded Fernet key. data: Plain text string to encrypt. Returns: Base64-encoded ciphertext. Example: >>> key = generate_symmetric_key() >>> ciphertext = fernet_encrypt(key, "Hello, World!") >>> len(ciphertext) > 0 True

key str data str
fernet_decrypt
annotations: none low

Decrypt Fernet ciphertext. Args: key: Base64-encoded Fernet key. ciphertext: Base64-encoded ciphertext. Returns: Decrypted plain text string. Raises: cryptography.fernet.InvalidToken: If decryption fails.

key str ciphertext str
aes_encrypt
annotations: none low

Encrypt data using AES. Args: key: Hex-encoded AES key (16, 24, or 32 bytes). data: String to encrypt. mode: Encryption mode - 'CBC' or 'GCM' (default CBC). Returns: Dictionary with 'ciphertext' (hex) and 'iv' (hex). Raises: ValueError: If key size is invalid.

key str data str mode str
aes_decrypt
annotations: none low

Decrypt AES ciphertext. Args: key: Hex-encoded AES key. ciphertext: Hex-encoded ciphertext. iv: Hex-encoded initialization vector. mode: Encryption mode - 'CBC' or 'GCM' (default CBC). Returns: Decrypted string. Raises: ValueError: If key size is invalid.

iv str key str mode str ciphertext str
rsa_encrypt
annotations: none low

Encrypt data using RSA with OAEP asymmetric_padding. Args: public_key_pem: RSA public key in PEM format. data: String to encrypt (max ~446 bytes for 4096-bit key). Returns: Base64-encoded ciphertext. Raises: ValueError: If data is too large for the key size.

data str public_key_pem str
rsa_decrypt
annotations: none low

Decrypt RSA ciphertext using private key. Args: private_key_pem: RSA private key in PEM format. ciphertext: Base64-encoded ciphertext. Returns: Decrypted string.

ciphertext str private_key_pem str
rsa_sign
annotations: none low

Create RSA digital signature. Args: private_key_pem: RSA private key in PEM format. data: String to sign. Returns: Base64-encoded signature.

data str private_key_pem str
rsa_verify
annotations: none low

Verify RSA digital signature. Args: public_key_pem: RSA public key in PEM format. data: Original signed data. signature: Base64-encoded signature. Returns: True if signature is valid.

data str signature str public_key_pem str
hash_sha256
annotations: none low

Compute SHA-256 hash. Args: data: String or base64-encoded bytes to hash. Returns: Hex-encoded hash. Example: >>> hash_sha256("Hello, World!") 'dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f'

data str
hash_sha512
annotations: none low

Compute SHA-512 hash. Args: data: String to hash. Returns: Hex-encoded hash.

data str
hash_sha1
annotations: none low

Compute SHA-1 hash. Note: SHA-1 is considered cryptographically broken. Use only for legacy compatibility. Args: data: String to hash. Returns: Hex-encoded hash.

data str
hmac_sign
annotations: none low

Generate HMAC. Args: key: Hex-encoded key. data: String to sign. algorithm: Hash algorithm - 'sha256' or 'sha512' (default sha256). Returns: Hex-encoded HMAC. Example: >>> hmac_sign("aabbcc", "message") 'c053c4f7...'

key str data str algorithm str
pbkdf2_derive
annotations: none low

Derive key using PBKDF2. Args: password: Password to derive from. salt: Hex-encoded salt (optional, will generate if not provided). iterations: Number of iterations (default 480000, OWASP recommended). Returns: Dictionary with 'derived_key' (hex) and 'salt' (hex).

salt string password str iterations int
scrypt_derive
annotations: none low

Derive key using Scrypt. Args: password: Password to derive from. salt: Hex-encoded salt (optional, will generate if not provided). Returns: Dictionary with 'derived_key' (hex) and 'salt' (hex).

salt string password str
generate_self_signed_cert
annotations: none low

Generate a self-signed X.509 certificate. Args: common_name: Common name for the certificate subject. organization: Organization name (optional). days_valid: Number of days the certificate is valid (default 365). Returns: Dictionary with 'certificate' (PEM) and 'private_key' (PEM).

days_valid int common_name str organization string
parse_certificate
annotations: none low

Parse X.509 certificate. Args: certificate_pem: Certificate in PEM format. Returns: Dictionary with 'subject', 'issuer', 'not_valid_before', 'not_valid_after'.

certificate_pem str
generate_random_bytes
annotations: none low

Generate random bytes. Args: length: Number of bytes to generate (default 32). Returns: Hex-encoded random bytes. Example: >>> generate_random_bytes(16) 'a1b2c3d4e5f6...'

length int
generate_random_base64
annotations: none low

Generate random bytes encoded as base64. Args: length: Number of bytes to generate (default 32). Returns: Base64-encoded random string.

length int

Permissions 1

filesystem low
Server uses filesystem capabilities via: os

Scan Findings 52

low
Tool 'generate_symmetric_key' has no annotations annotation_checker · 100%
low
Tool 'generate_rsa_key' has no annotations annotation_checker · 100%
low
Tool 'generate_x25519_key' has no annotations annotation_checker · 100%
low
Tool 'fernet_encrypt' has no annotations annotation_checker · 100%
low
Tool 'fernet_decrypt' has no annotations annotation_checker · 100%
low
Tool 'aes_encrypt' has no annotations annotation_checker · 100%
low
Tool 'aes_decrypt' has no annotations annotation_checker · 100%
low
Tool 'rsa_encrypt' has no annotations annotation_checker · 100%
low
Tool 'rsa_decrypt' has no annotations annotation_checker · 100%
low
Tool 'rsa_sign' has no annotations annotation_checker · 100%
low
Tool 'rsa_verify' has no annotations annotation_checker · 100%
low
Tool 'hash_sha256' has no annotations annotation_checker · 100%
low
Tool 'hash_sha512' has no annotations annotation_checker · 100%
low
Tool 'hash_sha1' has no annotations annotation_checker · 100%
low
Tool 'hmac_sign' has no annotations annotation_checker · 100%
low
Tool 'hmac_verify' has no annotations annotation_checker · 100%
low
Tool 'pbkdf2_derive' has no annotations annotation_checker · 100%
low
Tool 'scrypt_derive' has no annotations annotation_checker · 100%
low
Tool 'generate_self_signed_cert' has no annotations annotation_checker · 100%
low
Tool 'parse_certificate' has no annotations annotation_checker · 100%
low
Tool 'generate_random_bytes' has no annotations annotation_checker · 100%
low
Tool 'generate_random_base64' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Hex string literal (>50 chars) in daedalus-mcp-cryptography-64b7ae8/tests/test_mcp.py:143 entropy_analyzer · 70%
medium
Hex string literal (>50 chars) in daedalus-mcp-cryptography-64b7ae8/src/mcp_cryptography/mcp.py:386 entropy_analyzer · 70%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: generate_symmetric_key manifest_parser · 90%
info
Tool: generate_rsa_key manifest_parser · 90%
info
Tool: generate_x25519_key manifest_parser · 90%
info
Tool: fernet_encrypt manifest_parser · 90%
info
Tool: fernet_decrypt manifest_parser · 90%
info
Tool: aes_encrypt manifest_parser · 90%
info
Tool: aes_decrypt manifest_parser · 90%
info
Tool: rsa_encrypt manifest_parser · 90%
info
Tool: rsa_decrypt manifest_parser · 90%
info
Tool: rsa_sign manifest_parser · 90%
info
Tool: rsa_verify manifest_parser · 90%
info
Tool: hash_sha256 manifest_parser · 90%
info
Tool: hash_sha512 manifest_parser · 90%
info
Tool: hash_sha1 manifest_parser · 90%
info
Tool: hmac_sign manifest_parser · 90%
info
Tool: hmac_verify manifest_parser · 90%
info
Tool: pbkdf2_derive manifest_parser · 90%
info
Tool: scrypt_derive manifest_parser · 90%
info
Tool: generate_self_signed_cert manifest_parser · 90%
info
Tool: parse_certificate manifest_parser · 90%
info
Tool: generate_random_bytes manifest_parser · 90%
info
Tool: generate_random_base64 manifest_parser · 90%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
low
Permission: filesystem access detected permission_analyzer · 70%
info
No dependency files found for SBOM generation sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%