Capital.com MCP Server

io.github.SimonTarara62Published by GitHub account SimonTarara62v0.3.4Updated Oct 27, 2026

Unofficial community MCP for the Capital.com Open API. Guarded two-phase trades; demo-first.

The publisher's own server: capital.new mandate draft tools

VerifiedSTDIODesktop onlyFinanceData & Analytics

Overview

AI-generated overview

Unofficial local MCP server for the Capital.com trading API, giving an assistant market data, watchlists and guarded two-phase trade execution.

What you can do
  • Check session and account state, list accounts, switch accounts, read preferences and activity/transaction history, and top up a demo balance
  • Search markets, read market details and snapshots, browse navigation nodes, pull historical OHLC candles and client long/short sentiment
  • List open positions and working orders, preview a position or working order, then execute, amend, close or cancel with confirmation
  • Create, read, update and delete watchlists and their markets
  • Stream live prices, candles, price alerts and portfolio P&L over WebSocket when enabled
  • Run guided prompts for market scans, trade proposals, position reviews and live monitoring, plus read-only search and fetch adapters
When to use it
Useful when you want an assistant to research Capital.com instruments, review positions and orders, or prepare and execute trades under explicit guardrails, starting on a demo account. Not for anyone who needs an official, vendor-supported integration.
Requirements
Runs locally as a Python package via uvx or pipx (stdio, or HTTP for remote hosting). Needs a Capital.com API key, API password and account identifier, supplied inline, through a .env file path, or via command-based secret lookups. Trading requires CAP_ALLOW_TRADING and an EPIC allowlist; streaming requires CAP_WS_ENABLED. Network access to the Capital.com API.
Before you install
Unofficial and educational, not affiliated with Capital.com and not financial advice. Credentials CAP_API_KEY, CAP_API_PASSWORD and CAP_IDENTIFIER are secrets; keep them out of client config files where possible. Trading is off by default but, once enabled, tools can place, amend, close and cancel real orders and delete watchlists; use a demo key first, keep CAP_DRY_RUN and allowlists in place, and treat an ambiguous TIMEOUT confirmation as needing reconciliation rather than retry.

Installation

In SourceWeft

  1. Open Capital.com MCP Server in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Capital.com MCP Server

Self-hosted Model Context Protocol (MCP) server for the Capital.com Open API, written in Python on FastMCP. It exposes 42 safe, guarded trading and market-data tools — two-phase execution, allowlists, demo-first — to any MCP client, over stdio or HTTP. Built on the tested capitalcom-cli broker engine (SDK).

Works with Claude Desktop · Claude Code · Cursor · VS Code (Copilot) · Windsurf · ChatGPT — any MCP client.

[PyPI version] [Python versions] [CI] [License: Apache-2.0] [MCP Registry] [Glama quality score] [PyPI downloads]

⚠️ Unofficial & educational. Not affiliated with Capital.com. Trading is risky and this is not financial advice. Trading is disabled by default; all trades are two-phase (preview → confirm → execute) with allowlists and size/rate limits. Start on a demo account. Apache-2.0 licensed.

Install

No clone required — uvx runs it in an isolated, throwaway environment and always fetches the latest tested release:

bash
uvx capitalcom-mcp --help        # smoke test

Or install a persistent command with pipx:

bash
pipx install capitalcom-mcp

Pinning for production / real-money use

uvx capitalcom-mcp always runs the latest published release. That is fine for trying it out, but for production or real-money use, pin the exact version so an unexpected update can't change tool behavior under you:

json
{  "mcpServers": {    "capitalcom": {      "command": "uvx",      "args": ["capitalcom-mcp==0.3.4"],      "env": { "CAP_ENV_FILE": "/Users/you/.config/capital-mcp/.env" }    }  }}

The CLI form is uvx capitalcom-mcp==0.3.4 run …. Pin to a version you have reviewed, and bump deliberately after reading the CHANGELOG.

1. Add your credentials (once)

Get an API key in the Capital.com app: Settings → API integrations (make a demo key first). Then run the wizard — it writes a 0600 file and prints the exact client snippet:

bash
uvx capitalcom-mcp init

This writes ~/.config/capital-mcp/.env. Verify any time (no secrets printed):

bash
uvx capitalcom-mcp doctor

Inspect the full effective configuration (redacted, offline) or confirm your credentials actually authenticate:

bash
uvx capitalcom-mcp config          # effective settings + credential sourceuvx capitalcom-mcp doctor --login  # verify authentication against the API

Prefer a secret manager? Set CAP_API_KEY_CMD / CAP_IDENTIFIER_CMD / CAP_API_PASSWORD_CMD to a command that prints the secret (e.g. op read op://vault/..., pass ...). The secret is fetched at launch and never written to disk or to your client config.

2. Add the server to your client

Every client uses the same command/args/env shape. Pasting "CAP_ENV_FILE": "<path from init>" keeps secrets out of the client file; or put CAP_API_KEY/CAP_IDENTIFIER/CAP_API_PASSWORD directly in env.

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (macOS) / %APPDATA%\Claude\claude_desktop_config.json (Windows):

json
{  "mcpServers": {    "capitalcom": {      "command": "uvx",      "args": ["capitalcom-mcp"],      "env": { "CAP_ENV_FILE": "/Users/you/.config/capital-mcp/.env" }    }  }}

Claude Code

bash
claude mcp add --transport stdio \  --env CAP_ENV_FILE=/Users/you/.config/capital-mcp/.env \  capitalcom -- uvx capitalcom-mcp

Cursor

~/.cursor/mcp.json (global) or .cursor/mcp.json (project):

json
{  "mcpServers": {    "capitalcom": {      "command": "uvx",      "args": ["capitalcom-mcp"],      "env": { "CAP_ENV_FILE": "/Users/you/.config/capital-mcp/.env" }    }  }}

VS Code (Copilot)

.vscode/mcp.json — note the root key is servers and type: "stdio":

json
{  "servers": {    "capitalcom": {      "type": "stdio",      "command": "uvx",      "args": ["capitalcom-mcp"],      "env": { "CAP_ENV_FILE": "/Users/you/.config/capital-mcp/.env" }    }  }}

Windsurf

~/.codeium/windsurf/mcp_config.json:

json
{  "mcpServers": {    "capitalcom": {      "command": "uvx",      "args": ["capitalcom-mcp"],      "env": { "CAP_ENV_FILE": "/Users/you/.config/capital-mcp/.env" }    }  }}

ChatGPT

ChatGPT requires a remote server (stdio is not supported) — see Remote / VPS hosting. Once your server is reachable over HTTPS, enable Developer Mode (Settings → Connectors → Advanced) and add the server URL ending in /mcp. ChatGPT Deep Research connectors call two read-only tools, search and fetch, which this server implements; full custom tools require Developer Mode.

Remote / VPS hosting

Run with streamable-HTTP instead of stdio:

bash
CAP_ENV_FILE=/home/you/.config/capital-mcp/.env \  capitalcom-mcp run --transport http --host 0.0.0.0 --port 8000# endpoint: http://<host>:8000/mcp

Or via env (handy in systemd): CAP_MCP_TRANSPORT=http, CAP_MCP_HOST, CAP_MCP_PORT. Put it behind a TLS-terminating reverse proxy for any public use.

What's inside — tools, resources & prompts

This server exposes 42 tools, 4 resources, and 7 guided prompts. All tool names are prefixed cap_ except the two ChatGPT Deep Research adapters (search, fetch). Mutating tools require confirm=true; trades are two-phase. The full surface is a stable contract — see API stability.

Session & account

ToolWhat it does
cap_session_statusCurrent login/session state.
cap_session_loginAuthenticate (optionally force=true).
cap_session_pingKeep-alive / liveness check.
cap_session_logoutEnd the session.
cap_session_switch_accountSwitch the active trading account.
cap_account_listList accounts and the active account id.
cap_account_preferences_getRead account preferences (e.g. hedging mode).
cap_account_preferences_setUpdate preferences (confirm required).
cap_account_history_activityAccount activity history.
cap_account_history_transactionsTransaction history.
cap_account_demo_topupTop up a demo balance (confirm required).

Market data

ToolWhat it does
cap_market_searchSearch instruments by term.
cap_market_getFull market details + snapshot for an EPIC.
cap_market_navigation_rootTop-level market navigation nodes.
cap_market_navigation_nodeDrill into a navigation node.
cap_market_pricesHistorical OHLC candles.
cap_market_sentimentClient long/short positioning.

Trading (read → preview → execute → manage)

ToolWhat it does
cap_trade_positions_listOpen positions.
cap_trade_positions_getOne position by deal id.
cap_trade_orders_listWorking (pending) orders.
cap_trade_confirm_getFetch a deal confirmation by reference.
cap_trade_confirm_waitPoll until a deal confirms (or times out).
cap_trade_preview_positionPhase 1: validate a market position (no execution).
cap_trade_preview_working_orderPhase 1: validate a working order.
cap_trade_execute_positionPhase 2: execute a previewed position (confirm).
cap_trade_execute_working_orderPhase 2: place a previewed working order (confirm).
cap_trade_positions_closeClose a position (confirm).
cap_trade_orders_cancelCancel a working order (confirm).
cap_trade_positions_amendAmend stop/limit on a position (confirm).
cap_trade_orders_amendAmend a working order (confirm).

Watchlists

ToolWhat it does
cap_watchlists_listList watchlists.
cap_watchlists_getGet one watchlist's markets.
cap_watchlists_createCreate a watchlist (confirm).
cap_watchlists_add_marketAdd an EPIC (confirm).
cap_watchlists_remove_marketRemove an EPIC (confirm).
cap_watchlists_deleteDelete a watchlist (confirm).

Streaming (WebSocket; requires CAP_WS_ENABLED=true)

ToolWhat it does
cap_stream_pricesLive bid/ask updates for EPICs.
cap_stream_candlesLive OHLC candle updates.
cap_stream_alertsThreshold price alerts.
cap_stream_portfolioLive position/P&L updates.

ChatGPT Deep Research adapters

ToolWhat it does
searchRead-only instrument search (ChatGPT connector contract).
fetchRead-only instrument fetch by id (ChatGPT connector contract).

Resources

URIWhat it returns
cap://statusSession/connection status snapshot.
cap://risk-policyActive risk policy (trading flag, caps).
cap://allowed-epicsThe trading EPIC allowlist.
cap://market-cache/{epic}Cached market snapshot for an EPIC.

Guided prompts

Prompts are reusable workflows your client can launch by name. They emit step-by-step guidance that orchestrates the tools above — they never trade on their own.

PromptPurpose
market_scanScan a watchlist for opportunities (prices + sentiment).
trade_proposalDesign a risk-sized trade and validate it via preview.
execute_tradeSafely execute a previously previewed trade.
position_reviewReview open positions and working orders.
live_price_monitorStream prices and flag threshold moves.
real_time_alertsConfigure and watch live price alerts.
live_portfolio_monitorStream live portfolio P&L with a threshold.

Safety model

  • Trading off unless CAP_ALLOW_TRADING=true and the EPIC is in CAP_ALLOWED_EPICS (or ALL).
  • Two-phase execution; confirm=true required for mutations.
  • Size, open-position, and daily-order caps; CAP_DRY_RUN=true blocks all executions. A TIMEOUT confirmation is ambiguous — reconcile, don't blindly retry.

Development

bash
make install   # editable MCP + capitalcom-cli SDK from PyPImake check     # ruff + mypy + pytest (offline; no network/credentials)

End-to-end tests drive every tool through the MCP against the demo API (read, watchlists, account switch, preview/execute/amend/close/cancel, streaming). They place real demo orders and clean up after themselves, so use a demo .env with trading + streaming enabled:

bash
# demo .env: CAP_ALLOW_TRADING=true, CAP_ALLOWED_EPICS=GOLD, CAP_WS_ENABLED=trueCAP_MCP_E2E=1 pytest -m e2e -v

Contributing

Contributions are welcome — this is a community project. Start with CONTRIBUTING.md, browse good first issues, and see the roadmap for where it's heading. The architecture and a worked "add a tool" example are in docs/extending.md.

License

Apache-2.0. See LICENSE and NOTICE.

Source: README.md at commit d16c071

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.3.4LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Capital integrations