kydlikebtc_mcp-server-bn
1
This project provides an MCP Server designed for Binance spot trading operations, allowing users to securely manage and execute trades through Binance's API. It includes features for order management, security considerations, and supports robust error handling.
mcp-server-cex-bn
This MCP Server provides a robust interface for Binance spot trading operations.
Features
Trading Operations
- Configure and store Binance API credentials securely
- Execute spot trading operations (LIMIT/MARKET orders)
- Monitor account balances
- Track and manage open orders
- Cancel existing orders
Tools
configure_api_keys
Securely store your Binance API credentials:
await configureBinanceApiKeys({
apiKey: 'your-api-key',
apiSecret: 'your-api-secret'
});
create_spot_order
Create LIMIT or MARKET orders:
// LIMIT order
await createSpotOrder({
symbol: 'BTCUSDT',
side: 'BUY',
type: 'LIMIT',
quantity: '0.001',
price: '40000'
});
// MARKET order
await createSpotOrder({
symbol: 'BTCUSDT',
side: 'BUY',
type: 'MARKET',
quantity: '0.001'
});
cancel_order
Cancel an existing order:
await cancelOrder({
symbol: 'BTCUSDT',
orderId: '12345678'
});
get_balances
Check your account balances:
const balances = await getBalances();
// Returns: { BTC: '0.1', USDT: '1000', ... }
get_open_orders
List all open orders:
const orders = await getOpenOrders({
symbol: 'BTCUSDT' // Optional: specify symbol
});
Security Considerations
- Never commit your API keys to version control
- Use environment variables or secure key storage
- Restrict API key permissions to only required operations
- Regularly rotate your API keys
Rate Limits
- Respect Binance API rate limits
- Default rate limits:
- 1200 requests per minute for order operations
- 100 requests per second for market data
- Implement proper error handling for rate limit errors
Error Handling
Common error scenarios:
- Invalid API credentials
- Insufficient balance
- Invalid order parameters
- Rate limit exceeded
- Network connectivity issues
Example error handling:
try {
await createSpotOrder({
symbol: 'BTCUSDT',
side: 'BUY',
type: 'LIMIT',
quantity: '0.001',
price: '40000'
});
} catch (error) {
if (error.code === -2010) {
console.error('Insufficient balance');
} else if (error.code === -1021) {
console.error('Rate limit exceeded');
}
}
Project Structure
.
├── src/
│ ├── index.ts # Server entry point
│ ├── services/
│ │ ├── binance.ts # Binance API integration
│ │ ├── keystore.ts # API key management
│ │ └── tools.ts # Trading tools implementation
│ └── types/
│ ├── binance.ts # Binance types
│ └── binance-connector.d.ts # API client types
├── README.md
├── README_CN.md
├── package.json
├── pnpm-lock.yaml
└── tsconfig.json
Development
- Set up environment variables:
create .env
file in the root directory, and set your Binance API credentials:
BINANCE_API_KEY=your_api_key_here
BINANCE_API_SECRET=your_secret_key_here
- Install dependencies:
pnpm install
Build the server:
pnpm build
For development with auto-rebuild:
pnpm watch
Installation
- Clone the repository
- Install dependencies:
pnpm install
- Configure your Binance API credentials in
.env
- Build and start the server:
pnpm build
pnpm start
### Debugging
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the [MCP Inspector](https://github.com/modelcontextprotocol/inspector), which is available as a package script:
```bash
pnpm inspector
The Inspector will provide a URL to access debugging tools in your browser.