mcpbeat Sign in

fxapis — MetaTrader 5 MCP Server

answering

fxapis — MetaTrader 5 is answering right now. Last checked 6 min ago. It exposes 30 tools.

Let AI agents trade and read MetaTrader 5 accounts. Hosted — no terminal for you to run.

Uptime history 26 days of history · worst day 98%
26 days agonow
100.0%
Uptime 24h
91 of 91 checks
30
Tools
read from the server
264 ms
Response time
average over 24h
open, no key
Access
streamable-http

What changed 1

Every tool that appeared, vanished or quietly changed what it asks for. Recorded since 26 October 2026. No other catalogue keeps this.

26 Oct a tool appeared get_price_history

Nothing serious here today

Today is the operative word: we check fxapis — MetaTrader 5 every 15 minutes and re-read its code on every release. Watch it and you find out the day that stops being true.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 6 min ago.

run in your terminal
claude mcp add mt5 --transport http https://api.fxapis.com/mcp
Settings → Connectors → Add custom connector, then paste this address
https://api.fxapis.com/mcp
~/.codex/config.toml
[mcp_servers.mt5]
url = "https://api.fxapis.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "mt5": {
      "url": "https://api.fxapis.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "mt5": {
      "type": "http",
      "url": "https://api.fxapis.com/mcp"
    }
  }
}

Available tools 30

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

account
get_account
One account: login, broker, state, environment, and its last-read balance, equity and free margin. Example: {"account_id": "<id from list_accounts>"}
get_account_figures
Balance, equity, margin, free margin and margin level as decimal strings in the account currency, read every 15 s while online. Set fresh to ask the terminal now (the account must be `ready`). Example: {"account_id": "<id>", "fresh": true}
get_account_overview
One account in one call: state, environment, balance and equity, and its largest open positions with their total P/L. Start here when asked how an account is doing. Example: {"account_id": "<id>"}
get_account_status
Just an account's state, cheap enough to poll every few seconds after bring_accounts_online until `ready`. States invalid_credentials, needs_2fa, needs_certificate and trading_disabled need the user, so stop polling. Example: {"account_id": "<id>"}
list_account_instruments
Each instrument's symbol on this account's broker: mapped, ambiguous (with candidates) or missing. Trade the mapped symbol. Example: {"account_id": "<id>", "query": "XAU"}
place
place_market_order
Opens a position at market on the user's real broker account (or demo) and waits for the broker; confirm account, symbol, side and volume with the user first. On ORDER_UNRESOLVED never resend, poll get_order. Example: {"account_id": "<id>", "symbol": "EURUSD", "side": "buy", "volume": "0.10", "idempotency_key": "<new uuid>"}
place_multi_account_order
Places the same market order on many of the user's real broker accounts (or demo) at once and returns at once; follow it with get_multi_account_order. Confirm the accounts, symbol, side and volume with the user first. Example: {"account_ids": ["<id>", "<id>"], "instrument": "XAUUSD", "side": "buy", "volume": "0.01", "idempotency_key": "<new uuid>"}
place_pending_order
Places a limit or stop order on the user's real broker account (or demo) that waits at the broker; success means working, not filled. Confirm it with the user first. Example: {"account_id": "<id>", "symbol": "EURUSD", "side": "buy", "kind": "limit", "volume": "0.10", "price": "1.08000", "idempotency_key": "<new uuid>"}
cancel
cancel_multi_account_order
Calls off a multi-account order on the user's real broker accounts (or demo) before anything is sent. Once orders went out, close the positions instead. Example: {"multi_account_order_id": "<id>", "idempotency_key": "<new uuid>"}
cancel_order
Cancels a pending order on the user's real broker account (or demo) that has not triggered. If it triggered there is a position to close instead. Example: {"order_id": "<id>", "idempotency_key": "<new uuid>"}
multi
get_multi_account_order
One multi-account order and each account's result; poll it after placing one. An account left `unresolved` must not be resent, so poll its order instead. Example: {"multi_account_order_id": "<id>"}
list_multi_account_orders
Recent multi-account orders (one trade on many accounts), each with its per-account result. Pages with limit and cursor. Example: {}
accounts
list_accounts
The workspace's MT5 accounts with id, login, server, state and environment (demo or live); use the id, not the login, everywhere else. Only `ready` accounts trade, so bring the others online first. Example: {"limit": 25}
bring
bring_accounts_online
Starts each account's MT5 terminal in the cloud and logs it in; poll get_account_status until `ready`. Places no trades and is safe to repeat. Example: {"account_ids": ["<id>"]}
broker
search_broker_servers
MT5 broker servers matching a broker or server name, servers seen working on fxapis first. A server not listed can still be used. Example: {"query": "icmarkets"}
calculate
calculate
The margin an order would need, or its profit between two prices, as the broker computes it; opens nothing. The account must be online. Example: {"account_id": "<id>", "kind": "margin", "symbol": "EURUSD", "side": "buy", "volume": "0.10", "price": "1.08450"}
close
close_position
Closes a position on the user's real broker account (or demo), whole or by volume. Sent twice it opens the opposite position, so reuse an idempotency_key only to retry the same close. Example: {"account_id": "<id>", "position_id": "<brokerPositionId>", "idempotency_key": "<new uuid>"}
deals
list_deals
An account's deal history as the broker recorded it, newest first, including stops that fired, swaps and manual trades. Realised profit is here. Example: {"account_id": "<id>", "since": "2026-10-01T00:00:00Z"}
instruments
list_instruments
Markets named once (XAUUSD, US30, BTCUSD) whatever each broker calls them. list_account_instruments gives one account's own symbol for each. Example: {"category": "metals"}
market
get_market_hours
Whether a market is open now on this account's broker, and when it next opens or closes, in UTC. A broker holiday missing from its schedule still refuses orders. Example: {"account_id": "<id>", "instrument": "XAUUSD"}
modify
modify_position
Moves a position's stop loss or take profit on the user's real broker account (or demo); null removes a level. Remove a stop loss only when the user asks. Example: {"account_id": "<id>", "position_id": "<brokerPositionId>", "stop_loss": "1.08000", "idempotency_key": "<new uuid>"}
order
get_order
The authoritative record of one order: what was asked, the broker's answer, fill volume and price. Poll it after ORDER_UNRESOLVED until it leaves `unknown`. Example: {"order_id": "<id>", "include_deals": true}
orders
list_orders
Orders placed through fxapis, newest first, for one account or all; state `unknown` means still being confirmed, so never resend those. Pages with cursor. Example: {"state": "unknown"}
positions
list_positions
Open positions on one account as last observed; brokerPositionId is what close_position and modify_position take. Pages with limit and cursor. Example: {"account_id": "<id>"}
price
get_price_history
Recent price bars (candles: open, high, low, close, tick volume, spread) for one symbol from this account's broker, oldest first with bar-open times in UTC, for technical analysis such as trend, support and resistance, volatility or moving averages; timeframes M1 to MN1, up to 500 bars, the last bar still forming, and tick volume counts price changes rather than traded lots. The account must be online, and until its terminal is updated at the next scheduled maintenance this answers CAPABILITY_UNAVAILABLE, so use get_quotes for the current price meanwhile. Example: {"account_id": "<id>", "instrument": "XAUUSD", "timeframe": "H1", "count": 100}
quotes
get_quotes
Live bid and ask for up to 20 symbols or instruments from this account's broker; a closed market answers its last price with marketOpen false. The account must be online. Example: {"account_id": "<id>", "instruments": ["EURUSD"]}
symbol
get_symbol_snapshot
One symbol on one account in one call: its specification, live quote, whether the market is open, and the margin for a volume. Use it before proposing a trade. Example: {"account_id": "<id>", "instrument": "XAUUSD", "volume": "0.10", "side": "buy"}
take
take_account_offline
Stops an account's terminal; open positions and their stops stay at the broker. Refused while an order is in flight. Example: {"account_id": "<id>"}
usage
get_usage
This month's usage against the plan, and its cost so far in minor units (9900 is $99.00). Over quota opening is refused, closing never is. Example: {}
workspace
get_workspace
This connection's workspace: its plan, the plan's limits and features, and whether trading is switched off. Call it first when unsure what the user can do. Example: {}

Endpoints

URLTransportStateLatencyChecked
https://api.fxapis.com/mcp streamable-http answering 183 ms 6 min ago

Alternatives to fxapis — MetaTrader 5

same job, measured the same way
MetaTrader 5 MCP Bridge
by vincentwongso

Let an AI agent read and trade a MetaTrader 5 account over MCP, behind a human-approval gate.

428 installs/wk local only
Tickwire for MetaTrader 4 and 5
by tickwire

Hosted MCP server for MT4 and MT5: read accounts, prices and candles, and place or close orders.

answering
Verbasil, company memory
by verbasil

Company memory for your team and its AI agents. Hosted service, account required.

answering
NP Ledger
by npledger

Nonprofit fund accounting your AI agent helps you run — read the books and post entries.

answering
Tally MCP
by usualaccountant

AI for Tally Prime and Tally ERP 9. Hosted MCP server to ask your accounts in any language.

answering
FxSocket
by fxsocket

Read-only MetaTrader 4 and 5 accounts: balances, positions, trade history, quotes and candles.

answering
Kybase
by kyrzin

Self-hosted Markdown memory for AI agents: notes you can read and edit, with hybrid search.

237 installs/wk local only
Dropbox Sign MCP by usefulapi
by usefulapi

Hosted MCP server for Dropbox Sign — signature requests, templates, and account for AI agents.

10 tools answering

fxapis — MetaTrader 5 — questions

Answers built from our own checks of this server.

What can fxapis — MetaTrader 5 do?
It exposes 30 tools, read directly from the server on our last check. Among them: bring_accounts_online, calculate, cancel_multi_account_order, cancel_order, close_position, get_account and 24 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
What is fxapis — MetaTrader 5 mostly used for?
Its tools cluster around account, place and cancel. That is what this server is built to work with — the grouping comes from the actual tool names, not from a category we assigned.
Is fxapis — MetaTrader 5 working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 91 of 91 checks got a reply (100.0%), average response time 264 ms. The bar chart above shows every period we have measured.
How do I connect fxapis — MetaTrader 5?
Copy the ready config from this page. We generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each in the form that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does fxapis — MetaTrader 5 need an API key?
No. fxapis — MetaTrader 5 completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 30 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is fxapis — MetaTrader 5?
It answers our handshake in 264 ms on average, which is faster than 64% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.