mcp-server-usdd

mcp-server-usdd

Enables management of USDD protocol vaults, PSM swaps, savings, and token transfers across TRON, Ethereum, and BSC, plus protocol analytics and treasury insights.

Category
Visit Server

README

mcp-server-usdd

License: MIT Networks TypeScript MCP USDD

An MCP server for the USDD protocol across TRON, Ethereum, and BNB Smart Chain (plus internal testnets). Covers Vault/CDP, PSM, USDD Savings, token transfers, and protocol analytics.

Scope

Current implementation covers:

  • Vault lifecycle: open, deposit collateral, mint USDD, repay, withdraw, close
  • PSM lifecycle: inspect fees and routes, swap into USDD, swap out of USDD
  • Savings lifecycle: inspect USDD Savings, deposit, withdraw
  • Risk and monitoring for vaults: summaries, oracle status, collateral buffers
  • Token preflight checks: balances, allowances, approvals
  • Token transfers: two-step preview → confirm flow for TRX, TRC20, and EVM native/ERC20
  • Protocol analytics: chain metrics, collateral prices, PSM route metrics, treasury, Smart Allocator, proof of reserve

Supported Networks

Network Key Notes
TRON tron TRON-native vault and PSM support
Ethereum eth Vault, PSM, USDD Savings
BNB Smart Chain bsc Mirrors ETH deployment structure
TRON Nile tron_nile Internal testnet deployment
Ethereum Sepolia eth_sepolia Internal testnet deployment
BSC Testnet bsc_testnet Internal testnet deployment

Prerequisites

  • Node.js 20+
  • Optional but recommended:
    • TRONGRID_API_KEY for more reliable TRON access
    • dedicated ETH_RPC_URL
    • dedicated BSC_RPC_URL

Developer

Installation

git clone https://github.com/decentralized-usd/mcp-server-usdd
cd mcp-server-usdd
npm install

Usage

npm start
npm run start:http
npm run dev

Configuration

Wallet Modes

The server supports two signing modes:

  • Browser mode (recommended): connect a TronLink-compatible browser wallet and sign in browser.
  • Agent mode: use encrypted local private keys stored in ~/.agent-wallet/.

For TRON writes, each Claude session shows a one-time signing-mode confirmation reminder before the first write.

You can also manage wallets via CLI or MCP tools:

CLI (agent-wallet)

The server uses @bankofai/agent-wallet for encrypted local wallet storage. On first startup it will automatically initialize ~/.agent-wallet/ and create a default wallet if none exists.

# Import an existing private key or mnemonic
npx agent-wallet add

# Generate a new wallet
npx agent-wallet generate

# List all wallets
npx agent-wallet list

# Switch active wallet
npx agent-wallet activate <wallet-id>

MCP Tools (runtime)

Tool Description
get_wallet_address Shows current address
connect_browser_wallet Connect TronLink / browser wallet for signing
set_wallet_mode Switch between browser and agent signing
get_wallet_mode Show current signing mode and addresses
list_wallets List wallets with per-family active status (tron and evm)
set_active_wallet Switch active wallet by ID, optionally scoped by walletType (tron/evm)

Client Configuration

Claude Desktop

Add the following config to:

~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "mcp-server-usdd": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@usdd/mcp-server-usdd"],
      "env": {
        "TRONGRID_API_KEY": "your_trongrid_api_key"
      }
    }
  }
}

Claude Code

Create .mcp.json in the project root directory:

{
  "mcpServers": {
    "mcp-server-usdd": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@usdd/mcp-server-usdd"],
      "env": {
        "TRONGRID_API_KEY": "your_trongrid_api_key"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "mcp-server-usdd": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@usdd/mcp-server-usdd"],
      "env": {
        "TRONGRID_API_KEY": "your_trongrid_api_key"
      }
    }
  }
}

Tools

Wallet & Network

Tool Description Write?
get_supported_networks List supported networks No
set_network Set default network for one family (tron/eth/bsc), supports aliases like mainnet, nile Yes
get_network Get per-family default networks No
get_wallet_mode Get active wallet signing mode (agent/browser) No
set_wallet_mode Switch active signing mode Yes
connect_browser_wallet Connect a browser wallet and activate browser mode Yes
get_wallet_address Show current address for the target network No
list_wallets List wallets and per-family active pointers (tron/evm) No
set_active_wallet Switch active wallet by ID (supports optional walletType) Yes
import_wallet Import private key/mnemonic into encrypted local store Yes

Common

Tool Description Write?
get_protocol_overview Show configured protocol addresses, ilks, PSMs, and ceilings No
get_supported_ilks List configured collateral types and PSM joins No
get_native_balance Read native balance (TRX / ETH / BNB) No
get_token_balance Read ERC20/TRC20 balance No
check_allowance Read ERC20/TRC20 allowance and compare against an optional amount No
approve_token Approve token allowance Yes

Vault

Tool Description Write?
get_oracle_status Inspect oracle and liquidation configuration for an ilk No
get_user_vaults List vault IDs for a wallet No
get_vault_summary Show collateral, debt, and liquidation metrics No
analyze_vault_risk Summarize risk with warnings No
open_vault Open a new vault via DSProxy Yes
deposit_and_mint Open-and-mint or add collateral and mint Yes
mint_usdd Draw more USDD from a vault Yes
repay_usdd Repay vault debt Yes
withdraw_collateral Withdraw collateral from a vault Yes
close_vault Wipe all debt and free collateral Yes

PSM

Tool Description Write?
get_psm_status Inspect PSM fees and enablement No
get_psm_metrics Get PSM swap metrics by route (fromToken/toToken/available/fee) No
psm_swap_to_usdd Swap gem into USDD Yes
psm_swap_from_usdd Swap USDD into gem Yes

USDD Savings

Tool Description Write?
get_savings_status Show USDD Savings metrics No
deposit_savings Deposit USDD into sUSDD Yes
withdraw_savings Withdraw USDD from sUSDD Yes

Token Transfers

Two-step preview → confirm flow for safe asset transfers. The AI must present the transfer details to the user and wait for explicit confirmation before executing.

Tool Description Write?
prepare_token_transfer Preview a native or token transfer; returns a confirmationId and transfer details for user review No
confirm_token_transfer Execute a previously prepared transfer after user has explicitly confirmed Yes

Supports:

  • TRX (TRON native)
  • TRC20 tokens (USDD, USDT, WBTC, etc.)
  • ETH / BNB (EVM native)
  • ERC20 tokens on Ethereum and BSC

Protocol Metrics

Read-only analytics from mainnet data feeds.

Tool Description Write?
get_protocol_metrics Aggregated USDD protocol metrics (mainnet) No
get_chain_metrics Chain-level metrics for tron, eth, or bsc No
get_collateral_prices Latest collateral highest-price data from website API No
get_psm_metrics PSM route metrics: fromToken, toToken, available liquidity, fees No

Treasury

Tool Description Write?
get_treasury_summary Latest USDD treasury report summary (mainnet) No
get_jst_buyback_stats JST buyback and burn statistics from treasury data No

Smart Allocator

Tool Description Write?
get_smart_allocator_overview Smart Allocator overview: debt, invested amount, earnings, APY No
get_assets_breakdown Invested-asset breakdown by protocol, network, or asset No
get_proof_of_reserve Proof-of-reserve style platform investment details No
get_debt_overview Debt overview grouped by network vault No

Prompts

Prompt Description
open_usdd_vault Open a vault and verify post-trade risk
manage_vault_lifecycle Run full vault lifecycle flows
use_psm Use PSM with fee checks
use_savings Use USDD Savings with inspection and verification
review_vault_risk Explain risk for a vault
repay_and_close_vault Repay and close with verification

Architecture

mcp-server-usdd/
├── src/
│   ├── core/
│   │   ├── chains.ts
│   │   ├── abis.ts
│   │   ├── tools.ts
│   │   ├── prompts.ts
│   │   ├── resources.ts
│   │   ├── browser-signer.ts
│   │   └── services/
│   │       ├── clients.ts
│   │       ├── contracts.ts
│   │       ├── protocol.ts
│   │       ├── vault.ts
│   │       ├── psm.ts
│   │       ├── savings.ts
│   │       ├── tokens.ts
│   │       ├── transfer.ts        ← token/native transfer (prepare + confirm)
│   │       ├── treasury.ts        ← treasury report and JST buyback stats
│   │       ├── smart-allocator.ts ← Smart Allocator analytics
│   │       ├── website-metrics.ts ← protocol metrics, chain metrics, collateral prices
│   │       ├── wallet.ts
│   │       └── utils.ts
│   ├── index.ts
│   └── server/
│       ├── server.ts
│       └── http-server.ts
└── build/

Notes

  • Vault writes assume the configured wallet can sign on the target chain.
  • All tools default to the family-specific defaults set by set_network; if network is omitted, tron-family default is used unless the tool call explicitly passes network.
  • ERC20/TRC20 flows often require approve_token first.
  • Browser mode now supports real transaction signing on TRON networks (tron, tron_nile) via tronlink-signer (TronLink/TIP-6963 flow). EVM networks currently continue to use agent-wallet signing.
  • deposit_and_mint is idempotent with respect to vault creation: it checks for an existing vault for the given ilk before opening a new one. If no vault exists, it submits two separate transactions — open then lockGemAndDraw — to avoid combined-tx reliability issues on TRON.
  • Token transfers use a two-step flow: prepare_token_transfer returns a preview and confirmationId; confirm_token_transfer executes only after the user explicitly approves. Pending confirmations expire after 10 minutes.
  • Protocol analytics tools (get_protocol_metrics, get_chain_metrics, get_collateral_prices, etc.) read from mainnet data feeds only — they do not reflect testnet state.
  • TRON, ETH, BSC, and internal testnet deployments have similar protocol structure but different addresses and token decimals.
  • This version intentionally excludes migration and auction actions so we can iterate the Vault + PSM + USDD Savings core first.

Security Considerations

  • Private keys are encrypted and stored locally in ~/.agent-wallet/.
  • Private keys are never returned by MCP tools.
  • The optional AGENT_WALLET_PASSWORD is intended for automation and CI environments.
  • Write operations should be treated as state-changing actions and reviewed carefully before execution.
  • Vault prompts include risk-review steps so borrowing decisions are checked against current collateral health.
  • Test on a safe environment or with small amounts before using mainnet-sized positions.
  • Be cautious with large or unlimited token approvals when using approve_token.
  • Never share local MCP client configuration files if they contain private keys or sensitive RPC credentials.

Example Conversations

Vault

  • "What vault types are available on Ethereum?" → AI calls get_supported_ilks with network=eth and summarizes the supported vault collateral types.
  • "Open a TRX-A/USDT-A/WBTC-A vault on Tron and mint 500 USDD" → AI uses open_usdd_vault: checks wallet, reviews oracle status, executes deposit_and_mint (auto-opens a new vault if none exists for that ilk), then verifies the new vault risk.
  • "Am I close to liquidation on vault 123?" → AI calls get_vault_summary and analyze_vault_risk, then explains the health factor and collateral buffer.
  • "Repay part of my vault debt on BSC" → AI uses manage_vault_lifecycle with action=repay: checks USDD balance and allowance, calls repay_usdd, then verifies the updated vault state.
  • "Close my vault and withdraw the collateral" → AI uses repay_and_close_vault: checks debt, balance, allowance, calls close_vault, then confirms the vault state after repayment.

PSM

  • "What are the current PSM fees on Ethereum?" → AI calls get_psm_status with network=eth and reports fee-in, fee-out, and whether swaps are enabled.
  • "Show me available PSM liquidity for USDT on TRON" → AI calls get_psm_metrics with the PSM-USDT market and reports available amounts and fees for both directions.
  • "Swap 10,000 USDT into USDD through the PSM" → AI uses use_psm: checks PSM status, then calls psm_swap_to_usdd and reports the transaction result.
  • "Swap 5,000 USDD back to USDC on BSC" → AI calls get_psm_status, then executes psm_swap_from_usdd and reminds the user to re-check balances.

Token & Balances

  • "What is my USDD balance on Tron?" → AI calls get_protocol_overview to identify the USDD token address, then calls get_token_balance.
  • "Do I have enough allowance for the USDT PSM?" → AI calls check_allowance with the token and PSM spender, then suggests approve_token only if needed.
  • "Send 100 USDD to TXxxx... on Tron" → AI calls prepare_token_transfer and displays the transfer preview (from, to, amount, balance). After the user confirms, AI calls confirm_token_transfer to execute.
  • "Transfer 0.5 ETH to 0xabc..." → AI calls prepare_token_transfer for native ETH, presents the details, then waits for user approval before executing.

USDD Savings

  • "What is the current USDD Savings status on Ethereum?" → AI calls get_savings_status and summarizes total assets, savings rate, and wallet shares.
  • "Deposit 2,000 USDD into sUSDD" → AI uses use_savings: checks savings status, calls deposit_savings, then re-checks savings metrics.
  • "Withdraw 500 USDD from sUSDD on BSC" → AI calls get_savings_status, executes withdraw_savings, and confirms the updated share balance.

Protocol Analytics

  • "What are the overall USDD protocol metrics?" → AI calls get_protocol_metrics and reports total collateral, debt ceiling, and utilization.
  • "Show me TRON chain metrics" → AI calls get_chain_metrics with chain=tron and summarizes collateral breakdown and USDD supply on TRON.
  • "What are the latest collateral prices?" → AI calls get_collateral_prices and lists each collateral type with its current highest price.

Treasury & Smart Allocator

  • "Show me the USDD treasury summary" → AI calls get_treasury_summary and reports reserve breakdown, collateral ratio, and recent changes.
  • "How much JST has been bought back and burned?" → AI calls get_jst_buyback_stats and summarizes cumulative JST buyback volume and burn totals.
  • "What is the Smart Allocator overview?" → AI calls get_smart_allocator_overview and reports total debt allocated, current invested amount, accumulated earnings, and APY.
  • "Break down Smart Allocator investments by protocol" → AI calls get_assets_breakdown with dimension=protocol and lists each DeFi protocol with its allocated amount.
  • "Show me the Smart Allocator proof of reserve" → AI calls get_proof_of_reserve and details each platform investment with amounts and verification status.
  • "What does the Smart Allocator debt look like by network?" → AI calls get_debt_overview and summarizes debt positions grouped by TRON/ETH/BSC vaults.

License

MIT License Copyright (c) 2026 USDD

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured