What You’ll Build
A self-hosted MCP server that can:- Create wallets with BIP-39 mnemonics (stored encrypted in a local vault)
- Sign transactions locally for Ethereum and Tron
- Enforce policy gates (chain allowlists, expiry)
- Broadcast signed transactions to chain RPCs
- Run as a Docker container or Node.js process
Architecture
Self-host signing is the path for regulated, audit-driven, or compliance-bound organizations that require key custody on their own infrastructure. See Security Diligence for the procurement-ready security posture.
Prerequisites
- WalletSuite API key — see Credentials & Authentication
- Docker (recommended) or Node.js 22+
- Ethereum and/or Tron RPC URL (for broadcasting)
Step 1 — Configure Environment
Create an.env file:
Step 2 — Start the Server
- Docker (Recommended)
- Node.js
-v flag mounts your local vault into the container so keys persist across restarts.Verify health:Step 3 — Create a Wallet (Owner Mode)
Connect to the MCP server and ask:create_wallet tool generates a BIP-39 mnemonic, derives addresses for Ethereum and Tron, and stores the key material encrypted in the vault.
You will see the derived addresses:
Step 4 — Test Signing
There are two shapes to test. Start with the detached path — it exercises the full signing flow without touching the chain.Detached signing (safe; no on-chain side effect)
- Call
prepare_serialized_unsigned_tx→ builds the unsigned transaction hex - Show you a review (amount, recipient, estimated fee)
- Call
sign_transaction→ signs locally and returns the signature. Nothing is broadcast.
Sign and broadcast (destructive; sends on-chain)
send_transaction with confirmBroadcast=true. The response is the resulting transaction hash.
Step 5 — Create a Policy and Agent Key
For production, switch from owner mode to agent mode with a restricted policy.Create a policy
Create an agent key bound to that policy
~/.walletsuite/ows-agent-token (mode 0600).
Switch to agent mode
Update your.env:
Step 6 — Connect Clients
Point any MCP-compatible client at the HTTP endpoint:Production Recommendations
- Use agent mode — never run owner mode in production. Owner mode is for setup only.
- Set restrictive policies — chain allowlists + short expiry windows.
- Back up the vault —
~/.owscontains your encrypted keys. Losing it means losing access. - Use HTTPS RPCs — HTTP is allowed only for localhost.
- Monitor the audit trail —
~/.walletsuite/audit-trail.jsonllogs every signing operation. - Run the production checklist — Production Checklist.
Related
- OWS Local Signing — full OWS reference (owner mode, agent mode, troubleshooting)
- Self-Hosting Over HTTP — HTTP transport details (stateless vs stateful, Docker vs Node.js)
- Choose Your Setup — stdio vs HTTP decision guide
- Policy Gates — constraining what agents can sign
- Key Management — vault encryption and key lifecycle