Skip to main content
Glama
Yumin-Kim

HTS MetaTrader5 Trading MCP

by Yumin-Kim
README.md
# HTS(MetaTrader5) Trading MCP

A Model Context Protocol (MCP) server that connects Claude AI with MetaTrader 5 for forex trading operations and market data analysis.

## Features

### Market Data

- **Historical Candles**: Retrieve OHLC data for any forex symbol and timeframe
- **Multi-Timeframe Analysis**: Fetch candle data across multiple timeframes simultaneously
- **Account Information**: View trading account details and metrics
- **Position Tracking**: Monitor all open positions
- **Order Management**: Track pending orders

### Trading Operations

- **Order Placement**: Create market and pending orders (BUY, SELL, LIMIT, STOP)
- **Order Modification**: Update price levels, SL/TP, and expiration times
- **Order Cancellation**: Cancel pending orders
- **Position Management**: Close positions (full/partial) and modify SL/TP levels

## Architecture

The system consists of two components:

1. **MCP Server** (Node.js/TypeScript)
   - Exposes tools via Model Context Protocol
   - Manages command queue for EA communication
   - Provides HTTP API for MT5 integration

2. **MetaTrader 5 EA** (MQL5)
   - Executes trading operations
   - Retrieves market data
   - Communicates with MCP server via HTTP

## Installation

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

## Configuration

Create a `.env` file:

```env
HTTP_PORT=3000
```

## Usage

### Start the MCP Server

```bash
npm start
```

### Configure Claude Desktop

Add to your Claude desktop config:

```json
{
  "mcpServers": {
    "mcp-server": {
      "command": "node",
      "args": ["/path/to/trading-mcp/dist/index.js"]
    }
  }
}
```

### Deploy MT5 EA

1. Copy `ea/info-bot.mq5` to your MetaTrader 5 `Experts` folder
2. Compile the EA in MetaEditor
3. Attach the EA to any chart
4. Ensure the EA has the correct HTTP endpoint configured

## API Tools

### Market Data Tools

- `get_candles` - Historical candle data for a symbol
- `get_bulk_candles` - Multi-timeframe candle data
- `get_accounts` - All trading accounts
- `get_account` - Specific account by number
- `get_positions` - All open positions
- `get_orders` - All pending orders

### Trading Tools

- `open_order` - Create new trading order
- `modify_order` - Update pending order
- `cancel_order` - Cancel pending order
- `close_position` - Close open position
- `modify_position` - Update position SL/TP
- `get_command_queue` - View pending commands
- `get_handler_queue` - View command results

TDQS

A3.9/5.0

Scored across 14 tools

Disambiguation5/5

Each tool targets a distinct resource/action: accounts, candles, positions, orders, and internal queues. Even similar tools like get_accounts vs get_account and get_candles vs get_bulk_candles are clearly differentiated by singular/plural and bulk/single scope.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., get_accounts, open_order, close_position). The naming is uniform and predictable, with no mixed styles or vague verbs.

Tool Count5/5

14 tools is well-scoped for a trading server, covering account info, market data, order management, position management, and internal queue monitoring. Each tool earns its place without feeling excessive or sparse.

Completeness4/5

Core trading lifecycle is covered: accounts (get), market data (candles), pending orders (open/modify/cancel/list), and open positions (close/modify/list). Minor gaps include lack of real-time price quotes and historical trade/deal history, but these are workaroundable.

Maintenance

ActivityInactive
ResponsivenessNo issues