MCP server for Ethereum keystore encryption, decryption, and management
Project description
Keystore MCP Server
A Model Context Protocol (MCP) server for Ethereum keystore encryption, decryption, and management following the Web3 Secret Storage Definition Version 3 standard.
Features
Tools (9)
encrypt_keystore- Encrypt private key to Web3 Secret Storage V3 formatdecrypt_keystore- Decrypt keystore to recover private keysave_keystore_file- Save keystore with standard Ethereum namingload_keystore_file- Load and validate keystore filesget_keystore_info- Extract metadata without decryptionvalidate_keystore- Validate keystore structurechange_keystore_password- Change password and optionally upgrade KDFbatch_encrypt_keystores- Encrypt multiple walletskeystore_to_private_key_file- Export decrypted private key (dangerous)
Resources (4)
keystore://specification- Web3 Secret Storage V3 specificationkeystore://security-guide- Security best practiceskeystore://kdf-comparison- Scrypt vs PBKDF2 comparisonkeystore://examples/{type}- Example keystores
Prompts (4)
secure_wallet_backup- Guided backup creationkeystore_migration- Migration from legacy formatskeystore_recovery- Recovery assistancekeystore_security_audit- Security audit workflow
Installation
pip install -e .
# Or with dev dependencies
pip install -e ".[dev]"
Usage
Running the Server
keystore-mcp-server
Claude Desktop Configuration
{
"mcpServers": {
"keystore": {
"command": "keystore-mcp-server"
}
}
}
Cryptographic Standards
Web3 Secret Storage V3
- KDF: scrypt (recommended) or pbkdf2
- Cipher: AES-128-CTR
- MAC: Keccak-256
- UUID: Version 4
Default Scrypt Parameters
| Parameter | Value | Description |
|---|---|---|
| N | 262144 (2^18) | CPU/memory cost |
| r | 8 | Block size |
| p | 1 | Parallelization |
| dklen | 32 | Derived key length |
Default PBKDF2 Parameters
| Parameter | Value | Description |
|---|---|---|
| c | 262144 | Iterations |
| prf | hmac-sha256 | PRF |
| dklen | 32 | Derived key length |
Security
⚠️ Important Security Notes:
- Never share keystore passwords - Treat like private keys
- Use strong passwords - Minimum 12 characters, mixed case, numbers, symbols
- Secure file storage - Files created with 0600 permissions
- Air-gapped operations - Use offline for high-value wallets
- Backup keystores - Store encrypted backups in multiple locations
Examples
Encrypt a Private Key
result = await encrypt_keystore(
private_key="0x...",
password="strong-password-123",
kdf="scrypt"
)
Decrypt a Keystore
result = await decrypt_keystore(
keystore=keystore_json,
password="strong-password-123"
)
Save Keystore File
result = await save_keystore_file(
keystore=keystore_json,
directory="./keystores"
)
# Creates: UTC--2024-01-15T10-30-00.000Z--address.json
Testing
pytest tests/ -v
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
keystore_mcp_server-1.0.0.tar.gz
(41.6 kB
view details)
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 keystore_mcp_server-1.0.0.tar.gz.
File metadata
- Download URL: keystore_mcp_server-1.0.0.tar.gz
- Upload date:
- Size: 41.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5560c9faa33e0e815a242165e95456bfa853d5cfdf3929de329cf005725a099a
|
|
| MD5 |
1675a1bfef0f1d953a471c33bfb2720e
|
|
| BLAKE2b-256 |
52d59f3e836998a628ad81a2b273e72d5090bed51303497814ab5f70fa67127d
|
File details
Details for the file keystore_mcp_server-1.0.0-py3-none-any.whl.
File metadata
- Download URL: keystore_mcp_server-1.0.0-py3-none-any.whl
- Upload date:
- Size: 46.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
46e72acc1e11df78f0e32fbb5ec82efdbe5845dd284bd2168bb398a0480fbb3b
|
|
| MD5 |
bb1a5ead3f74fd94a273c5c8d0fee867
|
|
| BLAKE2b-256 |
c61596df52730aa709ae8105a973d99823444b45f73f61820a936a72ab0a0d1d
|