About FxSocket
FxSocket MCP gives AI assistants read-only access to MetaTrader 4 and 5 account data through FxSocket. It exposes balances, positions, trade history and market data, and cannot place, change or close orders.
Key features
- 01List accessible trading accounts
- 02Read account balances and status
- 03Inspect open positions and pending orders
- 04Review closed trades and performance
- 05Look up quotes and symbol specifications
- 06Retrieve price-history candles
Use cases
- 01Check account balances and equity
- 02Review open positions and floating P/L
- 03Analyze closed trades by period
- 04Inspect quotes and historical candles
MCP support
FxSocket exposes account and market-data tools to MCP clients. Clients can use the remote MCP endpoint with an X-API-Key header or run a local stdio relay; all access is read-only.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://mcp.fxsocket.com/mcpclaude mcp add --transport http com-fxsocket https://mcp.fxsocket.com/mcp{"mcpServers":{"com-fxsocket":{"type":"http","url":"https://mcp.fxsocket.com/mcp"}}}Open in Cursor{"servers":{"com-fxsocket":{"type":"http","url":"https://mcp.fxsocket.com/mcp"}}}Open in VS Code{"mcpServers":{"com-fxsocket":{"type":"http","url":"https://mcp.fxsocket.com/mcp"}}}{"mcpServers":{"com-fxsocket":{"serverUrl":"https://mcp.fxsocket.com/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
https://mcp.fxsocket.com/mcpAuth requiredTools
Details
From the project READMEFxSocket MCP
Lets Claude, Cursor, VS Code and other MCP clients read your MetaTrader 4 and 5 accounts on FxSocket: balances, open positions, closed trades with win rate and P/L, quotes, symbol specifications and price history. It is read-only. It cannot place, modify or close orders.
This image runs FxSocket's MCP server as a local stdio server, for
clients that start their servers themselves (Claude Desktop, Docker's MCP
Toolkit, or anything configured with a command). It relays each message
to https://mcp.fxsocket.com/mcp with your API key. The tools run on
FxSocket, next to the terminals your accounts are connected to, so the
image stays tiny and never needs updating when tools change.
If your client takes a remote server URL plus a header, you can skip the
image: point it at https://mcp.fxsocket.com/mcp with your key in an
X-API-Key header.
1. Get an API key
Create a read-only key (fxs_ro_...) at
app.fxsocket.com/dashboard/api-key.
A named key scoped to some of your accounts limits the agent to exactly
those. A full fxs_live_... key works too, but an agent has no use for one.
2. Add it to your client
Claude Desktop (Settings, Developer, Edit Config, then restart):
{
"mcpServers": {
"fxsocket": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "FXSOCKET_API_KEY", "fxsocket/mcp"],
"env": { "FXSOCKET_API_KEY": "fxs_ro_..." }
}
}
}
Claude Code:
claude mcp add fxsocket -e FXSOCKET_API_KEY=fxs_ro_... -- docker run -i --rm -e FXSOCKET_API_KEY fxsocket/mcp
Cursor (~/.cursor/mcp.json):
{
"mcpServers": {
"fxsocket": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "FXSOCKET_API_KEY", "fxsocket/mcp"],
"env": { "FXSOCKET_API_KEY": "fxs_ro_..." }
}
}
}
VS Code (.vscode/mcp.json, prompts for the key once):
{
"inputs": [
{ "type": "promptString", "id": "fxsocket-key", "description": "FxSocket API key", "password": true }
],
"servers": {
"fxsocket": {
"type": "stdio",
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "FXSOCKET_API_KEY", "fxsocket/mcp"],
"env": { "FXSOCKET_API_KEY": "${input:fxsocket-key}" }
}
}
}
-e FXSOCKET_API_KEY without a value passes the variable through from the
client's env, so the key never appears in the process list.
Without Docker: the relay is one file with no dependencies. Download
fxsocket_mcp.py and use python3 (3.10 or newer) as
the command with the file's path as the argument, keeping the same env.
Tools
| Tool | What it answers |
|---|---|
list_accounts | Every account the key can see, optionally with balance, equity and totals per currency. Call first. |
get_account | One account in full: summary, broker info and terminal status. |
get_open_positions | Open positions and pending orders across accounts, with floating P/L and swap. |
get_trade_history | Closed trades for a period, with wins, losses, win rate, net P/L and a per-symbol breakdown. |
search_symbols | Find the broker's exact symbol name (EURUSD, EURUSD.sd, EURUSDm...). |
get_quotes | Live bid/ask and spread for up to 20 symbols. |
get_symbol_info | Contract specification: digits, contract size, volume limits, swaps, sessions. |
get_price_history | OHLC candles for a symbol and timeframe. |
Amounts are in each account's deposit currency and are never summed across currencies. Times are broker server time.
Configuration
| Variable | Default | |
|---|---|---|
FXSOCKET_API_KEY | (required) | Your FxSocket API key. |
FXSOCKET_MCP_URL | https://mcp.fxsocket.com/mcp | The server to relay to. Plain http is only allowed to localhost. |
FXSOCKET_MCP_TIMEOUT | 120 | Seconds to wait for one reply. |
FXSOCKET_MCP_LOG | info | error, warning, info or debug. Logs go to stderr. |
FxSocket allows 60 MCP requests a minute per user.
How it works
The client writes newline-delimited JSON-RPC to the container's stdin. The relay POSTs each message to the MCP endpoint over a kept-alive HTTPS connection, adds the API key and the headers the protocol requires, and writes the replies to stdout. It handles both protocol eras:
- 2026-07-28: the protocol version travels in each request's
_meta, and the relay mirrors it into theMCP-Protocol-Version,Mcp-MethodandMcp-Nameheaders (plus anyx-mcp-headertool parameters). - 2025-03-26 to 2025-11-25: the client opens with
initialize, and the relay sends the negotiated version asMCP-Protocol-Versionfrom then on.
If FxSocket rejects the key, the relay still answers initialize and
tools/list from the server's public card
(https://mcp.fxsocket.com/.well-known/mcp/server-card.json), so
directories and inspectors that start it with a placeholder key can see
the tools. Every tool call still needs a valid key and otherwise returns
the rejection.
Requests run concurrently. A notifications/cancelled from the client
closes that request's connection, which is how Streamable HTTP cancels.
HTTP failures (bad key, rate limit, network) come back as JSON-RPC errors
with a sentence saying what to fix, rather than a hung client.
Development
python3 -m unittest discover -s tests
docker build -t fxsocket/mcp:dev .
The tests start the relay as a subprocess against a local stub server, so they cover the real stdio and HTTP paths.
To release, bump __version__ in fxsocket_mcp.py, then push a matching
tag (git tag v1.0.1 && git push --tags). The publish workflow builds
linux/amd64 and linux/arm64 and pushes fxsocket/mcp:<version>,
:<major>.<minor> and :latest, and the dockerhub-overview workflow
copies this README to the Docker Hub page.
License
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.