loadWallet
Load an Ethereum wallet by providing a private key to enable blockchain interactions and smart contract operations within the MCP Ethers Wallet server.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| privateKey | Yes | The private key of the wallet to load. Should start with '0x'. | |
| saveToEnv | No | Optional. If true, the private key will be saved to the server's environment variables for this session. Default is true. |
Implementation Reference
- src/tools/core.ts:189-214 (handler)The core handler logic for the 'loadWallet' tool. Creates an ethers.js Wallet instance from the provided private key, optionally persists it to process.env.WALLET_PRIVATE_KEY and configures it as the signer on the shared ethersService instance, then returns a success response with the wallet address.async ({ privateKey, saveToEnv = true }) => { try { const wallet = new ethers.Wallet(privateKey); if (saveToEnv) { process.env.WALLET_PRIVATE_KEY = privateKey; // Update the ethersService with the new wallet const signer = new ethers.Wallet(privateKey, ethersService.provider); ethersService.setSigner(signer); } return { content: [{ type: "text", text: ` Wallet loaded successfully: Address: ${wallet.address} ${saveToEnv ? "Private key has been saved to environment variables for this session." : ""} ` }] }; } catch (error) { return createErrorResponse(error, 'loading wallet'); } }
- src/tools/core.ts:181-188 (schema)Zod input schema validation for the 'loadWallet' tool parameters: requires a privateKey string and optional saveToEnv boolean (defaults to true).{ privateKey: z.string().describe( "The private key of the wallet to load. Should start with '0x'." ), saveToEnv: z.boolean().optional().describe( "Optional. If true, the private key will be saved to the server's environment variables for this session. Default is true." ) },
- src/tools/core.ts:179-215 (registration)Registration of the 'loadWallet' MCP tool on the server using server.tool(), including inline schema and handler implementation within the registerCoreTools function.server.tool( "loadWallet", { privateKey: z.string().describe( "The private key of the wallet to load. Should start with '0x'." ), saveToEnv: z.boolean().optional().describe( "Optional. If true, the private key will be saved to the server's environment variables for this session. Default is true." ) }, async ({ privateKey, saveToEnv = true }) => { try { const wallet = new ethers.Wallet(privateKey); if (saveToEnv) { process.env.WALLET_PRIVATE_KEY = privateKey; // Update the ethersService with the new wallet const signer = new ethers.Wallet(privateKey, ethersService.provider); ethersService.setSigner(signer); } return { content: [{ type: "text", text: ` Wallet loaded successfully: Address: ${wallet.address} ${saveToEnv ? "Private key has been saved to environment variables for this session." : ""} ` }] }; } catch (error) { return createErrorResponse(error, 'loading wallet'); } } );