WDK logoWDK documentation

Get Started

Install the MCP Toolkit and run your first AI-powered wallet server

Building a LangChain agent? The serve command provides zero-config MCP server startup -- no server script needed. See LangChain Integration.

Setup Wizard

The fastest way to get running. Clone the repository and let the wizard configure everything:

Terminal
git clone https://github.com/tetherto/wdk-mcp-toolkit.git
cd wdk-mcp-toolkit
npm install
npm run setup

The wizard will:

  1. Prompt for your seed phrase (required)
  2. Ask for optional API keys (WDK Indexer, MoonPay)
  3. Generate .vscode/mcp.json with your credentials
  4. Install required dependencies automatically

Once complete, open the project in VS Code, start the MCP server from .vscode/mcp.json, and open the chatbot with Cmd + Shift + I (or run Chat: Open Agent from the Command Palette on non-Mac).

Security - Your seed phrase is stored locally in .vscode/mcp.json, which is gitignored. Always use a dedicated development wallet with limited funds.


Manual Setup

If you prefer to set things up yourself or want to integrate the toolkit into an existing project:

Install the toolkit

Install the MCP Toolkit and the wallet modules you need:

Terminal
npm install @tetherto/wdk-mcp-toolkit @modelcontextprotocol/sdk

# Wallet modules (add any combination)
npm install @tetherto/wdk-wallet-evm    # Ethereum, Polygon, Arbitrum, etc.
npm install @tetherto/wdk-wallet-btc    # Bitcoin

Create your MCP server

Create index.js with a basic multi-chain server:

index.js
import { WdkMcpServer, CHAINS, WALLET_TOOLS, PRICING_TOOLS } from '@tetherto/wdk-mcp-toolkit'
import WalletManagerEvm from '@tetherto/wdk-wallet-evm'
import WalletManagerBtc from '@tetherto/wdk-wallet-btc'

const server = new WdkMcpServer('my-wallet-server', '1.0.0')

// 1. Enable WDK with your seed phrase
server.useWdk({ seed: process.env.WDK_SEED })

// 2. Register wallet modules
server.registerWallet('ethereum', WalletManagerEvm, {
  provider: 'https://eth.drpc.org'
})

server.registerWallet('bitcoin', WalletManagerBtc, {
  network: 'bitcoin',
  host: 'electrum.blockstream.info',
  port: 50001
})

// 3. Enable pricing
server.usePricing()

// 4. Register tools and start
server.registerTools([...WALLET_TOOLS, ...PRICING_TOOLS])

Connect your AI client

Add the MCP server to your AI tool's configuration:

Config path: .vscode/mcp.json (project-level)

.vscode/mcp.json
{
  "servers": {
    "wdk": {
      "type": "stdio",
      "command": "node",
      "args": ["index.js"],
      "env": {
        "WDK_SEED": "your twelve word seed phrase here"
      }
    }
  }
}

Then in VS Code:

  1. Open .vscode/mcp.json and click Start above the server config
  2. Open GitHub Copilot Chat and select Agent mode
  3. Click Tools to verify the MCP tools are available

→ VS Code MCP documentation

Try it out

Ask your AI assistant:

What's my ethereum address?
Check my BTC balance
What's the current price of ETH in USD?
Send 10 USDt to 0x742d35Cc6634C0532925a3b844Bc9e7595f0bEb7 on ethereum

Write operations (sending, swapping, bridging) will show a confirmation dialog before executing. You must explicitly approve each transaction.


Optional Capabilities

Add more capabilities by installing additional packages and enabling them on the server:

Do not enable Velora beta.8, USD₮0 bridge beta.10, or Aave beta.7 with EVM wallet beta.19. These adapters reject the provider on manager-derived accounts when the protocol is constructed, so the example below omits them. Check the installed wallet and adapter versions before registering them; see EVM provider compatibility. A separate direct account does not inherit the server's registered account controls.

Additional capabilities
import { INDEXER_TOOLS, FIAT_TOOLS } from '@tetherto/wdk-mcp-toolkit'
import MoonPayProtocol from '@tetherto/wdk-protocol-fiat-moonpay'

// Indexer - transaction history
server.useIndexer({ apiKey: process.env.WDK_INDEXER_API_KEY })

// Fiat protocol
server.registerProtocol('ethereum', 'moonpay', MoonPayProtocol, {
  apiKey: process.env.MOONPAY_API_KEY
})

// Register the corresponding tools
server.registerTools([
  ...INDEXER_TOOLS,
  ...FIAT_TOOLS
])

Environment Variables

VariableRequiredDescription
WDK_SEEDYesBIP-39 seed phrase for wallet derivation
WDK_INDEXER_API_KEYNoEnables INDEXER_TOOLS - get a key
MOONPAY_API_KEYNoEnables FIAT_TOOLS - MoonPay Dashboard

Next Steps

  • Configuration - Wallets, tokens, protocols, custom tools, and security
  • API Reference - All 35 built-in MCP tools with parameters and schemas

Need Help?

On this page