# BloFin MCP Server

A Model Context Protocol (MCP) server for the [BloFin](https://blofin.com/) cryptocurrency exchange API. Provides tools for market data, account management, and trading operations.

## Features

### Public Data (no authentication required)
- `get_instruments` - Get available trading instruments and contract specs
- `get_tickers` - Get latest prices, bid/ask, 24h volume
- `get_orderbook` - Get order book depth
- `get_trades` - Get recent trades
- `get_mark_price` - Get mark/index prices
- `get_candlesticks` - Get OHLCV candlestick data
- `get_funding_rate` - Get current funding rates
- `get_funding_rate_history` - Get historical funding rates

### Account (authentication required)
- `get_balance` - Get futures account balance
- `get_positions` - Get open positions
- `get_leverage_info` - Get leverage info for an instrument
- `set_leverage` - Set leverage for an instrument
- `get_margin_mode` - Get current margin mode for an instrument
- `set_margin_mode` - Set margin mode for an instrument
- `get_position_mode` - Get current position mode
- `set_position_mode` - Set position mode
- `get_account_config` - Get account configuration

### Trading (authentication required)
- `place_order` - Place a new order (market, limit, post_only, fok, ioc)
- `cancel_order` - Cancel an order
- `batch_orders` - Place multiple orders at once
- `cancel_batch_orders` - Cancel multiple orders at once
- `close_position` - Close a position
- `get_open_orders` - Get pending orders
- `get_order_history` - Get order history
- `get_order_detail` - Get specific order details
- `get_fills_history` - Get trade fill history
- `place_tpsl` - Place take-profit/stop-loss order
- `cancel_tpsl` - Cancel a take-profit/stop-loss order
- `get_pending_tpsl` - Get pending TP/SL orders
- `get_tpsl_history` - Get TP/SL order history
- `place_algo_order` - Place an algo order (trigger/conditional)
- `cancel_algo_order` - Cancel algo orders
- `get_pending_algo_orders` - Get pending algo orders
- `get_algo_order_history` - Get algo order history

### Asset Management (authentication required)
- `get_asset_balances` - Get balances across account types
- `fund_transfer` - Transfer funds between accounts
- `get_fund_transfer_history` - Get transfer history
- `get_deposit_history` - Get deposit history
- `get_withdrawal_history` - Get withdrawal history
- `get_apikey_info` - Get API key information

## Important Risk Notice

- Trading tools can place and cancel real orders.
- Use demo environment first, then switch to production only when ready.
- Create API keys with least privilege and restrict by IP whenever possible.
- Never share your API key, secret, or passphrase.

## Tool Coverage

Current implementation registers **40 tools** in total:

- Public Market Data: 8 tools
- Account: 9 tools
- Trading: 17 tools
- Asset Management: 6 tools

## Getting Your API Key

1. Go to [blofin.com](https://blofin.com/) and log in (or create an account)
2. Navigate to **APIs** page
3. Click **Create API Key** and select **BloFin MCP** as the API type
4. Set your permissions (read-only for market data, or enable trading as needed)
5. Save your **API Key**, **Secret Key**, and **Passphrase** — you'll need them for configuration below

## Environment Variables

| Variable | Required | Description |
|---|---|---|
| `BLOFIN_API_KEY` | Yes | Your BloFin API key |
| `BLOFIN_API_SECRET` | Yes | Your BloFin API secret |
| `BLOFIN_PASSPHRASE` | Yes | Your BloFin API passphrase |
| `BLOFIN_BASE_URL` | No | API base URL (defaults to demo trading) |

### Base URLs

- Demo Trading: `https://demo-trading-openapi.blofin.com` (default)
- Production: `https://openapi.blofin.com`

## Install and Build

```bash
npm install
npm run typecheck
npm run build
```

## Installation

### Claude Desktop (Extension)

Download the latest `blofin-mcp.mcpb` from [GitHub Releases](https://github.com/blofin/blofin-mcp/releases) and double-click to install. Claude Desktop will prompt you to enter your API Key, API Secret, and Passphrase.

### Claude Desktop (Manual)

Add to your Claude Desktop config (`Settings → Developer → Edit Config`):

```json
{
  "mcpServers": {
    "blofin": {
      "command": "npx",
      "args": ["-y", "blofin-mcp"],
      "env": {
        "BLOFIN_API_KEY": "your-api-key",
        "BLOFIN_API_SECRET": "your-api-secret",
        "BLOFIN_PASSPHRASE": "your-passphrase",
        "BLOFIN_BASE_URL": "https://openapi.blofin.com"
      }
    }
  }
}
```

### Claude Code

```bash
claude mcp add blofin -- npx -y blofin-mcp
```

Then set environment variables in your shell profile or `.env` file:

```bash
export BLOFIN_API_KEY="your-api-key"
export BLOFIN_API_SECRET="your-api-secret"
export BLOFIN_PASSPHRASE="your-passphrase"
export BLOFIN_BASE_URL="https://openapi.blofin.com"
```

### Cursor

Add to `.cursor/mcp.json` in your project root (or global config at `~/.cursor/mcp.json`):

```json
{
  "mcpServers": {
    "blofin": {
      "command": "npx",
      "args": ["-y", "blofin-mcp"],
      "env": {
        "BLOFIN_API_KEY": "your-api-key",
        "BLOFIN_API_SECRET": "your-api-secret",
        "BLOFIN_PASSPHRASE": "your-passphrase",
        "BLOFIN_BASE_URL": "https://openapi.blofin.com"
      }
    }
  }
}
```

### Windsurf

Add to your Windsurf MCP config (`~/.codeium/windsurf/mcp_config.json`):

```json
{
  "mcpServers": {
    "blofin": {
      "command": "npx",
      "args": ["-y", "blofin-mcp"],
      "env": {
        "BLOFIN_API_KEY": "your-api-key",
        "BLOFIN_API_SECRET": "your-api-secret",
        "BLOFIN_PASSPHRASE": "your-passphrase",
        "BLOFIN_BASE_URL": "https://openapi.blofin.com"
      }
    }
  }
}
```

### Cline (VS Code)

Open Cline MCP settings (`Cline → MCP Servers → Configure`) and add:

```json
{
  "mcpServers": {
    "blofin": {
      "command": "npx",
      "args": ["-y", "blofin-mcp"],
      "env": {
        "BLOFIN_API_KEY": "your-api-key",
        "BLOFIN_API_SECRET": "your-api-secret",
        "BLOFIN_PASSPHRASE": "your-passphrase",
        "BLOFIN_BASE_URL": "https://openapi.blofin.com"
      }
    }
  }
}
```

### OpenClaw

Add `"mcpServers"` to your `~/.openclaw/openclaw.json` (top-level field, alongside `identity`, `agent`, etc.):

```json5
{
  "identity": { "name": "Clawd", "emoji": "🦞" },
  "agent": { "workspace": "~/.openclaw/workspace" },

  // Add this section ↓
  "mcpServers": {
    "blofin": {
      "command": "npx",
      "args": ["-y", "blofin-mcp"],
      "env": {
        "BLOFIN_API_KEY": "your-api-key",
        "BLOFIN_API_SECRET": "your-api-secret",
        "BLOFIN_PASSPHRASE": "your-passphrase",
        "BLOFIN_BASE_URL": "https://openapi.blofin.com"
      }
    }
  }
}
```

If your `openclaw.json` already has a `"mcpServers"` section with other servers, just add `"blofin": { ... }` inside it.

Restart OpenClaw after saving. The agent will automatically discover the 40 BloFin tools.


## Open Source Project Files

- License: `LICENSE`
- Contributing guide: `CONTRIBUTING.md`
- Security policy: `SECURITY.md`
- Community behavior policy: `CODE_OF_CONDUCT.md`
- Change history: `CHANGELOG.md`

## Reporting and Support

- Bug reports and feature requests: GitHub Issues
- Security issues: follow `SECURITY.md`
- API reference: [BloFin API Docs](https://docs.blofin.com/index.html)
