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
| Variable | Description | Default |
|---|---|---|
NODE_ENV | Environment mode | production |
LOG_LEVEL | Logging level (DEBUG, INFO, WARN, ERROR) | INFO |
MCP_TRANSPORT | Transport mode (stdio, http, sse) | stdio |
MCP_PORT | HTTP/SSE server port | 3000 |
API Keys
| Variable | Description | Required For |
|---|---|---|
COINGECKO_API_KEY | CoinGecko Pro API key | Enhanced market data |
BINANCE_API_KEY | Binance API key | Trading tools |
BINANCE_API_SECRET | Binance API secret | Trading tools |
BINANCE_US_API_KEY | Binance US API key | US trading |
BINANCE_US_API_SECRET | Binance US API secret | US trading |
CRYPTOPANIC_API_KEY | CryptoPanic API key | News tools |
ETHERSCAN_API_KEY | Etherscan API key | Contract verification |
INFURA_API_KEY | Infura API key | RPC fallback |
ALCHEMY_API_KEY | Alchemy API key | RPC fallback |
x402 Payment Settings
| Variable | Description | Default |
|---|---|---|
X402_PRIVATE_KEY | EVM private key for payments | - |
X402_CHAIN | Default chain | arbitrum |
X402_MAX_AMOUNT | Maximum payment amount | 1.0 |
X402_AUTO_PAY | Enable automatic payments | false |
Wallet Settings
| Variable | Description | Default |
|---|---|---|
PRIVATE_KEY | EVM wallet private key | - |
MNEMONIC | HD wallet mnemonic phrase | - |
RPC_URL | Custom RPC endpoint | Chain 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):
- Default values
- Configuration file
- Environment variables
- 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
- First Tool - Use your first crypto tool
- Deployment - Deploy to production