Tradovate
About
Provides a robust trading API integration for Tradovate, enabling algorithmic traders to access market data, manage orders, and control account operations through a JSON-RPC interface.
Details
- Author
- 0xjmp
- Repository
- 0xjmp/mcp-tradovate
- GitHub stars
- 7
- Downloads
- 402
- License
- MIT License
- Categories
- Design, Developer Tools, API, Security, Frontend, Other
- Tags
- #integration
Jump to
- ✅ Complete Tradovate API integration
- 🔒 Secure authentication handling
- 📈 Real-time market data access
- 💼 Account management
- 📊 Risk management controls
- 🔄 Order placement and management
- 📝 Comprehensive test coverage
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
TradovateCommand (node, npx, python, etc.)npxArguments-
Argument 1
-y -
Argument 2
@highlight/mcp-server
Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
-
Argument 1
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Create a .env file in the project root with your Tradovate credentials:
TRADOVATE_USERNAME=your_username
TRADOVATE_PASSWORD=your_password
TRADOVATE_APP_ID=your_app_id
TRADOVATE_APP_VERSION=your_app_version
TRADOVATE_CID=your_client_id
TRADOVATE_SEC=your_client_secret
To install the Tradovate MCP server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @0xjmp/mcp-tradovate --client claude
1. Clone the repository:
git clone https://github.com/0xjmp/mcp-tradovate.git
cd mcp-tradovate
2. Install dependencies:
go mod download
3. Build the project:
go build ./cmd/mcp-tradovate
4. Run:
./mcp-tradovate
- authenticate: Connect to Tradovate API
- No parameters required
Run all tests with coverage:
go test -v -race -coverprofile=coverage.txt -covermode=atomic ./...
authenticate
Connect to Tradovate API. No parameters required.
get_accounts
List all trading accounts. No parameters required.
get_positions
View current positions. No parameters required.
get_risk_limits
Get risk management settings. Required parameters: account_id (number) - Account ID to get limits for.
set_risk_limits
Configure risk management settings. Required parameters: account_id (number) - Account ID to set limits for, day_max_loss (number) - Maximum daily loss limit, max_drawdown (number) - Maximum drawdown limit, max_position_qty (number) - Maximum position quantity, trailing_stop (number) - Trailing stop percentage.
place_order
Submit a new order. Required parameters: account_id (number) - Account ID to place the order for, contract_id (number) - Contract ID to trade, order_type (string) - Type of order (Market, Limit, etc.), quantity (number) - Number of contracts to trade, time_in_force (string) - Time in force (Day, GTC, IOC, etc.). Optional parameters: price (number) - Order price (required for Limit orders).
cancel_order
Cancel an existing order. Required parameters: order_id (number) - Order ID to cancel.
get_fills
Get fills for a specific order. Required parameters: order_id (number) - Order ID to get fills for.
get_contracts
List available contracts. No parameters required.
get_market_data
Get real-time market data. Required parameters: contract_id (number) - Contract ID to get market data for.
get_historical_data
Get historical price data. Required parameters: contract_id (number) - Contract ID to get data for, start_time (string) - Start time in ISO 8601 format, end_time (string) - End time in ISO 8601 format, interval (string) - Time interval (1m, 5m, 15m, 1h, 1d).
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"tradovate": {
"env": {},
"args": [
"-y",
"@highlight/mcp-server"
],
"command": "npx"
}
}
}
Linux
{
"env": [],
"args": [
"-y",
"@highlight/mcp-server"
],
"command": "npx"
}
Macos
{
"env": [],
"args": [
"-y",
"@highlight/mcp-server"
],
"command": "npx"
}
Windows
{
"env": [],
"args": [
"/c",
"npx",
"-y",
"@highlight/mcp-server"
],
"command": "cmd"
}
MCP Tradovate Server

A Model Context Protocol (MCP) server for Tradovate integration in Claude Desktop. This server enables AI assistants to manage Tradovate trading accounts through natural language interactions.
Features
- ✅ Complete Tradovate API integration
- 🔒 Secure authentication handling
- 📈 Real-time market data access
- 💼 Account management
- 📊 Risk management controls
- 🔄 Order placement and management
- 📝 Comprehensive test coverage
Installation
Installing via Smithery
To install the Tradovate MCP server for Claude Desktop automatically via Smithery:npx -y @smithery/cli install @0xjmp/mcp-tradovate --client claude
Manual Installation
1. Clone the repository:
git clone https://github.com/0xjmp/mcp-tradovate.git
cd mcp-tradovate
2. Install dependencies:
go mod download
3. Build the project:
go build ./cmd/mcp-tradovate
4. Run:
./mcp-tradovate
Configuration
Create a .env file in the project root with your Tradovate credentials:
TRADOVATE_USERNAME=your_username
TRADOVATE_PASSWORD=your_password
TRADOVATE_APP_ID=your_app_id
TRADOVATE_APP_VERSION=your_app_version
TRADOVATE_CID=your_client_id
TRADOVATE_SEC=your_client_secret
Available Tools
Authentication
-authenticate: Connect to Tradovate API
- No parameters required
Account Management
-get_accounts: List all trading accounts
- No parameters required
- get_positions: View current positions
- No parameters required
- get_risk_limits: Get risk management settings
- Required parameters:
- account_id: (number) Account ID to get limits for
- set_risk_limits: Configure risk management settings
- Required parameters:
- account_id: (number) Account ID to set limits for
- day_max_loss: (number) Maximum daily loss limit
- max_drawdown: (number) Maximum drawdown limit
- max_position_qty: (number) Maximum position quantity
- trailing_stop: (number) Trailing stop percentage
Trading Operations
-place_order: Submit a new order
- Required parameters:
- account_id: (number) Account ID to place the order for
- contract_id: (number) Contract ID to trade
- order_type: (string) Type of order (Market, Limit, etc.)
- quantity: (number) Number of contracts to trade
- time_in_force: (string) Time in force (Day, GTC, IOC, etc.)
- Optional parameters:
- price: (number) Order price (required for Limit orders)
- cancel_order: Cancel an existing order
- Required parameters:
- order_id: (number) Order ID to cancel
- get_fills: Get fills for a specific order
- Required parameters:
- order_id: (number) Order ID to get fills for
Market Data
-get_contracts: List available contracts
- No parameters required
- get_market_data: Get real-time market data
- Required parameters:
- contract_id: (number) Contract ID to get market data for
- get_historical_data: Get historical price data
- Required parameters:
- contract_id: (number) Contract ID to get data for
- start_time: (string) Start time in ISO 8601 format
- end_time: (string) End time in ISO 8601 format
- interval: (string) Time interval (1m, 5m, 15m, 1h, 1d)
Development
Running Tests
Run all tests with coverage:
go test -v -race -coverprofile=coverage.txt -covermode=atomic ./...
Code Style
Follow Go best practices and conventions:
go fmt ./...
go vet ./...
Troubleshooting
Common Issues
1. Authentication Failures
- Verify your Tradovate credentials in the .env file
- Ensure your API access is enabled in Tradovate
2. Connection Issues
- Check your internet connection
- Verify Tradovate API status
- Ensure firewall isn't blocking connections
3. Rate Limiting
- Implement appropriate delays between requests
- Monitor API usage limits
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Support
If you encounter any issues or have questions, please file an issue on the GitHub repository.
Author
Jake Peterson (@0xjmp)
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.





