Tradestation MCP
MCP Server for TradeStation API - Market Data, Brokerage, and Order Execution
Installation
npx tradestation-mcpAsk AI about Tradestation MCP
Powered by Claude Β· Grounded in docs
I know everything about Tradestation MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
TradeStation MCP Server
An MCP (Model Context Protocol) server that exposes the full TradeStation API as tools for LLM-powered applications like Claude Desktop, VS Code Copilot, and other MCP clients.
Features
- 36 MCP Tools covering all three TradeStation API categories:
- Market Data (17 tools): Quotes, historical bars, option chains, market depth, symbol search, streaming
- Brokerage (11 tools): Accounts, balances, positions, orders, order history, streaming
- Order Execution (8 tools): Place/confirm/replace/cancel orders, group orders (OCO/Bracket), routes
- 5 MCP Prompts for common workflows: portfolio review, stock lookup, trade placement, options analysis, daily summary
- Built-in OAuth2 Authentication: Opens your browser for secure TradeStation login β no manual token management
- Automatic Token Refresh: Access tokens refresh automatically (they expire every 20 minutes)
- Streaming Support: Real-time market data and order updates via time-bounded collection windows
- Smart Account Resolution: Brokerage tools auto-detect your accounts when IDs aren't specified
- Rich Tool Descriptions: Domain-tagged descriptions ensure the LLM correctly routes "What's my balance?" to brokerage tools and "What's the stock price?" to market data tools
Prerequisites
- Python 3.10+
- TradeStation Account with API access
- TradeStation API Key β Get one here
Installation
From PyPI (recommended)
pip install tradestation-mcp
From source (development)
# Clone the repository
git clone https://github.com/theelderwand/tradestation-mcp.git
cd tradestation-mcp
# Create and activate a virtual environment
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
# source .venv/bin/activate
# Install in development mode with dev dependencies
pip install -e ".[dev]"
Quick run with uvx (no install needed)
uvx tradestation-mcp
Configuration
-
Copy the example environment file:
copy .env.example .env -
Edit
.envwith your TradeStation API credentials:TS_CLIENT_ID=your_api_key_here TS_CLIENT_SECRET=your_api_secret_here TS_REDIRECT_PORT=3000 -
Make sure your API key has
http://localhost:3000in its Allowed Callback URLs (this is a default for new keys).
First Run β Authentication
On first launch, the server will:
- Open your default browser to the TradeStation login page
- You log in with your TradeStation credentials and authorize the application
- The browser redirects back to
localhost:3000where the server captures the auth code - Tokens are exchanged and saved to
~/.tradestation_mcp_tokens.json
Subsequent launches will use the saved refresh token β no browser needed unless the refresh token is revoked.
Usage with GitHub Copilot CLI
GitHub Copilot CLI stores MCP server configs in ~/.copilot/mcp-config.json. You can set it up in two ways:
Option A: Interactive (inside Copilot CLI)
- Launch
copilot(orgh copilot) in your terminal - Type
/mcp add - Fill in the fields:
- Name:
tradestation - Type:
stdio - Command:
tradestation-mcp(if installed via pip)
- Name:
- Press
Ctrl+Sto save
Option B: Edit the config file directly
Create or edit ~/.copilot/mcp-config.json:
{
"mcpServers": {
"tradestation": {
"type": "stdio",
"command": "tradestation-mcp",
"env": {
"TS_CLIENT_ID": "your_api_key",
"TS_CLIENT_SECRET": "your_api_secret"
}
}
}
}
Note: If you installed from source instead of pip, replace
"command": "tradestation-mcp"with the full path to your Python executable and use"args": ["-m", "tradestation_mcp.server"].
Verify it works
Inside Copilot CLI, type /mcp to see your configured servers and confirm tradestation is listed. Then try:
Use the tradestation MCP server to get a quote for MSFT
Allow tools without manual approval (optional)
copilot --allow-tool 'tradestation'
Or deny specific dangerous tools while allowing the rest:
copilot --allow-tool 'tradestation' --deny-tool 'tradestation(place_order)' --deny-tool 'tradestation(place_group_order)'
Usage with Claude Desktop
Add to your Claude Desktop configuration (%APPDATA%\Claude\claude_desktop_config.json on Windows):
{
"mcpServers": {
"tradestation": {
"command": "tradestation-mcp",
"env": {
"TS_CLIENT_ID": "your_api_key",
"TS_CLIENT_SECRET": "your_api_secret"
}
}
}
}
Usage with VS Code (Copilot / MCP)
Add to your VS Code .vscode/mcp.json:
{
"servers": {
"tradestation": {
"command": "tradestation-mcp",
"env": {
"TS_CLIENT_ID": "your_api_key",
"TS_CLIENT_SECRET": "your_api_secret"
}
}
}
}
Tool Reference
Market Data Tools
| Tool | Description | Example Query |
|---|---|---|
get_quote_snapshots | Current price quotes | "What's the stock price of MSFT?" |
get_bars | Historical OHLCV bars | "Show me AAPL daily chart for last month" |
stream_bars | Live streaming bars | "Stream live 1-minute bars for TSLA" |
get_crypto_symbol_names | List crypto pairs | "What crypto symbols are available?" |
get_symbol_details | Symbol info/metadata | "What exchange does MSFT trade on?" |
get_option_expirations | Option expiry dates | "When do AAPL options expire?" |
get_option_risk_reward | Risk/reward analysis | "What's the max profit on this spread?" |
get_option_spread_types | Available strategies | "What option spread types exist?" |
get_option_strikes | Available strikes | "Show strikes for AAPL options" |
stream_option_chain | Live option chain | "Show me the AAPL option chain" |
stream_option_quotes | Live option pricing | "Stream greeks for these contracts" |
stream_quotes | Live quote stream | "Stream live prices for MSFT,AAPL" |
stream_market_depth_quotes | Level 2 data | "Show market depth for MSFT" |
stream_market_depth_aggregates | Aggregated depth | "Show aggregated order book for SPY" |
suggest_symbols | Symbol autocomplete | "Find symbols for Tesla" |
search_symbols | Advanced symbol search | "Search for ES futures" |
stream_tick_bars | Tick-based bars | "Show tick bars for MSFT" |
Brokerage Tools
| Tool | Description | Example Query |
|---|---|---|
get_accounts | List accounts | "What accounts do I have?" |
get_balances | Current balances | "What's my account balance?" |
get_balances_bod | Opening balances | "What was my balance at market open?" |
get_positions | Current holdings | "What stocks do I own?" |
get_orders | Today's orders | "Do I have any open orders?" |
get_orders_by_id | Specific order lookup | "Show me order 123456789" |
get_historical_orders | Past order history | "Show my trades from last week" |
get_historical_orders_by_id | Specific past order | "Find historical order 123456789" |
stream_orders | Live order updates | "Stream my order status updates" |
stream_orders_by_id | Live specific order | "Watch order 123456789 for fills" |
stream_positions | Live position updates | "Stream my portfolio P&L" |
Order Execution Tools
| Tool | Description | Example Query |
|---|---|---|
confirm_order | Preview order cost | "How much to buy 100 MSFT?" |
place_order | Execute a trade | "Buy 100 shares of MSFT" |
confirm_group_order | Preview group order | "Preview my bracket order" |
place_group_order | Place OCO/bracket | "Place bracket order on AAPL" |
replace_order | Modify open order | "Change my limit to $150" |
cancel_order | Cancel open order | "Cancel order 123456789" |
get_activation_triggers | Conditional triggers | "What trigger types are available?" |
get_routes | Order routes | "What routes can I use?" |
Security Notes
- Token Storage: Tokens are saved in plaintext at
~/.tradestation_mcp_tokens.json. This file contains your refresh token which can be used to obtain new access tokens. Ensure your home directory has appropriate permissions. - Refresh Tokens: By default, TradeStation refresh tokens do not expire. You can contact TradeStation Client Experience to enable rotation (30-minute expiry).
- Order Safety: The
place_ordertool description instructs the LLM to always callconfirm_orderfirst, but this is guidance β the tool itself does not enforce it. - Production API: This server connects to TradeStation's production API. All orders are REAL.
Troubleshooting
"TS_CLIENT_ID environment variable is required"
- Ensure your
.envfile exists or set the environment variables directly.
Browser doesn't open for authentication
- Manually visit the URL printed in stderr logs.
- Ensure port 3000 (or your configured port) is not in use.
"Token refresh failed"
- Delete
~/.tradestation_mcp_tokens.jsonand restart to re-authenticate.
"No brokerage accounts found"
- Ensure your API key has the correct logins configured. Contact TradeStation Client Experience.
Contributing
See CONTRIBUTING.md for development setup and guidelines.
