Use MetaMask SDK with Node.js
Import MetaMask SDK into your Node.js dapp to enable your users to easily connect to the MetaMask browser extension and MetaMask Mobile. The SDK for Node.js has the same prerequisites as for standard JavaScript.
Steps
1. Install the SDK
In your project directory, install the SDK using Yarn or npm:
yarn add @metamask/sdk
or
npm i @metamask/sdk
2. Import the SDK
In your project script, add the following to import the SDK:
import { MetaMaskSDK } from "@metamask/sdk"
3. Instantiate the SDK
Instantiate the SDK using any options:
const MMSDK = new MetaMaskSDK({
dappMetadata: {
name: "Node.js dapp",
},
infuraAPIKey: process.env.INFURA_API_KEY,
// Other options.
})
- Use
dappMetadata
to display information about your dapp in the MetaMask connection modal. - Use
infuraAPIKey
to make read-only RPC requests from your dapp.
4. Use the SDK
Use the SDK by calling any provider API methods.
Always call eth_requestAccounts
using
request()
first, since it
prompts the installation or connection popup to appear.
const accounts = await sdk.connect();
console.log("connect request accounts", accounts);
// You can also access the Ethereum provider object.
const provider = MMSDK.getProvider()
provider.request({ method: "eth_requestAccounts", params: [] })
You can also call the SDK's connectAndSign
method, and
batch multiple JSON-RPC requests using the metamask_batch
method.
Example
You can copy the full Node.js example to get started:
import { MetaMaskSDK } from "@metamask/sdk"
const MMSDK = new MetaMaskSDK({
dappMetadata: {
name: "Example Node.js Dapp",
},
infuraAPIKey: process.env.INFURA_API_KEY,
// Other options.
})
const accounts = await MMSDK.connect()
const provider = MMSDK.getProvider()
provider.request({ method: "eth_accounts", params: [] })
See the example Node.js dapp in the JavaScript SDK GitHub repository for advanced use cases.