mt5-remote-reader-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mt5-remote-reader-mcpShow open positions on VPS 1.2.3.4 with password mypass"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mt5-remote-reader-mcp
Read-only MCP server to monitor MetaTrader 5 accounts on remote Windows VPS via SSH.
Never executes trading operations — pure monitoring only.
What it does
mt5-remote-reader-mcp lets any MCP-compatible AI agent (Claude, Cursor, Windsurf, etc.) connect to a Windows VPS running MetaTrader 5 and answer questions about your trading accounts — all via SSH, with no permanent connection and no risk of accidental trades.
Example prompt:
"Use mt5-remote-reader-mcp, connect to VPS 107.x.x.x with password XXXX and tell me what positions are currently open"
The AI will:
Connect to your VPS via SSH
Query MetaTrader 5
Return the data in natural language
Related MCP server: MCP SSH SRE
Installation
pip install mt5-remote-reader-mcpQuick Start
1. Set up your VPS (one time only)
On your Mac/Linux, run:
python setup_vps.py YOUR_VPS_IP YOUR_VPS_PASSWORDThis installs Python, required libraries, and mt5_tool.py on the VPS automatically.
2. Configure your MCP client
Add to your MCP client config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"mt5-remote-reader": {
"command": "mt5-remote-reader-mcp"
}
}
}3. Talk to your AI
"Connect to my VPS at 1.2.3.4 with password XXXX and show me open positions"
"What trades did mt5_5 close in the last 7 days?"
"Is the expert advisor on axi_mt5_5_terminal logging any errors?"Available Tools
Tool | Description | Parameters |
| List all active MT5 terminals on the VPS |
|
| Get currently open positions |
|
| Get closed trades history |
|
| Get Expert Advisor log entries |
|
| List all available trading symbols |
|
| Get detailed info for a specific symbol |
|
Recommended flow
Always start with list_terminals to discover what terminals are available, then use the short terminal name (e.g. mt5_5) for all subsequent calls.
Environment Variables (optional)
Variable | Default | Description |
|
| Path to mt5_tool.py on the VPS |
|
| SSH username for the VPS |
Example with custom path:
MT5_TOOL_PATH="C:\trade_monitor\mt5_tool.py" mt5-remote-reader-mcpVPS Requirements
Windows Server 2012 R2 or later
MetaTrader 5 installed and logged in
Python 3.8+ installed and in PATH
OpenSSH Server active with password authentication
mt5_tool.pydeployed on the VPS (handled bysetup_vps.py)
Architecture
AI Agent
↓
mt5-remote-reader-mcp (MCP stdio, runs on your local machine)
↓
SSH + password (paramiko, no pre-configured keys needed)
↓
Windows VPS
↓
mt5_tool.py + MetaTrader5 Python library
↓
JSON → natural language responseWhy stdio?
No background process needed. The MCP server launches on demand, completes the request, and exits. SSH is fast and stateless — there's nothing to keep alive between calls.
Why paramiko?
Pure Python SSH library — works on any Mac, Linux, or Windows without system-level SSH dependencies.
Security
Read-only by design — no trading operations are ever executed
Credentials are passed per-call and never stored to disk
SSH connection opens and closes for each request
Works over standard SSH port 22 — no custom firewall rules needed
Troubleshooting
"Authentication failed"
→ Check the IP and password. Make sure OpenSSH is running on the VPS (net start sshd).
"No output from VPS"
→ Make sure mt5_tool.py is at the expected path. Run setup_vps.py again to redeploy it.
"MT5 terminal not found"
→ Make sure MetaTrader 5 is open and logged in on the VPS before querying.
"Module MetaTrader5 not found"
→ Run setup_vps.py again — it will reinstall the required Python libraries.
License
MIT — see LICENSE
Related Projects
mt5_tool.py — the core VPS-side script
setup_vps.py — automated VPS setup from your local machine
Available Tools
16 toolscheck_vps_statusA
Verifica se una o tutte le VPS sono raggiungibili via SSH (health check leggero). Non interroga MT5 — è solo un ping SSH con timeout breve (5 secondi).
Utile per:
Diagnostica rapida prima di operazioni più complesse
Capire subito se un problema è di rete o di MT5
Monitoraggio dello stato delle VPS
| Name | Required | Description | Default |
|---|---|---|---|
| vps | No | Nome della VPS da controllare (es. "ftmo"). Se omesso, controlla tutte le VPS in parallelo. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that the tool performs an SSH ping with a 5-second timeout, does not query MT5, and is a read-only health check. This provides adequate behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: three sentences plus bullet points. Every sentence adds value, no fluff. It is front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter) and the existence of an output schema, the description covers the essential aspects: purpose, limitations, and use cases. It misses nothing critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description already explains the parameter (including default behavior). The tool description does not add new information beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'verifica' (checks) and the resource 'VPS raggiungibili via SSH'. It distinguishes from sibling tools by specifying it's a light health check that does not query MT5, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists when to use the tool (quick diagnosis, network vs MT5 distinction, monitoring) and what it does not do (does not query MT5). While it does not explicitly state when not to use it, the context is clear enough for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
connect_vpsA
Configura una VPS Windows per l'uso con mt5-remote-reader. Va chiamato la prima volta che si usa una VPS nuova.
Fa tutto automaticamente:
Verifica se Python è installato, altrimenti lo installa
Installa le librerie necessarie (MetaTrader5, psutil)
Copia mt5_tool.py sulla VPS
Testa la connessione con MT5 e ritorna i terminali trovati
Se SSH non è raggiungibile (VPS vergine), scarica automaticamente setup_mt5_vps.exe in ~/Downloads e fornisce le istruzioni per eseguirlo.
MetaTrader 5 deve essere già installato e loggato sulla VPS.
| Name | Required | Description | Default |
|---|---|---|---|
| vps | Yes | Nome amichevole della VPS in rubrica (es. "ftmo"). Usa list_vps per vedere quelle disponibili. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description details all automatic behaviors: checking/installing Python, installing libraries, copying files, testing MT5 connection, and handling unreachable SSH. It also notes the prerequisite that MT5 must already be installed and logged in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-organized with line breaks separating the overview from detailed steps. Every sentence is informative, though it is slightly long; still, it maintains clarity without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's multi-step automation and conditional logic, the description covers prerequisites, success path, and failure handling (SSH unreachable). It also mentions the return value (found terminals).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'vps' is described as a friendly name from a list, with a reference to list_vps for available options. This adds valuable context beyond the schema's type and required flag.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The verb 'configura' with resource 'VPS' and the explicit mention of first-time use clearly defines the tool's role. It distinguishes from siblings like check_vps_status or list_vps by specifying it's for initial setup of a VPS for mt5-remote-reader.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states explicitly that this tool should be called the first time a new VPS is used. It does not mention alternatives or when not to use, but the condition is clear and sufficient for the agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_vpsA
Rimuove una VPS dalla rubrica.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Nome amichevole della VPS da rimuovere (es. "ftmo") |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavioral traits. It only states the removal action but does not address consequences (e.g., stopping a running VPS, data loss, or authorization requirements).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no wasted words. It front-loads the core action and is easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with one parameter and an output schema, the description is reasonably complete. It lacks details about the output or side effects, but the presence of an output schema partially compensates.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds no extra meaning beyond the schema's parameter description. The schema already specifies 'Friendly name of the VPS to remove (e.g. "ftmo")' – the description merely restates the action.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Removes a VPS from the address book,' specifying the verb (removes), resource (VPS), and context (address book). This distinguishes it from siblings like 'save_vps' (create/update) and 'list_vps' (list).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'save_vps' or 'connect_vps.' It is implied that deletion is appropriate when a VPS is no longer needed, but no prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_infoB
Ritorna le informazioni del conto MT5: balance, equity, margin, free margin, margin level, profit flottante, valuta, leva, login, broker.
| Name | Required | Description | Default |
|---|---|---|---|
| vps | Yes | Nome amichevole della VPS in rubrica (es. "ftmo") | |
| terminal | Yes | Nome corto del terminale, ottenuto da list_terminals |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must cover behavioral traits. It only states what is returned, omitting side effects, required state (e.g., terminal must be running), or read-only nature. This is insufficient for safe invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, focused sentence listing output fields. No wasted words; efficiently conveys core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full return details are structured. However, the description lacks context on tool prerequisites (e.g., connection state), relation to siblings, or limitations. Adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions for both parameters are provided (vps and terminal), achieving 100% coverage. The tool description adds no further meaning beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool returns MT5 account information, listing specific fields like balance, equity, margin, etc. The verb 'Ritorna' (returns) and resource 'conto MT5' are precise, distinguishing it from siblings like get_all_account_info which likely returns all accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_all_account_info, get_open_positions). No context about prerequisites or scenarios where this tool is appropriate, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_all_account_infoA
Legge le informazioni di conto su TUTTE le VPS in rubrica in parallelo. Non serve specificare nulla: recupera automaticamente tutte le VPS salvate e tutti i terminali MT5 attivi su ciascuna.
Per ogni terminale restituisce: login, name, balance, equity, profit, margin, free_margin, margin_level, currency, leverage, server, broker.
Usare questo tool invece di get_account_info quando si vuole una panoramica completa di tutti i conti monitorati.
Ritorna: {nome_vps: {nome_terminale: {info_conto}}} per ogni VPS raggiungibile. Le VPS non raggiungibili compaiono con status "error" invece delle info conto.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description fully discloses behavior: parallel reading, automatic retrieval of all VPS and terminals, return format (nested object), fields returned, and error handling (unreachable VPS shown with status 'error').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise yet comprehensive: first sentence states purpose, then explains behavior, return structure, and error handling. Every sentence adds value, no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the complexity of parallel VPS retrieval, the description covers return format, field list, and error handling. The output schema exists, so detailed return structure is provided. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters (0), so baseline is 4. The description adds value by explaining that no input is needed (automatically retrieves all saved VPS).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads account information on all VPS in parallel (specific verb and resource). It explicitly distinguishes from sibling get_account_info by noting it provides a complete overview of all monitored accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use this tool instead of get_account_info (for a complete overview). It also states no input is required. However, it does not explicitly mention when not to use it, though the context implies it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_all_open_positionsA
Legge le posizioni aperte su TUTTE le VPS in rubrica in parallelo. Non serve specificare nulla: recupera automaticamente tutte le VPS salvate e tutti i terminali MT5 attivi su ciascuna.
Usare questo tool invece di get_open_positions quando si vuole una panoramica completa di tutti i conti monitorati.
Ritorna: {nome_vps: {nome_terminale: [posizioni]}} per ogni VPS raggiungibile. Le VPS non raggiungibili compaiono con status "error" invece delle posizioni.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses parallel execution, automatic retrieval of all VPS and MT5 terminals, and the return format with error handling for unreachable VPS. No annotations exist, so the description adequately covers behavioral traits, though it could mention potential rate limits or authentication.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at ~5 sentences, with each sentence adding relevant information. It is front-loaded with the core purpose. However, the structure could be slightly improved for readability (e.g., bullet points).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool with an output schema, the description provides complete context: it explains the return format as a nested dict, error handling for unreachable VPS, and the scope (all VPS and terminals). No missing information for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters and 100% coverage. The description confirms no input is needed ('non serve specificare nulla'). No additional parameter semantics are required beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads open positions from all VPS in the address book in parallel. It specifies the action ('legge'), the resource ('posizioni aperte su TUTTE le VPS in rubrica'), and distinguishes it from the sibling get_open_positions by indicating it provides a complete overview.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use this tool instead of get_open_positions when a complete overview of all monitored accounts is needed. Provides a clear alternative and context for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_expert_logA
Ritorna le ultime N righe del log dell'Expert Advisor del terminale. Utile per diagnosticare problemi o verificare l'attività dell'EA.
| Name | Required | Description | Default |
|---|---|---|---|
| vps | Yes | Nome amichevole della VPS in rubrica (es. "ftmo") | |
| terminal | Yes | Nome corto del terminale, ottenuto da list_terminals | |
| lines | No | Numero di righe di log da ritornare (default: 100) |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states the purpose without disclosing behavioral traits such as read-only nature, side effects, authentication requirements, or error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words, front-loading the action and resource. It earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and simple parameters, the description is mostly complete for a basic log retrieval tool. Minor missing context like prerequisites or limitations does not significantly hinder understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter adequately. The description adds no additional semantic value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Ritorna le ultime N righe del log dell'Expert Advisor del terminale', specifying the verb 'return', the resource 'log of EA', and the scope 'last N lines'. It is distinct from sibling tools like get_account_info or get_open_positions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions usefulness for diagnosing problems or verifying EA activity, providing context but no explicit guidelines on when to use versus alternatives or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_open_positionsA
Ritorna le posizioni aperte sul terminale specificato. Ogni posizione include: ticket, symbol, type (buy/sell), volume, open_price, current_price, sl, tp, profit, swap, open_time, comment, magic.
| Name | Required | Description | Default |
|---|---|---|---|
| vps | Yes | Nome amichevole della VPS in rubrica (es. "ftmo") | |
| terminal | Yes | Nome corto del terminale (es. "mt5_5"), ottenuto da list_terminals |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description discloses returned fields but lacks details on side effects (none expected), authentication needs, or behavior if terminal is disconnected. Adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states the main purpose, second lists returned fields. No extraneous information, efficiently structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description adequately covers return values. Missing some contextual details like prerequisite terminal connection status, but overall complete for a simple read operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter descriptions. The tool description adds no additional parameter meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'returns open positions on the specified terminal', specifying the verb, resource, and scope. It implicitly distinguishes from the sibling 'get_all_open_positions' which operates across all terminals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like 'get_all_open_positions' or 'get_trade_history'. Usage is implied by the parameter 'terminal', but without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_symbol_infoA
Ritorna i dettagli completi di uno strumento specifico. Include: contract_size, volume_min/max/step, swap_long/short, bid, ask, spread.
| Name | Required | Description | Default |
|---|---|---|---|
| vps | Yes | Nome amichevole della VPS in rubrica (es. "ftmo") | |
| terminal | Yes | Nome corto del terminale, ottenuto da list_terminals | |
| symbol | Yes | Nome dello strumento (es. "EURUSD", "XAUUSD") |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It lists returned fields (contract_size, volume, swap, bid, ask, spread) but does not disclose potential side effects, authentication needs, or rate limits. Adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action and a concise list of included fields. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to detail return values. However, given no annotations and no usage guidelines, it is slightly incomplete but sufficient for a simple retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with three parameters already described clearly. The description adds no additional parameter semantics beyond what the schema provides, so baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Ritorna' (returns) and the resource 'dettagli completi di uno strumento specifico', distinguishing it from sibling tools like 'get_symbols' which lists symbols.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when needing details of a specific instrument, but lacks explicit when-to-use, when-not-to-use, or alternative tool guidance. No exclusions or prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_symbolsC
Ritorna tutti gli strumenti di trading disponibili sul terminale.
| Name | Required | Description | Default |
|---|---|---|---|
| vps | Yes | Nome amichevole della VPS in rubrica (es. "ftmo") | |
| terminal | Yes | Nome corto del terminale, ottenuto da list_terminals |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must disclose behavioral traits. It only states the function without mentioning side effects, permissions, or any constraints. The tool likely performs a read operation, but this is not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that clearly states the main purpose. It is concise and front-loaded, but the use of Italian may limit understanding for English-only agents.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description is minimally adequate. However, it lacks details about the returned data structure or usage context, which could be important for an agent selecting this tool among siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The tool description does not add additional meaning beyond the schema, so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns all trading instruments available on the terminal. It uses a specific verb ('ritorna') and resource ('strumenti di trading'), and distinguishes from sibling tools like get_symbol_info by implying a list rather than a single item.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when or when not to use this tool. With multiple sibling tools like get_symbol_info and get_all_account_info, the description does not clarify the context or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_trade_historyA
Ritorna lo storico dei trade chiusi negli ultimi N giorni. Ogni trade include: symbol, type, volume, open_price, close_price, open_time, close_time, profit, swap, commission, net_profit.
| Name | Required | Description | Default |
|---|---|---|---|
| vps | Yes | Nome amichevole della VPS in rubrica (es. "ftmo") | |
| terminal | Yes | Nome corto del terminale, ottenuto da list_terminals | |
| days | No | Numero di giorni di storico (default: 30) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full burden. It describes the output structure but does not mention read-only behavior, data freshness, rate limits, or authentication requirements. As a read operation, it is partially transparent but lacks some behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with one main sentence and a bullet list of fields. No unnecessary words, and the key purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (3 parameters, output schema exists), the description is fairly complete. It explains what is returned but omits details like pagination or maximum days. Adequate for a straightforward retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the description does not add additional meaning beyond what is in the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it returns closed trade history with a specific time range (last N days) and lists all included fields. It effectively distinguishes from sibling tools like 'get_open_positions' by focusing on closed trades.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for historical closed trades but does not explicitly state when not to use it or mention alternative tools. However, the clear focus on 'chiusi' (closed) provides contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_versionA
Restituisce la versione installata di mt5-remote-reader-mcp. Utile per verificare che il package sia aggiornato.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It only states the output (version number) but does not mention whether the operation involves network calls, requires authentication, or has side effects. For a tool this simple, a statement like 'read-only, no side effects' would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise, focused sentences: the first states the core function, the second adds a practical use case. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, output schema likely available), the description is largely complete. It covers purpose and usage context. A minor improvement would be to note that the operation is local and safe, but overall it suffices.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is fully covered by the empty schema. The description adds no parameter details but does not need to. Score is baseline 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('restituisce la versione installata') and the specific resource ('mt5-remote-reader-mcp'). It also distinguishes itself from sibling tools which deal with accounts, terminals, and VPS rather than version info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a practical use case ('verificare che il package sia aggiornato'), providing implicit guidance. However, it does not explicitly state when not to use it or compare with alternatives, though such distinctions are unnecessary given the tool's simplicity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_vps_installerA
Scarica setup_mt5_vps_{version}.exe in ~/Downloads e restituisce il percorso.
Usare quando connect_vps fallisce perché SSH non è ancora attivo sulla VPS. L'exe va copiato sulla VPS Windows ed eseguito come amministratore: tasto destro → "Esegui come amministratore".
L'exe installa automaticamente sulla VPS:
OpenSSH Server (abilita la connessione SSH)
Python 3.8
Librerie MetaTrader5 e psutil
mt5_tool.py sul Desktop della VPS
Dopo aver eseguito l'exe, tornare qui e richiamare connect_vps.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It explains the side effects of the downloaded exe (installs OpenSSH, Python, etc.) and what the tool returns. Lacks details on potential failures or overwrite behavior, but overall transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is front-loaded with the primary action and includes multiple useful details. A few sentences are present, each providing value. Could be slightly more concise but still well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, an output schema exists (not shown), and the description covers the return type and side effects, it is fairly complete. Minor gaps (error handling, download idempotency) but acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, and schema coverage is 100%. Baseline is 4; description does not need to add parameter information beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool downloads a specific file to a specified directory and returns the path. It uses specific verbs ('Scarica', 'restituisce') and a specific resource name, distinguishing it from siblings like 'connect_vps'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('when connect_vps fails because SSH is not yet active') and provides a step-by-step workflow after execution, including calling 'connect_vps' afterward.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_terminalsA
Elenca tutti i terminali MetaTrader 5 attivi sulla VPS. Ritorna nome, login, broker, server e stato connessione per ogni terminale. Usare sempre questo tool prima degli altri per scoprire i nomi dei terminali disponibili.
| Name | Required | Description | Default |
|---|---|---|---|
| vps | Yes | Nome amichevole della VPS in rubrica (es. "ftmo"). Usa list_vps per vedere quelle disponibili. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It indicates a read operation (listing) and specifies output fields, but does not disclose any side effects, authentication requirements, rate limits, or error behavior. Adequate but not extensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each adding value: the first states the action, the second specifies output, the third provides usage guidance. No unnecessary words; front-loaded with the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given it's a simple list tool with one required parameter, the description covers the output fields and usage guidance. It lacks mention of error handling (e.g., invalid VPS name), but overall it is fairly complete for the agent's needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has one parameter 'vps' with a description. The tool description goes beyond the schema by referencing a sibling tool list_vps to discover valid VPS names, which helps the agent understand how to populate the parameter correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all active MT5 terminals on a VPS, and specifies the returned fields (name, login, broker, server, connection status). It implicitly distinguishes itself from siblings by advising to use this tool before others to discover terminal names.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says 'Usare sempre questo tool prima degli altri per scoprire i nomi dei terminali disponibili' (Use this tool before others to discover available terminal names), providing clear when-to-use context and implying not to use other tools first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_vpsA
Elenca tutte le VPS salvate in rubrica. Mostra nome, IP e username — mai le password. Chiamare sempre questo tool per primo per vedere le VPS disponibili.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully discloses behavior: it list VPS, shows specific fields, and never returns passwords. This transparently sets user expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences: purpose, shown data (with explicit exclusion), and usage guidance. Every sentence adds value; no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with no parameters, the description is complete enough. It covers what the tool does, what it returns, and when to call it. Could mention potential empty list but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description needs no additional parameter details. It appropriately avoids adding unnecessary semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Elenca') and resource ('VPS'), clearly distinguishing it from sibling tools like 'connect_vps' or 'delete_vps'. It also states what fields are shown (nome, IP, username) and explicitly excludes passwords.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Chiamare sempre questo tool per primo' (always call this tool first), providing clear guidance on when to use it. However, it does not mention when not to use it or alternatives beyond implication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_vpsA
Aggiunge o aggiorna una VPS nella rubrica locale sicura. Le credenziali sono salvate cifrate in ~/.mt5-reader/vps.json. Dopo questa chiamata non sarà mai più necessario inserire ip, username e password.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Nome amichevole da assegnare alla VPS (es. "ftmo", "axi", "mia_vps") | |
| ip | Yes | Indirizzo IP pubblico della VPS | |
| username | Yes | Username SSH della VPS (solitamente "Administrator") | |
| password | Yes | Password SSH della VPS |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that credentials are saved encrypted in ~/.mt5-reader/vps.json and that after call, re-entry is never needed. Provides valuable behavioral context beyond schema, though could mention overwrite behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, front-loaded with key verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given high schema coverage and output schema existence, description covers purpose, persistence, and encryption. Minor gap: no mention of update overwrite behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description does not add parameter-level meaning beyond listing the four fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'aggiunge o aggiorna' (adds or updates) and resource 'VPS nella rubrica locale sicura'. Distinguishes from siblings like list_vps and delete_vps.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for storing or updating VPS credentials, but does not explicitly compare with connect_vps or other operations. Lack of when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose, covering different aspects of VPS management and MT5 data retrieval. Overlap between single and aggregate tools (e.g., get_account_info vs get_all_account_info) is intentional and well-documented.
All tool names follow a consistent verb_noun pattern in snake_case, such as check_vps_status, get_account_info, list_terminals. The naming is predictable and makes the function of each tool immediately clear.
16 tools is well-scoped for the server's purpose of remote MT5 reading and VPS management. Each tool serves a specific need without redundancy or oversaturation.
The tool set covers all essential operations: VPS lifecycle management (save, list, delete, connect), account info retrieval (single and aggregate), positions, symbols, trade history, logs, and diagnostics. No obvious gaps for the stated read-only domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect your AI to a funded trading account. Read & trade a simulated funded challenge.
Read-only finance and operations controls for AI agents with evidence and safe next actions.
Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to MetaTrader 5 market data, trading history, and technical analysis through Python execution. Supports querying price data, calculating indicators, creating charts, and generating forecasts with Prophet and ML models.3MIT
- AlicenseNot gradedqualityFmaintenanceProvides read-only server monitoring and diagnostic tools for AI assistants to manage Linux and Unraid systems via SSH. It enables natural language interactions for container management, storage health checks, and system log analysis while keeping credentials secure.17ISC
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to trade on MetaTrader 5 using natural language, supporting account management, order placement, and real-time market data.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables read and execution access to multiple MetaTrader 5 accounts, allowing an AI assistant to manage positions, P&L, prices, indicators, history, logs, and trades across accounts.1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Marco7734/mt5-remote-reader-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server