Skip to main content
Glama
ali-rajabpour

metatrader-mcp

README.md
# MetaTrader 5 MCP Server

A lightweight Model Context Protocol (MCP) server for MetaTrader 5 that provides **real chart snapshots** directly from your MT5 terminal - no browser automation needed!

## ๐ŸŒŸ Features

- ๏ฟฝ **Real MT5 Screenshots**: Captures actual charts from your MetaTrader 5 terminal with ALL your custom indicators
- ๐Ÿ’น **Market Data**: Fetch current prices, spreads, and symbol information  
- ๐Ÿš€ **Lightweight**: Expert Advisor + file-based communication (no Selenium, no browser)
- ๐Ÿ”ง **Easy Integration**: Works seamlessly with Claude Desktop
- ๐ŸŽจ **What You See Is What You Get**: Captures charts exactly as they appear in MT5
- โšก **Fast**: Direct chart capture via MQL5's ChartScreenShot function
- ๏ฟฝ **Secure**: File-based communication, no network ports required

## ๐Ÿ—๏ธ Architecture

This system uses an innovative approach:
- **MQL5 Expert Advisor**: Runs inside MT5, captures real charts using `ChartScreenShot()`
- **File-Based Protocol**: Commands/responses via shared text files (UTF-16 LE encoding)
- **Python MCP Server**: Communicates with EA, serves charts to Claude Desktop
- **MetaTrader5 API**: For market data and symbol information

**Key Advantage**: Captures REAL MT5 charts with all your custom indicators, drawings, and settings - exactly as you see them!

## ๐Ÿ“‹ Prerequisites

- **Windows OS** (MetaTrader 5 requirement)
- **MetaTrader 5** installed ([download here](https://www.metatrader5.com/))
- **Python 3.10+**

---

## ๐Ÿš€ Quick Start

### Step 1: Install Dependencies

```powershell
cd d:\Desktop\metatrader-mcp
pip install -e .
```

### Step 2: Install Expert Advisor

1. **Copy the EA**:
   - Open MT5 โ†’ `File` โ†’ `Open Data Folder`
   - Navigate to `MQL5\Experts\`
   - Copy `expert_advisor\MCPChartCapture.mq5` to this folder

2. **Compile the EA**:
   - In MT5, press `F4` to open MetaEditor
   - Open `MCPChartCapture.mq5`
   - Press `F7` to compile (should show "0 errors")

3. **Attach to a chart**:
   - Open any chart in MT5 (e.g., EURUSD H1)
   - In Navigator (`Ctrl+N`), expand `Expert Advisors`
   - Drag `MCPChartCapture` onto the chart
   - In the dialog, go to `Common` tab:
     - โœ… Allow automated trading
   - Click `OK`

4. **Enable AutoTrading**:
   - Click the `AutoTrading` button in MT5 toolbar (or press `Ctrl+E`)
   - You should see a ๐Ÿ˜Š on the chart

### Step 3: Test the Setup

```powershell
python test_ea_connection.py
```

Expected output:
```
โœ… Connected to MT5 v5370
โœ… EA Response: EA is running
โœ… Screenshot saved: output\EURUSD_H1_20251101_024101.png
All tests passed! โœ…
```

### Step 4: Configure Claude Desktop

1. **Locate config file**:
   - Windows: `%APPDATA%\Claude\claude_desktop_config.json`
   - macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`

2. **Add MCP server**:
   ```json
   {
     "mcpServers": {
       "metatrader5": {
         "command": "python",
         "args": ["-m", "metatrader_mcp.server"],
         "cwd": "d:\\Desktop\\metatrader-mcp"
       }
     }
   }
   ```

3. **Restart Claude Desktop**

4. **Test it**! Ask Claude:
   ```
   Show me a screenshot of EURUSD H1 chart
   ```

---

## ๐Ÿ› ๏ธ Available Tools

### 1. `capture_chart_screenshot`
Capture a real screenshot from MT5 terminal with all your indicators.

**Parameters**:
- `symbol` (string): Trading pair (e.g., "EURUSD", "XAUUSD", "BTCUSD")
- `timeframe` (string): Chart timeframe - M1, M5, M15, M30, H1, H4, D1, W1, MN1

**Returns**: Path to the captured screenshot (PNG, 1920x1080)

**Example**:
```
Capture a screenshot of XAUUSD 15-minute chart
```

### 2. `list_symbols`
Get available trading symbols from MT5.

**Parameters**:
- `group` (string, optional): Filter by group (e.g., "Forex", "Crypto")

**Returns**: List of symbols with descriptions

**Example**:
```
Show me all Forex symbols
```

### 3. `get_current_price`
Get real-time market data for a symbol.

**Parameters**:
- `symbol` (string): Trading pair

**Returns**: Current bid, ask, spread, time

**Example**:
```
What's the current price of EURUSD?
```

### 4. `get_timeframes`
List all supported timeframes.

**Returns**: Available timeframe codes

---

## ๐Ÿ“Š Supported Timeframes

| Code | Description |
|------|-------------|
| M1   | 1 minute    |
| M5   | 5 minutes   |
| M15  | 15 minutes  |
| M30  | 30 minutes  |
| H1   | 1 hour      |
| H4   | 4 hours     |
| D1   | Daily       |
| W1   | Weekly      |
| MN1  | Monthly     |

---

## ๐Ÿ—‚๏ธ Project Structure

```
metatrader-mcp/
โ”œโ”€โ”€ expert_advisor/
โ”‚   โ””โ”€โ”€ MCPChartCapture.mq5      # MQL5 Expert Advisor for chart capture
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ metatrader_mcp/
โ”‚       โ”œโ”€โ”€ server.py             # Main MCP server
โ”‚       โ”œโ”€โ”€ mt5_handler.py        # MT5 connection & market data
โ”‚       โ””โ”€โ”€ chart_generator.py    # EA communication & screenshot handling
โ”œโ”€โ”€ output/                       # Captured screenshots (auto-created)
โ”œโ”€โ”€ test_ea_connection.py         # Test EA connectivity
โ”œโ”€โ”€ pyproject.toml                # Python dependencies
โ””โ”€โ”€ README.md
```

---

## ๐Ÿ”ง Troubleshooting

### โŒ EA not responding / Timeout errors

**Solutions**:
1. Check the EA is attached to a chart (you should see ๐Ÿ˜Š)
2. Enable AutoTrading in MT5 (`Ctrl+E`)
3. Check Experts log in MT5 for errors
4. Try removing and reattaching the EA

### โŒ "MT5 initialization failed"

**Solutions**:
1. Verify MT5 is installed: `C:\Program Files\MetaTrader 5\terminal64.exe`
2. Open MT5 at least once to initialize
3. If custom install path, set `MT5_PATH` environment variable

### โŒ Screenshot file not found

**Solutions**:
1. Ensure EA is running (check for ๐Ÿ˜Š on chart)
2. Check Experts log for errors
3. Verify AutoTrading is enabled
4. Try capturing a chart that's already open

### โŒ "Could not fetch data for symbol"

**Solutions**:
1. The symbol must exist in your MT5 (check Market Watch)
2. Symbol names are case-sensitive
3. Try with "EURUSD" first to test

### โŒ Encoding errors / Garbled text

**Solution**: This is fixed! The system uses UTF-16 LE encoding for EA communication.

---

## ๐Ÿ’ก Usage Examples

### Capture Chart with Custom Indicators
```
Claude, capture a screenshot of my XAUUSD M15 chart
```
โ†’ Returns actual MT5 chart with all your custom indicators!

### Get Multiple Charts
```
Show me charts for EURUSD H1, GBPUSD H4, and XAUUSD M15
```

### Check Current Prices
```
What are the current prices for EURUSD, GBPUSD, and USDJPY?
```

### Explore Symbols
```
List all available Gold symbols
```

---

## ๐Ÿงช Testing

Run the test suite:

```powershell
# Test EA connection
python test_ea_connection.py

# Test chart capture
python take_screenshot.py

# Test specific symbol
python capture_xauusd.py
```

---

## ๐Ÿ“ Configuration (Optional)

Create a `.env` file for custom settings:

```env
# Custom MT5 installation path
MT5_PATH=C:\Program Files\MetaTrader 5

# Custom output directory for screenshots
OUTPUT_DIR=./charts
```

---

## ๐Ÿค Contributing

Contributions are welcome! Feel free to:
- Report bugs
- Suggest features
- Submit pull requests
- Improve documentation

## ๐Ÿ“„ License

MIT License - see LICENSE file for details

## ๐Ÿ™ Acknowledgments

- [MetaTrader 5 Python API](https://www.mql5.com/en/docs/python_metatrader5) - For market data access
- [MCP SDK](https://modelcontextprotocol.io/) - Model Context Protocol implementation
- MQL5 Community - For Expert Advisor development resources

## ๐Ÿ“ž Support

Having issues? Here's how to get help:

1. **Run diagnostics**: `python test_ea_connection.py`
2. **Check MT5 Experts log**: Look for error messages in MT5
3. **Verify setup**: EA attached? AutoTrading enabled? ๐Ÿ˜Š visible?
4. **Open an issue**: Include error messages and system info

---

**Made with โค๏ธ for traders who want to integrate MT5 with Claude AI**

*No browser automation. No Selenium. Just pure, lightweight MT5 chart capture!*