Configuration

January 29, 2026 ยท View on GitHub

Universal Crypto MCP can be configured through environment variables, a config file, or CLI arguments.

Environment Variables

Core Settings

VariableDescriptionDefault
NODE_ENVEnvironment modeproduction
LOG_LEVELLogging level (DEBUG, INFO, WARN, ERROR)INFO
MCP_TRANSPORTTransport mode (stdio, http, sse)stdio
MCP_PORTHTTP/SSE server port3000

API Keys

VariableDescriptionRequired For
COINGECKO_API_KEYCoinGecko Pro API keyEnhanced market data
BINANCE_API_KEYBinance API keyTrading tools
BINANCE_API_SECRETBinance API secretTrading tools
BINANCE_US_API_KEYBinance US API keyUS trading
BINANCE_US_API_SECRETBinance US API secretUS trading
CRYPTOPANIC_API_KEYCryptoPanic API keyNews tools
ETHERSCAN_API_KEYEtherscan API keyContract verification
INFURA_API_KEYInfura API keyRPC fallback
ALCHEMY_API_KEYAlchemy API keyRPC fallback

x402 Payment Settings

VariableDescriptionDefault
X402_PRIVATE_KEYEVM private key for payments-
X402_CHAINDefault chainarbitrum
X402_MAX_AMOUNTMaximum payment amount1.0
X402_AUTO_PAYEnable automatic paymentsfalse

Wallet Settings

VariableDescriptionDefault
PRIVATE_KEYEVM wallet private key-
MNEMONICHD wallet mnemonic phrase-
RPC_URLCustom RPC endpointChain default

Configuration File

Create a .universal-crypto-mcp.json file in your project root or home directory:

{
  "transport": "stdio",
  "logLevel": "INFO",
  "modules": {
    "trading": {
      "enabled": true,
      "exchanges": ["binance", "binance-us"]
    },
    "marketData": {
      "enabled": true,
      "providers": ["coingecko", "dexpaprika"]
    },
    "defi": {
      "enabled": true,
      "protocols": ["aave", "uniswap", "compound"]
    },
    "wallets": {
      "enabled": true,
      "chains": ["ethereum", "arbitrum", "base", "polygon"]
    },
    "payments": {
      "enabled": true,
      "x402": {
        "chain": "arbitrum",
        "maxAmount": "1.0",
        "autoPay": false
      }
    }
  },
  "rpc": {
    "ethereum": "https://eth.llamarpc.com",
    "arbitrum": "https://arb1.arbitrum.io/rpc",
    "base": "https://mainnet.base.org",
    "polygon": "https://polygon-rpc.com"
  }
}

CLI Arguments

Override settings via command line:

# Transport mode
npx @nirholas/universal-crypto-mcp --http --port 8080

# Log level
npx @nirholas/universal-crypto-mcp --log-level DEBUG

# Enable specific modules
npx @nirholas/universal-crypto-mcp --modules trading,market-data

# Custom config file
npx @nirholas/universal-crypto-mcp --config ./my-config.json

Priority Order

Configuration is applied in this order (later overrides earlier):

  1. Default values
  2. Configuration file
  3. Environment variables
  4. CLI arguments

Module-Specific Configuration

Trading Module

{
  "modules": {
    "trading": {
      "enabled": true,
      "exchanges": ["binance"],
      "sandbox": false,
      "defaultPairs": ["BTC/USDT", "ETH/USDT"]
    }
  }
}

DeFi Module

{
  "modules": {
    "defi": {
      "enabled": true,
      "protocols": ["aave", "uniswap", "compound"],
      "slippageTolerance": 0.5,
      "gasMultiplier": 1.2
    }
  }
}

Wallet Module

{
  "modules": {
    "wallets": {
      "enabled": true,
      "chains": ["ethereum", "arbitrum"],
      "confirmations": 1,
      "gasStrategy": "fast"
    }
  }
}

Security Best Practices

Never Commit Secrets

Add to your .gitignore:

.env
.env.local
*.key
*-key.json

Use Environment Variables

Store sensitive data in environment variables, not config files:

export X402_PRIVATE_KEY="0x..."
export BINANCE_API_KEY="..."
export BINANCE_API_SECRET="..."

Limit Permissions

When using API keys:

  • Enable only required permissions
  • Use IP whitelisting when available
  • Set spending limits for exchange APIs

Test with Small Amounts

Always test with small amounts before enabling larger transactions:

{
  "modules": {
    "payments": {
      "x402": {
        "maxAmount": "0.01"
      }
    }
  }
}

Next Steps