# Ethereum Keystore Encryption

Encrypts and decrypts Ethereum private keys using Web3 Secret Storage V3 with scrypt and PBKDF2 directly within your coding agent.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 28
- Author: nirholas
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/nirholas/ethereum-wallet-toolkit/tree/HEAD/keystore-mcp-server
- Updated: 2026-10-19
- HTML: https://affpapa.org/en/nevibecode/mcp/ethereum-keystore-encryption

## What it does

This server exposes nine tools for managing Ethereum wallets under the Web3 Secret Storage V3 specification. It handles private key encryption into JSON files, validates payload structure, inspects metadata without entering a password, and updates KDF settings during password updates.

The cryptographic pipeline applies AES-128-CTR with Keccak-256 MAC authentication. You can choose either scrypt with `N=262144` or PBKDF2 with HMAC-SHA256 for key derivation. Generated wallet files receive standard Ethereum naming conventions alongside restrictive `0600` permissions.

Handling raw secrets through an agent context carries exposure risks, so high-value keys should be processed on air-gapped offline machines.

## Requirements
- Needs: Python and uv (commands run via uvx)

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add keystore-mcp-server -- uvx keystore-mcp-server
```
uvx runs the command named after the package; if the README names another one, use uvx --from keystore-mcp-server <command>

### Codex

**Platform CLI**
```bash
codex mcp add keystore-mcp-server -- uvx keystore-mcp-server
```
uvx runs the command named after the package; if the README names another one, use uvx --from keystore-mcp-server <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "keystore-mcp-server": {
            "command": "uvx",
            "args": [
                "keystore-mcp-server"
            ]
        }
    }
}
```
uvx runs the command named after the package; if the README names another one, use uvx --from keystore-mcp-server <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "keystore-mcp-server": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "keystore-mcp-server"
            ]
        }
    }
}
```
uvx runs the command named after the package; if the README names another one, use uvx --from keystore-mcp-server <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add keystore-mcp-server uvx keystore-mcp-server
```
uvx runs the command named after the package; if the README names another one, use uvx --from keystore-mcp-server <command>

## When to use it
- encrypt an Ethereum private key into Web3 V3 JSON
- extract keystore metadata without decrypting secrets
- change wallet passwords and upgrade KDF parameters
- batch encrypt multiple private keys for cold storage

## Example prompts
- Encrypt this private key with scrypt and save the file to `./keystores`
- Inspect `UTC--2024-01-15.json` and verify its structure without asking for the password
- Update the password on my keystore file and migrate its KDF to scrypt

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 392262
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89609
- [mcp](https://affpapa.org/en/nevibecode/mcp/kubeshark-mcp.md) — MCP server · ★ 12110
- [Robin: AI-Powered Dark Web OSINT](https://affpapa.org/en/nevibecode/mcp/robin-ai-powered-dark-web-osint.md) — MCP server · ★ 7718
- [jshookmcp](https://affpapa.org/en/nevibecode/mcp/jshookmcp.md) — MCP server · ★ 2066
- [OpenOSINT](https://affpapa.org/en/nevibecode/mcp/openosint.md) — MCP server · ★ 1816

From the same set: [nirholas/ethereum-wallet-toolkit](https://affpapa.org/en/nevibecode/by/nirholas/ethereum-wallet-toolkit.md) — 5 cards

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
