Skip to main content

MetaTraderMCP

PyPI Python ChromaDB MCP License: MIT Tests

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_compile validates code via the actual MetaEditor compiler
  • MQL4 to MQL5 migration: mql_repair(mode="migrate") applies all known replacements
  • Code generation: mql_scaffold generates 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-v2 embedding model
  • RapidFuzz - Fuzzy string matching for name lookups
  • Loguru - Structured logging with daily rotation (SSE mode)

License

MIT - see LICENSE

Metadata

Release files for mql-mcp 1.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mql-mcp 1.1.2
File Size Uploaded
mql_mcp-1.1.2.tar.gz 1.7 MB Details

Built distribution (wheel)

Table of built distributions (wheels) for mql-mcp 1.1.2
File Interpreter ABI Platform
mql_mcp-1.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 3.4 MB

Release files / mql_mcp-1.1.2.tar.gz

Download URL mql_mcp-1.1.2.tar.gz
Size 1.7 MB
Tags Source
SHA-256 checksum
How to use checksums
f625e57a01535a1899053604d65f27ee3818fa0525a83ca866a671c408f85caa
BLAKE2b-256 checksum
How to use checksums
7744160593ffd5faba35f3fc044209b3bc20f7bd7cecf411e88f6260e03296e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release files / mql_mcp-1.1.2-py3-none-any.whl

Download URL mql_mcp-1.1.2-py3-none-any.whl
Size 1.7 MB
Tags Python 3
SHA-256 checksum
How to use checksums
56801d70ef7379bca34125fac5f72f956ca5f6bb578542140381b900b11c3c9d
BLAKE2b-256 checksum
How to use checksums
b01e881a239def602039182c6f55b0009a5b495294b0b29133817dbb65babb04
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.13

Release history Release notifications | RSS feed

This release

1.1.2 This release

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page