Skip to main content
Glama
questflowai

Aster Finance MCP Server

by questflowai
README.md
# Aster Finance MCP Server

[![Powered by Questflow](https://img.shields.io/badge/Powered%20by-Questflow-blue?style=flat-square)](https://questflow.ai)

This project is an MCP (Model Context Protocol) Server that provides a comprehensive set of tools to interact with the [Aster Finance Futures API](https://github.com/asterdex/api-docs/blob/master/aster-finance-futures-api.md). It allows AI agents and other MCP-compatible clients to access market data, manage trades, and query account information on the Aster exchange.

## Features

- **Full REST API Coverage**: Implements all RESTful endpoints from the Aster Futures API documentation (excluding WebSocket streams).
- **Market Data**: Access real-time and historical market data, including order books, trades, klines, and ticker information.
- **Account & Trading**: Full trading capabilities, including placing/canceling orders, managing positions, and checking account balances.
- **Secure**: Uses API keys stored securely as environment variables, never hardcoded.
- **Stdio Transport**: Runs as a standard I/O process, making it easy to integrate with MCP hosts.

## Installation & Configuration

This server is designed to be run by an MCP host environment.

1.  **Install Dependencies & Build**:

    You can use either `npm` or `pnpm` to install the project dependencies and build the server.

    *Using npm:*
    ```bash
    npm install
    npm run build
    ```

    *Or using pnpm:*
    ```bash
    pnpm install
    pnpm run build
    ```

2.  **Configure the MCP Host**:
    Add the following configuration to your MCP settings file (e.g., `cline_mcp_settings.json`). This tells the host how to launch the server and provides the necessary API credentials.

    ```json
    {
      "mcpServers": {
        "aster": {
          "command": "node",
          "args": [
            "/path/to/your/aster-mcp-server/build/index.js"
          ],
          "env": {
            "ASTER_API_KEY": "YOUR_ASTER_API_KEY",
            "ASTER_API_SECRET": "YOUR_ASTER_SECRET_KEY"
          },
          "disabled": false,
          "autoApprove": []
        }
      }
    }
    ```
    Replace `/path/to/your/aster-mcp-server` with the absolute path to this project directory, and fill in your actual `ASTER_API_KEY` and `ASTER_API_SECRET`.

## Available Tools

The server exposes the following tools, categorized by function:

### Market Data Endpoints

| Tool Name          | Description                                            |
| ------------------ | ------------------------------------------------------ |
| `ping`             | Test connectivity to the Rest API.                     |
| `time`             | Get the current server time.                           |
| `exchangeInfo`     | Get current exchange trading rules and symbol info.    |
| `depth`            | Get the order book for a symbol.                       |
| `trades`           | Get recent market trades.                              |
| `historicalTrades` | Get older market historical trades.                    |
| `aggTrades`        | Get compressed, aggregate market trades.               |
| `klines`           | Get Kline/candlestick bars for a symbol.               |
| `indexPriceKlines` | Get Kline/candlestick bars for the index price.        |
| `markPriceKlines`  | Get Kline/candlestick bars for the mark price.         |
| `premiumIndex`     | Get Mark Price and Funding Rate.                       |
| `fundingRate`      | Get funding rate history.                              |
| `fundingInfo`      | Get funding rate configuration.                        |
| `ticker_24hr`      | 24-hour rolling window price change statistics.        |
| `ticker_price`     | Get the latest price for a symbol or symbols.          |
| `ticker_bookTicker`| Get the best price/qty on the order book.              |

### Account & Trade Endpoints

| Tool Name                 | Description                                            |
| ------------------------- | ------------------------------------------------------ |
| `setPositionMode`         | Change user's position mode (Hedge vs. One-way).       |
| `getPositionMode`         | Get user's current position mode.                      |
| `setMultiAssetsMode`      | Change user's Multi-Assets mode.                       |
| `getMultiAssetsMode`      | Get user's current Multi-Assets mode.                  |
| `placeOrder`              | Send in a new order.                                   |
| `placeBatchOrders`        | Place multiple orders at once.                         |
| `transferAsset`           | Transfer assets between futures and spot accounts.     |
| `queryOrder`              | Check an order's status.                               |
| `cancelOrder`             | Cancel an active order.                                |
| `cancelAllOpenOrders`     | Cancel all open orders on a symbol.                    |
| `cancelBatchOrders`       | Cancel multiple orders.                                |
| `countdownCancelAll`      | Auto-cancel all open orders after a countdown.         |
| `queryOpenOrder`          | Query a specific open order.                           |
| `getAllOpenOrders`        | Get all open orders on a symbol.                       |
| `getAllOrders`            | Get all account orders (active, canceled, or filled).  |
| `getBalance`              | Get futures account balance.                           |
| `getAccountInfo`          | Get current account information.                       |
| `setLeverage`             | Change initial leverage for a symbol.                  |
| `setMarginType`           | Change margin type (ISOLATED/CROSSED).                 |
| `modifyPositionMargin`    | Modify isolated position margin.                       |
| `getPositionMarginHistory`| Get position margin change history.                    |
| `getPositionInfo`         | Get current position information.                      |
| `getTradeList`            | Get trades for a specific account and symbol.          |
| `getIncomeHistory`        | Get income history.                                    |
| `getLeverageBrackets`     | Get notional and leverage brackets.                    |
| `getAdlQuantile`          | Get Position ADL Quantile Estimation.                  |
| `getForceOrders`          | Get user's force orders (liquidations/ADL).            |
| `getCommissionRate`       | Get user's commission rate for a symbol.               |

## Usage Example

Once the server is running, you can invoke its tools through your MCP client. For example, to get the current server time, you would make a `callTool` request like this:

```json
{
  "server_name": "aster",
  "tool_name": "time",
  "arguments": {}
}
```

To get the order book for BTCUSDT:

```json
{
  "server_name": "aster",
  "tool_name": "depth",
  "arguments": {
    "symbol": "BTCUSDT",
    "limit": 10
  }
}
```

---

*This MCP Server was proudly developed with the assistance of Questflow.*

TDQS

C2.6/5.0

Scored across 44 tools

Disambiguation4/5

Most tools have distinct purposes, but some overlap exists. For example, 'getAllOpenOrders' and 'queryOpenOrder' could be confused, and 'ticker_24hr', 'ticker_bookTicker', and 'ticker_price' are all price-related but serve different functions. Descriptions help clarify, but the sheer number of tools increases the risk of misselection.

Naming Consistency3/5

Naming conventions are mixed, with some tools using camelCase (e.g., 'getAccountInfo') and others using snake_case (e.g., 'ticker_24hr'). Verb styles vary, such as 'get', 'set', 'place', and 'modify', but they are generally readable. The inconsistency is noticeable but not chaotic.

Tool Count2/5

With 44 tools, the count is too high for typical MCP server purposes, making it heavy and potentially overwhelming for agents. While the domain (finance/trading) is complex, the tool surface could benefit from consolidation or better scoping to reduce cognitive load.

Completeness5/5

The tool set provides comprehensive coverage for a trading platform, including order management, account info, market data, and configuration. It supports full CRUD/lifecycle operations (e.g., place, query, cancel orders) and covers various aspects like funding, leverage, and transfers, leaving no obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues