io.github.daedalus/mcp-cryptography
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| generate_symmetric_keyA | 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_keyA | 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. |
| generate_x25519_keyA | 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_encryptA | 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 |
| fernet_decryptA | 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. |
| aes_encryptA | 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. |
| aes_decryptA | 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. |
| rsa_encryptA | 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. |
| rsa_decryptB | Decrypt RSA ciphertext using private key. Args: private_key_pem: RSA private key in PEM format. ciphertext: Base64-encoded ciphertext. Returns: Decrypted string. |
| rsa_signA | Create RSA digital signature. Args: private_key_pem: RSA private key in PEM format. data: String to sign. Returns: Base64-encoded signature. |
| rsa_verifyA | 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. |
| hash_sha256A | Compute SHA-256 hash. Args: data: String or base64-encoded bytes to hash. Returns: Hex-encoded hash. Example: >>> hash_sha256("Hello, World!") 'dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f' |
| hash_sha512B | Compute SHA-512 hash. Args: data: String to hash. Returns: Hex-encoded hash. |
| hash_sha1A | 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. |
| hmac_signA | 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...' |
| hmac_verifyA | 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. |
| pbkdf2_deriveA | 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). |
| scrypt_deriveA | 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). |
| generate_self_signed_certA | 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). |
| parse_certificateB | Parse X.509 certificate. Args: certificate_pem: Certificate in PEM format. Returns: Dictionary with 'subject', 'issuer', 'not_valid_before', 'not_valid_after'. |
| generate_random_bytesA | Generate random bytes. Args: length: Number of bytes to generate (default 32). Returns: Hex-encoded random bytes. Example: >>> generate_random_bytes(16) 'a1b2c3d4e5f6...' |
| generate_random_base64A | Generate random bytes encoded as base64. Args: length: Number of bytes to generate (default 32). Returns: Base64-encoded random string. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/daedalus/mcp-cryptography'
If you have feedback or need assistance with the MCP directory API, please join our Discord server