Tradovate

by 0xjmp

7 stars
402 downloads
Not rated
GitHub Website

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

- ✅ 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:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Tradovate
    Command (node, npx, python, etc.) npx
    Arguments
    • 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.

  4. 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

![](https://badge.mcpx.dev?type=server 'MCP Server')
smithery badge
Go Report Card
codecov
Go Reference
License: MIT

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)

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.