# 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.