Binance Trading Agent MCP Server
by Axmetov999
README.md
# Binance Trading Agent (MCP)
> A safety-first **Model Context Protocol (MCP) server** that connects any LLM client (Claude, Cursor, custom agents) to the **Binance Spot API** — with a hard focus on guardrails, testnet-first development, and auditable order flow.
<p>
<img alt="status" src="https://img.shields.io/badge/status-Phase%201--done-brightgreen">
<img alt="protocol" src="https://img.shields.io/badge/protocol-MCP-blue">
<img alt="exchange" src="https://img.shields.io/badge/exchange-Binance%20Spot-f0b90b">
<img alt="safety" src="https://img.shields.io/badge/mode-testnet--first-green">
<img alt="license" src="https://img.shields.io/badge/license-MIT-lightgrey">
</p>
---
## Phase 1 — Read-Only Tools
7 read-only MCP tools for reading market data and account info on Binance Spot Testnet.
| Tool | Type | Input | Purpose |
|------|------|-------|---------|
| `get_spot_price` | public | symbol | price, 24h change, bid/ask, high/low, volume |
| `get_klines` | public | symbol, interval, limit | candlestick data |
| `get_order_book` | public | symbol, limit | order book depth |
| `get_symbol_rules` | public | symbol | minQty, stepSize, tickSize, minNotional |
| `get_account_balances` | private | hideZero | free/locked balances, canTrade |
| `get_open_orders` | private | symbol? | open orders |
| `get_trade_history` | private | symbol, limit | recent trades |
**Not in Phase 1:** order placement/cancellation, futures, margin, OCO, websockets, autonomous actions.
## Architecture
```
src/
binance/ Layer 1 — Binance HTTP client
client.ts signedRequest / publicRequest, retry, timeout
signing.ts HMAC SHA256
errors.ts typed error classes
rateLimiter.ts weight tracking + backoff
types.ts response types
services/ Layer 2 — domain services (normalization)
marketDataService.ts
accountService.ts
tools/ Layer 3 — MCP tools (1 file = 1 tool)
getSpotPrice.ts ... getTradeHistory.ts
config.ts .env validation (zod)
logger.ts structured JSON logging
server.ts MCP server registration
tests/
unit/ signing, errors, rateLimiter, services, client
```
## Getting started
```bash
# 1. Install
npm install
# 2. Configure (Binance Spot TESTNET keys)
cp .env.example .env
# Edit .env with your testnet keys
# 3. Run the MCP server
npm run dev
```
### Connect to Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"binance": {
"command": "npx",
"args": ["tsx", "/path/to/binance-trading-agent-mcp/src/server.ts"]
}
}
}
```
### Connect to Cursor
Add to `.cursor/mcp.json`:
```json
{
"mcpServers": {
"binance": {
"command": "npx",
"args": ["tsx", "/path/to/binance-trading-agent-mcp/src/server.ts"]
}
}
}
```
## Example tool calls
**Get BTC price:**
```
tool: get_spot_price
args: { "symbol": "BTCUSDT" }
```
**Get 1h klines (last 100 candles):**
```
tool: get_klines
args: { "symbol": "BTCUSDT", "interval": "1h", "limit": 100 }
```
**Get order book (top 20 levels):**
```
tool: get_order_book
args: { "symbol": "ETHUSDT", "limit": 20 }
```
**Get symbol trading rules:**
```
tool: get_symbol_rules
args: { "symbol": "BTCUSDT" }
```
**Get account balances:**
```
tool: get_account_balances
args: { "hideZero": true }
```
**Get open orders:**
```
tool: get_open_orders
args: { "symbol": "BTCUSDT" }
```
**Get trade history:**
```
tool: get_trade_history
args: { "symbol": "BTCUSDT", "limit": 50 }
```
## Tests
```bash
# Run all unit tests
npm test
# Watch mode
npm run test:watch
```
## Tech stack
- **Language:** TypeScript (Node 20+)
- **Protocol:** Model Context Protocol (MCP)
- **Exchange API:** Binance Spot REST
- **Tooling:** vitest, zod, pino
## Roadmap
- [x] **Phase 1** — Binance client + 7 read-only tools
- [ ] **Phase 2** — Safe testnet trading: risk/policy layer, `preview`/`place`/`cancel`, full logging
- [ ] **Phase 3** — Strategy design + backtesting on historical klines + paper trading
- [ ] **Phase 4** — *(optional)* minimal real-money trading with strict limits
- [ ] **Phase 5** — *(optional)* futures support
## Disclaimer
This is engineering infrastructure, **not financial advice**. Automated trading with real funds carries real risk of loss. Use the Binance **Testnet** and `dry_run` mode by default. You are solely responsible for any keys, funds, strategy, and regulatory compliance in your jurisdiction.
## License
MIT
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues