Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

MTContext

REMOTE · MCP.MTCONTEXT.COM · SCANNED OCT 4

Connect any MCP client to MetaTrader 4/5 to read prices, manage positions, and place trades.

0 this week 36 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security89
Transport & Reachability0
Schema Quality & AI Usability0
  • Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
  • Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
  • Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
  • Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
  • Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified

Unverified: 6 categories

Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.

Install

How do I install the MTContext MCP server?

MTContext is a hosted endpoint at https://mcp.mtcontext.com/mcp/v1, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.mtcontext.com

# add to Claude Code
claude mcp add --transport http mtcontext-mtcontext 'https://mcp.mtcontext.com/mcp/v1'
// .cursor/mcp.json
{
  "mcpServers": {
    "mtcontext-mtcontext": {
      "url": "https://mcp.mtcontext.com/mcp/v1"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "mtcontext-mtcontext": {
      "type": "http",
      "url": "https://mcp.mtcontext.com/mcp/v1"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.mtcontext-mtcontext]
url = "https://mcp.mtcontext.com/mcp/v1"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "mtcontext-mtcontext": {
      "type": "remote",
      "url": "https://mcp.mtcontext.com/mcp/v1",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add mtcontext-mtcontext --url 'https://mcp.mtcontext.com/mcp/v1' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  mtcontext-mtcontext:
    url: "https://mcp.mtcontext.com/mcp/v1"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "mtcontext-mtcontext": {
      "Transport": "http",
      "Url": "https://mcp.mtcontext.com/mcp/v1"
    }
  }
}
# add to Vellum
assistant mcp add mtcontext-mtcontext -t streamable-http -u 'https://mcp.mtcontext.com/mcp/v1'
// mcp.json
{
  "mcpServers": {
    "mtcontext-mtcontext": {
      "type": "http",
      "url": "https://mcp.mtcontext.com/mcp/v1"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 11 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 2 Aug 26 0
    • Endpoint reachability: reachable → behind authorisation ▼ security
    • Authorization: unverified → fail ▼ security
    • Stability: 0.13 → unverified ▼ security
    • Transport: pass → unverified ▼ security
    • Capabilities: pass → unverified ▼ functional
    • Tool coverage: 100 → unverified ▼ functional
    • First check of Schema quality: unverified functional
  • 31 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 29 Jul 26 0
    • Stability: unverified → 0.03 ▲ functional
  • 28 Jul 26 0

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 6 Oct 2026 · Probed https://mcp.mtcontext.com/mcp/v1

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=mcp.mtcontext.com CN=YR1,O=Let's Encrypt,C=US 25 Aug 2026 23 Nov 2026 RSA 2048 SHA256-RSA 68dba12b752e97fbbf11c6d1431f67128c2
SANs: mcp.mtcontext.com
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.mtcontext.com. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
mtcontext.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Challenged, unverified

The endpoint asked for a token, but we could not retrieve and validate the RFC 9728 metadata that tells a client how to obtain one.

Result Challenged, unverified
Enforced On connection
HTTP status 401
Header Value
strict-transport-security max-age=31536000; includeSubDomains; preload
x-content-type-options nosniff
referrer-policy strict-origin-when-cross-origin

Protected resource metadata

Retrieved No
Problem no_resource_metadata

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.mtcontext.com/mcp/v1 Auth required 401
http (plaintext) http://mcp.mtcontext.com/mcp/v1 HTTPS enforced 301 https://mcp.mtcontext.com/mcp/v1
MCP tools · 73 exposed · ~7,548 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
get_tick_history ~59

Returns a sequence of raw ticks for a symbol. Result: { ticks: [{ time, bid, ask, last, volume }] }.

NameTypeReqDescription
countinteger––
from_datestring––
symbolstringyes–

No output schema declared.

No examples provided.

get_trade_history ~41

Returns closed trades with optional date range filter.

NameTypeReqDescription
from_datestring––
limitinteger––
to_datestring––

No output schema declared.

No examples provided.

get_trade_stats ~76

Returns aggregate statistics over closed trades: total_trades, win/loss counts, win_rate, avg_profit, avg_loss, profit_factor, total_pnl, expectancy, max_drawdown_percent, sharpe_ratio, consistency_percent.

NameTypeReqDescription
from_datestring––
symbolstring––
to_date–––

No output schema declared.

No examples provided.

list_alerts ~56

Lists all alerts for this license with status (active/fired/cancelled), condition, mode, fire count, and last_evaluated_at (stale while the terminal is disconnected — evaluation pauses). Available at Pro+ tier.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_experts ~19

Returns all Expert Advisors currently attached to open charts.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

modify_order ~119

Modifies the price, stop_loss, take_profit, or expiry of a pending order. At least one of price, stop_loss, take_profit, or expiry must be provided. Defaults to dry_run=true — set dry_run=false to execute live. Requires the `trade` capability and inp_AllowTrading=true on the EA.

NameTypeReqDescription
dry_runboolean––
expiryinteger––
pricenumber––
stop_lossnumber––
take_profitnumber––
ticketintegeryes–

No output schema declared.

No examples provided.

modify_position ~96

Modifies the stop_loss and/or take_profit of an open position. At least one of stop_loss or take_profit must be provided. Defaults to dry_run=true — set dry_run=false to execute live. Requires the `trade` capability and inp_AllowTrading=true on the EA.

NameTypeReqDescription
dry_runboolean––
stop_lossnumber––
take_profitnumber––
ticketintegeryes–

No output schema declared.

No examples provided.

partial_close ~103

Closes a portion of an open position. `volume` must be less than the full position volume. Defaults to dry_run=true — set dry_run=false to execute live. Returns INVALID_PARAMETER if volume >= position volume, POSITION_NOT_FOUND if position closed between dry-run and live call. Requires the `trade` capability and inp_AllowTrading=true on the EA.

NameTypeReqDescription
dry_runboolean––
ticketintegeryes–
volumenumberyes–

No output schema declared.

No examples provided.

place_order ~161

Places a market or pending order on MT5. Defaults to dry_run=true — set dry_run=false to execute live. Pending orders may set expiry (unix epoch seconds) for broker-side expiration; expiry is rejected on market orders. Requires the `trade` capability and inp_AllowTrading=true on the EA.

NameTypeReqDescription
commentstring––
dry_runboolean––
expiryinteger–Pending orders only: expiration as unix epoch seconds (UTC). Must be in the future.
magicinteger––
order_typestringyes–
pricenumber––
stop_lossnumber––
symbolstringyes–
take_profitnumber––
volumenumberyes–

No output schema declared.

No examples provided.

poll_alerts ~94

Drains undelivered fired-alert events (oldest first) and marks them delivered. Each event carries event_id, the alert's condition echo, the triggering values, and the fired timestamp. Events are retained 7 days; pass include_delivered=true to see the retained history. Call this periodically — alerts are pull-based, nothing is pushed. Available at Pro+ tier.

NameTypeReqDescription
include_deliveredboolean––

No output schema declared.

No examples provided.

query_journal ~127

Queries trade journal entries, newest first. Filters: ticket, tag, setup, from_date/to_date (ISO), and search (case-insensitive text match). Entries linked to closed trades include realized_pnl when the terminal is connected (null otherwise). Available at Free+ tier.

NameTypeReqDescription
from_datestring–ISO date
limitinteger––
offsetinteger––
searchstring––
setupstring––
tagstring––
ticketinteger––
to_datestring–ISO date

No output schema declared.

No examples provided.

read_ea_logs ~47

Returns recent lines from the EA log file. available=false when the log cannot be read (MQL5 sandbox).

NameTypeReqDescription
countinteger––
datestring––

No output schema declared.

No examples provided.

remove_equity_guard ~63

Removes the equity guard. If the guard is currently breached (or breached_pending), removal requires confirm=true — this prevents silently disabling an active safety rail; without it the call returns CONFIRM_REQUIRED. Requires the `trade` capability.

NameTypeReqDescription
confirmboolean––

No output schema declared.

No examples provided.

remove_news_guard ~39

Removes the news guard for this license. The guard stops polling immediately. Returns { removed: true } on success. Requires the `analytics` capability.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

remove_prop_firm_rules ~55

Removes the prop-firm ruleset for the terminal (does not touch any linked equity guard — remove that separately with remove_equity_guard). Returns RULESET_NOT_FOUND if none exists. Requires the `trade` capability.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

reverse_position ~175

Closes an open position and opens a market order in the opposite direction as ONE EA command (single trade-context acquisition — minimises the gap between the two fills vs separate close_position + place_order calls). volume defaults to the closed volume; optional stop_loss / take_profit apply to the new position. If the close succeeds but the open fails (margin, market closed), returns REVERSE_PARTIAL with the close details and leaves the account flat — the EA never retries the open on its own. Defaults to dry_run=true — set dry_run=false to execute live. Requires the `trade` capability and inp_AllowTrading=true on the EA.

NameTypeReqDescription
dry_runboolean––
stop_lossnumber––
take_profitnumber––
ticketintegeryes–
volumenumber––

No output schema declared.

No examples provided.

scan_symbols ~96

Scans Market Watch symbols and filters by spread, RSI, or ATR thresholds. At least one filter criterion must be provided. Returns up to 50 symbols. If scanning takes over 10 seconds, partial results are returned with partial=true. Requires the `read` capability (Pro+ tier).

NameTypeReqDescription
filterobjectyes–
limitinteger––
sort_bystring––
timeframestring––

No output schema declared.

No examples provided.

set_breakeven ~110

Moves the stop loss of a position (or all positions) to its entry price. Optional buffer_points adds N points on the safe side of entry. Returns POSITION_NOT_IN_PROFIT if the position has not yet moved favourably. Defaults to dry_run=true — set dry_run=false to execute live. Requires the `trade` capability and inp_AllowTrading=true on the EA.

NameTypeReqDescription
buffer_pointsinteger––
dry_runboolean––
ticketinteger––

No output schema declared.

No examples provided.

set_equity_guard ~251

Configures an account-level circuit breaker enforced server-side (survives this session): when equity falls max_daily_loss_percent below the daily anchor (or max_total_drawdown_percent below initial equity), the guard breaches. breach_action: close_all = close all positions then block new live trades until the daily reset; block_new = block only; notify = record an alert event only (see poll_alerts). Evaluation runs on a ~30s sampling loop while the terminal is connected; if disconnected at breach time, the trade block still applies and close_all executes on reconnect. This is best-effort protection above the broker's own stop-out, not a replacement for stop losses. One guard per license — calling again replaces it. Requires the `trade` capability.

NameTypeReqDescription
breach_actionstringyes–
initial_balancenumber–Alias for initial_equity.
initial_equitynumber–Starting account equity for total drawdown calculation basis.
max_daily_loss_percentnumberyes–
max_total_drawdown_percentnumber––
reset_timezonestring–IANA timezone for the daily reset boundary, e.g. 'UTC' or 'Europe/Prague'.

No output schema declared.

No examples provided.

set_news_guard ~116

Configures a persistent server-side news monitor. When enabled, the guard polls news at the specified interval, classifies articles by severity and affected currencies, and triggers alerts (via poll_alerts) when articles meet the threshold. One guard per license — calling again replaces the config. Notify-only: the guard never closes positions or blocks trades. Requires the `analytics` capability.

NameTypeReqDescription
currenciesarrayyes–
keywordsarray––
min_severitystring––
poll_interval_secondsinteger––

No output schema declared.

No examples provided.

set_prop_firm_rules ~391

Configures a per-terminal prop-firm ruleset evaluated server-side (survives this session). Rules: max_daily_loss_percent (vs the daily equity anchor), optional max_total_drawdown_percent with drawdown_mode (static = from initial balance; trailing = from the high-watermark) and drawdown_basis (balance or equity), optional profit_target_percent, min_trading_days, and consistency_max_day_share_percent (max share of total profit from a single day). A preset (ftmo | generic) pre-fills defaults but the stored ruleset is always fully resolved — explicit params win. reset_timezone (IANA) sets the daily boundary. initial_balance seeds the drawdown basis for mid-challenge onboarding (otherwise seeded from a live sample). One ruleset per (license, terminal); re-calling replaces rule values but preserves the watermark unless initial_balance is re-supplied. ADVISORY ONLY — this never blocks trades. Pass link_equity_guard: true to also install a matching equity guard (breach_action default block_new) for actual enforcement. Requires the `trade` capability.

NameTypeReqDescription
breach_actionstring––
consistency_max_day_share_percentnumber––
drawdown_basisstring––
drawdown_modestring––
initial_balancenumber––
initial_equitynumber–Alias for initial_balance. Starting account balance/equity for drawdown basis.
link_equity_guardboolean–Install a matching equity guard for enforcement.
max_daily_loss_percentnumber––
max_total_drawdown_percentnumber––
min_trading_daysinteger––
presetstring––
profit_target_percentnumber––
reset_timezonestring–IANA timezone for the daily reset boundary, e.g. 'Europe/Prague'.

No output schema declared.

No examples provided.

set_trailing_stop ~117

Registers a software trailing stop on a position. The EA updates the SL each timer cycle when price moves trailing_points in the position's favour. IMPORTANT: trailing state is lost if the EA restarts — callers should re-set after reconnect. trailing_points minimum is 10. Defaults to dry_run=true — set dry_run=false to register live. Requires the `trade` capability and inp_AllowTrading=true on the EA.

NameTypeReqDescription
dry_runboolean––
ticketintegeryes–
trailing_pointsintegeryes–

No output schema declared.

No examples provided.

write_trade_note ~139

Persists a trade journal entry: rationale, setup label, and tags, optionally linked to a position/order ticket. Entries are append-only and immutable — to correct one, write a new note with amends_entry_id pointing at the original. Use at order time to capture WHY a trade was taken; query later with query_journal for post-trade review and per-setup statistics. Free tier stores up to 100 entries. Available at Free+ tier.

NameTypeReqDescription
amends_entry_idstring––
setupstring––
tagsarray––
textstringyes–
ticketinteger––

No output schema declared.

No examples provided.

Common questions

What is the MTContext MCP server?

MTContext is an MCP server listed in the public MCP registry as io.github.mtcontext/mtcontext. Connect any MCP client to MetaTrader 4/5 to read prices, manage positions, and place trades. This page covers its hosted endpoint (https://mcp.mtcontext.com/mcp/v1).

Is the MTContext MCP server safe to use?

MTContext scores 36 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the MTContext MCP server expose?

MTContext exposes 73 tools: get_tick, get_bars, get_symbols, get_symbol_info, get_account_info, and 68 more. Their descriptions and schemas cost roughly 7,548 tokens of context every time the server is loaded.

Does the MTContext MCP server require authentication?

Yes. MTContext asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the MTContext MCP server still maintained?

MTContext is still listed as active in the MCP registry. We last reached this channel on 4 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.