MetaTrader 4/5 MCP server - 6 tools for MQL4/MQL5 docs lookup, code validation, and code generation
Project description
Complete MQL4/MQL5 reference documentation MCP server with 4853 entries covering 100% of the official MetaTrader 4/5 documentation sitemaps.
Quick Start | Tools | Configuration | Database | Development
One Command. Two Minutes. Fully Functional.
pip install mql-mcp
mqlmcp
That's it. On first run, the server auto-builds the ChromaDB vector store from shipped JSON data (takes 30-60 seconds for embedding model download + indexing). Subsequent runs start instantly.
What you get:
- 6 MCP tools for MQL4/MQL5 docs lookup, code validation, and code generation
- 4853 entries indexed in a local ChromaDB vector store (100% offline)
- Sub-millisecond hot cache for priority lookups
- MetaEditor compiler integration (local, Wine, or SSH) for
mql_compile - MQL4-to-MQL5 automatic migration via
mql_repair - Works with Claude Desktop, Cursor, Windsurf, OpenCode, and any MCP client
What you need:
- Python 3.10+
- Any MCP-compatible AI client
Why MetaTraderMCP?
AI coding assistants hallucinate MQL syntax. MQL5 introduced significant changes from MQL4 (handle-based indicators, CTrade class, CopyBuffer pattern, event model) that models trained on older code get wrong.
MetaTraderMCP gives AI assistants authoritative, real-time access to the complete MetaTrader 4/5 reference:
- 100% coverage: 4136/4136 MQL5 + 657/657 MQL4 sitemap URLs
- MQL4 + MQL5 unified: Single database with version tagging and filtering
- Semantic search: Vector embeddings find relevant docs by meaning, not keywords
- Real compilation:
mql_compilevalidates code via the actual MetaEditor compiler - MQL4 to MQL5 migration:
mql_repair(mode="migrate")applies all known replacements - Code generation:
mql_scaffoldgenerates validated EA, indicator, or script templates - 100% local: No network calls at runtime (except optional compiler validation)
Tools
+----------------------+---------------------------------------------+
| Tool | Description |
+----------------------+---------------------------------------------+
| mql_lookup | Get complete docs for a symbol by exact name|
| mql_search | Semantic search across all MQL4/MQL5 docs |
| mql_browse | Enumerate all members of a namespace |
| mql_compile | Compile MQL code via MetaEditor or syntax |
| mql_repair | Fix compiler errors or migrate MQL4 to MQL5 |
| mql_scaffold | Generate EA, indicator, or script template |
+----------------------+---------------------------------------------+
Tool Details
mql_lookup(name, kind?, version?)
Get complete documentation for an MQL symbol by exact name. Auto-detects function,
variable, type, constant, keyword, or operator. Returns syntax, parameters, returns,
remarks, and code examples. Filter by version="mql4" or version="mql5".
mql_search(query, category?, namespace?, n_results?, version?)
Semantic search across the entire MQL4/MQL5 reference. Supports category filtering,
namespace filtering, and version filtering.
mql_browse(namespace, category?, style?, version?)
Enumerate every member of a namespace (e.g., trade, indicator, array).
style="cheatsheet" produces a compact, box-drawn signature summary.
mql_compile(code?, file_path?, explain?, version?)
Compile MQL code via the real MetaEditor compiler. Supports inline code, file paths,
and explain=True for error-specific fix hints. Compilation methods (tried in order):
local MetaEditor, remote SSH MetaEditor, syntax-only validation fallback.
mql_repair(code, context, mode?, version?)
Fix compiler errors (mode="targeted") or migrate MQL4 code to MQL5
(mode="migrate"). Applies all known MQL4->MQL5 breaking change replacements,
then recompiles to verify.
mql_scaffold(kind, name, description?, version?, lots?, take_profit?, stop_loss?, magic_number?)
Generate a validated MQL EA, indicator, or script template. Pre-wired with standard
inputs, risk parameters, and trade logic. Result is compiled before return.
MCP Client Configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)
or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"metatradermcp": {
"command": "mqlmcp",
"transport": "stdio"
}
}
}
Cursor / Windsurf / OpenCode
Add to your project's .mcp.json or global MCP config:
{
"mcpServers": {
"metatradermcp": {
"command": "mqlmcp",
"transport": "stdio"
}
}
}
SSE (HTTP)
TRANSPORT=sse PORT=8080 mqlmcp
Connect to http://localhost:8080.
Configuration
+------------------------+---------------------+----------------------------------+
| Env Var | Default | Description |
+------------------------+---------------------+----------------------------------+
| TRANSPORT | stdio | Transport: stdio or sse |
| PORT | 8080 | Port for SSE transport |
| MQL_DB_PATH | ./mql_db | ChromaDB path |
| MQL_COLLECTION | mql_reference | ChromaDB collection name |
| MQL_EMBED_MODEL | all-MiniLM-L6-v2 | Sentence transformer model |
| METAEDITOR_PATH | (empty) | Path to metaeditor64.exe |
| METAEDITOR_SSH_HOST | (empty) | SSH host for remote compilation |
| METAEDITOR_REMOTE_PATH | metaeditor64.exe | Remote MetaEditor executable |
| MQL_COMPILE_TIMEOUT | 60 | Compilation timeout in seconds |
| LOG_LEVEL | INFO | Logging level |
| LAZY_MODEL | 0 | Set to 1 to defer model loading |
+------------------------+---------------------+----------------------------------+
Database
- 4853 entries (MQL4 + MQL5 unified)
- MQL5: 4136/4136 sitemap URLs (100%)
- MQL4: 657/657 sitemap URLs (100%)
- 37 documentation sections + 33 MetaTrader5 Python API pages
- Hot cache for sub-millisecond priority lookups
- Auto-built on first run from shipped JSON data (7.5MB)
To rebuild the database:
mqlmcp build
Development
git clone https://github.com/TheFractalyst/MetatraderMCP.git
cd MetatraderMCP
pip install -e ".[dev]"
pytest tests/ -v
Re-scrape from MQL Docs
pip install -e ".[pipeline]"
python -m playwright install chromium
python pipeline/scrape_mql5.py
python pipeline/scrape_mql4.py
python pipeline/merge_and_index.py --reset --output-json data/mql_merged_entries.json
Docker
docker build -t metatradermcp .
docker run -p 8080:8080 -e TRANSPORT=sse metatradermcp
Tech Stack
- FastMCP 3.4 - MCP server framework with FileSystemProvider auto-discovery
- ChromaDB - Local vector database for semantic search (cosine, 384-dim)
- SentenceTransformers -
all-MiniLM-L6-v2embedding model - RapidFuzz - Fuzzy string matching for name lookups
- Loguru - Structured logging with daily rotation (SSE mode)
Links
- fractalyst.dev - Portfolio
- MQL5 Documentation - Official MQL5 reference
- MetaTrader 5 - Trading platform
- @TheFractalyst - X / Twitter
License
MIT - see LICENSE
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mql_mcp-1.1.2.tar.gz.
File metadata
- Download URL: mql_mcp-1.1.2.tar.gz
- Upload date:
- Size: 1.7 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f625e57a01535a1899053604d65f27ee3818fa0525a83ca866a671c408f85caa
|
|
| MD5 |
39b747e9451a1bab7cda50b51ea993b2
|
|
| BLAKE2b-256 |
7744160593ffd5faba35f3fc044209b3bc20f7bd7cecf411e88f6260e03296e9
|
File details
Details for the file mql_mcp-1.1.2-py3-none-any.whl.
File metadata
- Download URL: mql_mcp-1.1.2-py3-none-any.whl
- Upload date:
- Size: 1.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
56801d70ef7379bca34125fac5f72f956ca5f6bb578542140381b900b11c3c9d
|
|
| MD5 |
ff29974e5d0c5c5e3e8a7c2d798626bc
|
|
| BLAKE2b-256 |
b01e881a239def602039182c6f55b0009a5b495294b0b29133817dbb65babb04
|