Lets AI clients read MetaTrader 4, MetaTrader 5, and cTrader account data including balances, positions, trade history, and price quotes.
Also known as fxsocket-com/FxSocket-MCP, fxsocket-mcp
- Stars
- 0
- Tools
- 8
- Downloads, 30 days
- —
- Latest version
- 1.0.1
- Last commit
- Nov 11, 2026
- License
- MIT
What is FxSocket MCP?
FxSocket lets AI clients read MetaTrader 4, MetaTrader 5, and cTrader account data including balances, positions, trade history, and price quotes. It exposes 8 tools, such as list_accounts, get_account, get_open_positions.
Summary generated from the project's README
About FxSocket MCP server
FxSocket provides a read-only bridge between AI clients and trading accounts on MetaTrader 4, MetaTrader 5, and cTrader. Developers using Claude Desktop, Cursor, VS Code, or Claude Code can connect their agents to live financial data through a local stdio server. The system operates by relaying messages to a remote endpoint using an API key, ensuring the local footprint remains small while providing access to real-time market information.
Users can interact with their accounts using specific tools like list_accounts, get_open_positions, and get_trade_history to analyze performance. The server also offers market data through get_quotes, get_symbol_info, and get_price_history. Because it is strictly read-only, the agent can view balances, positions, and symbol specifications but cannot execute or modify any trades. The service supports up to 60 requests per minute per user and requires a read-only API key starting with the fxs_ro_ prefix for secure access.
What you can do with it
- 1Analyze trading performanceAsk the AI to review your closed trades to determine your current win rate and profit or loss.
- 2Monitor live market dataRequest real-time bid, ask, and spread information for a specific list of currency symbols.
- 3Check account statusHave the agent list all available accounts along with their current equity and total balances.
- 4Research symbol specificationsRetrieve technical details such as contract size, volume limits, and trading sessions for a symbol.
Written from the project's README. Every use case is checked against a quote from it.
How to install FxSocket MCP
Formats verified 10 Nov 2026Install FxSocket MCP in Claude Code
$ claude mcp add --env FXSOCKET_API_KEY=<YOUR_FXSOCKET_API_KEY> fxsocket-mcp -- docker run -i --rm docker.io/fxsocket/mcp:1.0.1Install FxSocket MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"fxsocket-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/fxsocket/mcp:1.0.1"
],
"env": {
"FXSOCKET_API_KEY": "<YOUR_FXSOCKET_API_KEY>"
}
}
}
}Install FxSocket MCP in VS Code
.vscode/mcp.json
{
"servers": {
"fxsocket-mcp": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/fxsocket/mcp:1.0.1"
],
"env": {
"FXSOCKET_API_KEY": "<YOUR_FXSOCKET_API_KEY>"
}
}
}
}Install FxSocket MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"fxsocket-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/fxsocket/mcp:1.0.1"
],
"env": {
"FXSOCKET_API_KEY": "<YOUR_FXSOCKET_API_KEY>"
}
}
}
}Install FxSocket MCP in Codex
~/.codex/config.toml
[mcp_servers.fxsocket-mcp] command = "docker" args = ["run", "-i", "--rm", "docker.io/fxsocket/mcp:1.0.1"] [mcp_servers.fxsocket-mcp.env] FXSOCKET_API_KEY = "<YOUR_FXSOCKET_API_KEY>"
Install FxSocket MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"fxsocket-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"docker.io/fxsocket/mcp:1.0.1"
],
"env": {
"FXSOCKET_API_KEY": "<YOUR_FXSOCKET_API_KEY>"
}
}
}
}FxSocket MCP tools 8
Detected from the READMElist_accountsget_accountget_open_positionsget_trade_historysearch_symbolsget_quotesget_symbol_infoget_price_history
| list_accounts | — | |
| get_account | — | |
| get_open_positions | — | |
| get_trade_history | — | |
| search_symbols | — | |
| get_quotes | — | |
| get_symbol_info | — | |
| get_price_history | — |
Configuration
FXSOCKET_API_KEYRequiredSecretFxSocket API key. A read-only key (fxs_ro_...) is enough: https://app.fxsocket.com/dashboard/api-key
| Name | Description | |
|---|---|---|
| FXSOCKET_API_KEY | FxSocket API key. A read-only key (fxs_ro_...) is enough: https://app.fxsocket.com/dashboard/api-key | RequiredSecret |
Automated checks
Ran Nov 12, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packageNot checked
- Remote endpoint uses HTTPSPass
- Destructive tools are labelledPass
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesNot checked
README
View on GitHubFxSocket MCP
Lets Claude, Cursor, VS Code and other MCP clients read your MetaTrader 4, MetaTrader 5 and cTrader 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
FxSocket MCP questions
How do I add FxSocket MCP to Claude Code?
Run claude mcp add --env FXSOCKET_API_KEY=<YOUR_FXSOCKET_API_KEY> fxsocket-mcp -- docker run -i --rm docker.io/fxsocket/mcp:1.0.1 in your terminal. Add --scope user to make it available in every project.
How do I add FxSocket MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does FxSocket MCP provide?
It exposes 8 tools, including list_accounts, get_account, get_open_positions, get_trade_history, search_symbols.
Can this server place or modify trades?
No, the server is read-only and cannot place, modify, or close orders.
What kind of account data can I access?
You can access balances, open positions, closed trades with win rate and P/L, quotes, symbol specifications, and price history.
How many requests can I make per minute?
FxSocket allows up to 60 MCP requests per minute per user.