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:
Manual Installation
Clone the repository:
Install dependencies:
Build the project:
Run:
Configuration
Create a `.env` file in the project root with your Tradovate credentials:
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:
Code Style
Follow Go best practices and conventions:
Troubleshooting
Common Issues
**Authentication Failures**
- Verify your Tradovate credentials in the `.env` file
- Ensure your API access is enabled in Tradovate
**Connection Issues**
- Check your internet connection
- Verify Tradovate API status
- Ensure firewall isn't blocking connections
**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](LICENSE) file for details.
Support
If you encounter any issues or have questions, please file an issue on the GitHub repository.