Skip to main content
Glama
8nite

MCP MetaTrader 4 Server

by 8nite
README.md
# MCP MetaTrader 4 Server

A Model Context Protocol (MCP) server that provides cross-platform integration with MetaTrader 4 trading platform over network.

**Author**: 8nite (8nite@qmlab.io)

## Features

- **Account Information**: Get real-time account details (balance, equity, margin, etc.)
- **Market Data**: Retrieve current market prices for trading symbols
- **Order Management**: Place market and pending orders
- **Position Management**: View and close open positions
- **Trading History**: Access historical trading data
- **Backtesting**: Run backtests on Expert Advisors with detailed configuration
- **Expert Advisor Management**: List and manage available EAs
- **File-Based Fallback**: Robust status and results tracking when API endpoints fail
- **EA Development**: Remote EA creation, editing, sync, and compilation with error reporting
- **Cross-Platform**: Linux MCP server connects to Windows MT4 via HTTP

## Architecture

The integration uses HTTP communication between the MCP server and MT4:

1. **MCP Server** (Linux - Node.js/TypeScript) - Provides tools for Claude Code
2. **HTTP Bridge** (Windows - Node.js) - Converts HTTP requests to file I/O
3. **MT4 Expert Advisor** (Windows - MQL4) - Handles trading operations
4. **Network Communication** - JSON-based data exchange via HTTP API

## Setup

### 1. Install MCP Server (Linux Machine - 192.168.50.X)

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

### 2. Install HTTP Bridge (Windows Machine - 192.168.50.161)

1. Copy the `windows-server/` folder to your Windows machine
2. Install Node.js on Windows if not already installed
3. Navigate to the `windows-server` folder and run:
```cmd
npm install
npm start
```
4. The HTTP bridge will start on port 8080

### 3. Install MT4 Expert Advisor (Windows Machine)

**Option A: Ultimate MCP EA (Recommended)**
1. Copy `mcp/MCP_Ultimate.mq4` to your MT4 `MQL4/Experts/` folder
2. Compile the Expert Advisor in MetaEditor
3. Attach the Expert Advisor to any chart in MT4
4. Configure EA inputs:
   - `EnableFileReporting`: true (for enhanced reporting)
   - `EnableBacktestTracking`: true (for backtest monitoring)
   - `EnableVisualMode`: true (for on-chart status indicators)
   - Configure market data tracking options as needed
5. Ensure "Allow DLL imports" is enabled in MT4 settings

**Option B: Unified EA (Legacy)**
1. Copy `MT4_Files/MCPBridge_Unified.mq4` to your MT4 `MQL4/Experts/` folder
2. Follow same compilation and attachment process
3. Enhanced functionality but not as comprehensive as Ultimate version

**Option C: Basic EA (Legacy)**
1. Copy `MT4_Files/MCPBridge.mq4` to your MT4 `MQL4/Experts/` folder
2. Follow same compilation and attachment process
3. Limited to basic MCP functionality without enhanced reporting

### 4. Configure Claude Code (Linux Machine)

Add the MCP server to your Claude Code configuration:

```bash
claude mcp add mt4-server npm run start
```

Or configure manually with custom IP:

```bash
MT4_HOST=192.168.50.161 MT4_PORT=8080 claude mcp add mt4-server npm run start
```

Or in your MCP settings:

```json
{
  "mcpServers": {
    "mt4-server": {
      "command": "node",
      "args": ["dist/index.js"],
      "env": {
        "MT4_HOST": "192.168.50.161",
        "MT4_PORT": "8080"
      }
    }
  }
}
```

## Usage

Once configured, you can use these tools in Claude Code:

### Get Account Information
```
Use the get_account_info tool to see my MT4 account details
```

### Get Market Data
```
Get current market data for EURUSD using get_market_data
```

### Place Orders
```
Place a BUY order for 0.1 lots of EURUSD with stop loss at 1.0850 and take profit at 1.0950
```

### View Positions
```
Show me all my open positions using get_positions
```

### Close Position
```
Close position with ticket number 12345
```

### Run Backtest
```
Run a backtest on MACD Sample Expert Advisor for EURUSD H1 from 2024-01-01 to 2024-12-31 with initial deposit 10000
```

### List Expert Advisors
```
Show me all available Expert Advisors for backtesting
```

### Get Backtest Results
```
Get the results from the last backtest with detailed information
```

### Monitor Backtest Status
```
Check the current status of a running backtest
```

## EA Development Workflow

### List Local EAs
```
Show me all EAs in the active development folder
```

### Sync EA to MT4
```
Upload MyStrategy EA to MetaTrader for compilation
```

### Compile EA
```
Compile MyStrategy EA and show any errors or warnings
```

### Create New EA from Template
```bash
cd ea-strategies
./develop.sh new MyNewStrategy SimpleMA_Template.mq4
./develop.sh edit MyNewStrategy
```

## File Structure

```
├── src/
│   └── index.ts                    # MCP server implementation
├── mcp/                            # MCP infrastructure files
│   └── MCP_Ultimate.mq4           # Ultimate unified MCP Bridge with all features
├── strategies/                     # User trading strategies (git ignored)
│   └── [User strategy EAs]        # Custom trading strategies for personal use
├── ea-strategies/                  # EA development workspace (git ignored)
│   ├── templates/                  # EA templates and examples
│   ├── active/                     # EAs under development
│   ├── compiled/                   # Successfully compiled EAs
│   ├── logs/                       # Compilation logs and error reports
│   ├── develop.sh                  # Development helper script
│   └── README.md                   # EA development guide
├── MT4_Files/                      # Legacy MCP files
│   ├── MCPBridge_Unified.mq4      # Unified MCP Bridge with enhanced reporting
│   └── MCPBridge.mq4              # Legacy MCP Bridge (basic functionality)
├── dist/                          # Compiled JavaScript
├── MCPBridge_Unified_Guide.md     # Complete setup guide for unified EA
├── bridge-endpoints-needed.md     # Required HTTP bridge endpoints
├── package.json
└── tsconfig.json
```

## Data Files

The Expert Advisor creates these files in MT4's `MQL4/Files/` folder:

- `account_info.txt` - Account information
- `market_data_[SYMBOL].txt` - Market data for each symbol
- `positions.txt` - Open positions
- `order_commands.txt` - Incoming order commands
- `close_commands.txt` - Position close commands

### File-Based Reporting (New Feature)

For enhanced backtest monitoring, EAs can write to the reports directory:

- `mt4_reports/backtest_status.json` - Real-time backtest status and progress
- `mt4_reports/backtest_results.json` - Detailed backtest results and statistics
- `mt4_reports/backtest_report.html` - Optional HTML report for detailed analysis

The MCP server automatically falls back to reading these files when API endpoints are unavailable.

**Configuration**: Set `MT4_REPORTS_PATH` environment variable to customize the reports directory (default: `/tmp/mt4_reports`)

## Security Notes

- This integration is for educational/personal use
- Never share your MT4 login credentials
- Test thoroughly on a demo account before using with real money
- The file-based communication is simple but not encrypted

## Limitations

- File I/O based communication has some latency
- Limited to MT4 platform capabilities
- Requires MT4 to be running with the Expert Advisor attached
- No real-time streaming data (periodic updates only)

## Troubleshooting

1. **MCP Server not responding**: Check that MT4 is running with the Expert Advisor
2. **No market data**: Ensure the symbols are available in your MT4 Market Watch
3. **Orders not executing**: Verify that automated trading is enabled in MT4
4. **File access errors**: Check MT4 data path configuration and file permissions
5. **Backtest status/results not available**: 
   - Check if API endpoints are responding (server will auto-fallback to files)
   - Ensure EA is writing to `mt4_reports/` directory using the provided template
   - Verify `MT4_REPORTS_PATH` environment variable is set correctly
6. **File-based fallback not working**: Ensure reports directory exists and has proper permissions

## Environment Variables

- `MT4_HOST`: IP address of Windows machine running MT4 (default: 192.168.50.161)
- `MT4_PORT`: Port number for HTTP bridge (default: 8080)  
- `MT4_REPORTS_PATH`: Directory path for EA report files (default: /tmp/mt4_reports)

## EA Integration Guide

To enable file-based reporting in your Expert Advisors:

1. Copy the `EA_FileReporting_Template.mq4` code into your EA
2. Call `WriteBacktestStatus()` periodically during backtesting
3. Call `WriteBacktestResults()` when backtest completes
4. Ensure MT4 has write permissions to the reports directory

The MCP server will automatically detect and use these files when API endpoints fail.

## MCP Ultimate EA Features

**MCP_Ultimate.mq4** is the most comprehensive MCP solution combining all functionality:

### Key Features
- **Complete MCP Bridge Functions**: Account info, market data, order management
- **Enhanced Backtest Reporting**: Real-time status and comprehensive results with JSON format
- **Visual Indicators**: On-chart status display showing MCP connection and performance
- **Advanced Market Data Tracking**: Configurable tracking for major/minor/exotic pairs and commodities
- **Comprehensive Logging**: Detailed operation logs with automatic rotation
- **Live Trading Support**: Works seamlessly for both backtesting and live trading
- **File-Based Fallback**: Automatic fallback to file-based reporting when API endpoints fail
- **Debug and Performance Monitoring**: Real-time operation counters and performance metrics

### Configuration Options
- **MCP Bridge Settings**: Update intervals, reporting toggles, visual mode
- **Reporting Configuration**: JSON format, detailed logs, maximum log files
- **Market Data Settings**: Selectable tracking for different currency pair types

### Quick Setup
1. Use `mcp/MCP_Ultimate.mq4` for complete functionality
2. Configure all options in EA inputs based on your needs
3. Full MCP functionality with enhanced visual feedback and monitoring

### Organization Benefits
- **MCP Infrastructure**: All MCP-related files in `mcp/` folder
- **Strategy Separation**: User strategies in `strategies/` folder (git ignored)
- **Development Workspace**: EA development tools in `ea-strategies/` (git ignored)
- **Legacy Support**: Previous versions maintained in `MT4_Files/` for compatibility

See `MCPBridge_Unified_Guide.md` for detailed setup instructions on legacy versions.

TDQS

B3.1/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between 'sync_ea' and 'sync_ea_from_file' which could cause confusion about when to use each. Other tools like 'close_position', 'get_positions', and 'place_order' are clearly differentiated for trading operations.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case, such as 'get_account_info', 'run_backtest', and 'list_experts'. This predictability makes it easy for agents to understand and navigate the toolset.

Tool Count5/5

With 14 tools, the server covers a comprehensive range of MetaTrader 4 operations including account management, trading, backtesting, and EA development. This count is well-scoped for the domain without being overwhelming.

Completeness4/5

The toolset provides strong coverage for trading, backtesting, and EA management, but lacks tools for modifying or canceling orders, which could be a minor gap in trading workflows. Overall, it supports core CRUD-like operations effectively.

Maintenance

ActivityInactive
ResponsivenessUnresponsive