Skip to main content
Glama
maven81g

TradeStation MCP Server

by maven81g
README.md
# TradeStation MCP Server

A Model Context Protocol (MCP) server that provides TradeStation API integration for Claude Code and other MCP clients.

## Features

- Real-time market data (quotes, bars, option chains)
- Account information (balances, positions, orders)
- Order preview and validation
- Automatic token refresh management
- Support for both simulation and live environments

## Available Tools

### Market Data
- `marketData` - Get real-time quotes for symbols
- `barChart` - Get historical price bars/candles
- `getSymbolDetails` - Get detailed symbol information
- `getOptionExpirations` - Get available option expiration dates
- `getOptionStrikes` - Get available option strike prices

### Account Management
- `getAccounts` - List all brokerage accounts
- `getBalances` - Get account balances and buying power
- `getPositions` - Get current positions with P&L
- `getOrders` - Get order history with optional status filter
- `getOrderDetails` - Get detailed information for a specific order
- `getExecutions` - Get fills/executions for a specific order

### Order Operations
- `confirmOrder` - Preview order costs and requirements (READ-ONLY, does not execute trades)

## Setup

### Prerequisites

- Node.js 18 or higher
- TradeStation developer account with API credentials
- Active TradeStation account (simulation or live)

### Installation

1. Clone this repository:
```bash
git clone <repository-url>
cd mcp-tradesation
```

2. Install dependencies:
```bash
npm install
```

3. Copy the example environment file:
```bash
cp .env.example .env
```

4. Edit `.env` and add your TradeStation API credentials:
```env
TRADESTATION_CLIENT_ID=your_client_id_here
TRADESTATION_CLIENT_SECRET=your_client_secret_here
TRADESTATION_REFRESH_TOKEN=your_refresh_token_here
TRADESTATION_REDIRECT_URI=http://localhost:3000/callback
```

5. Build the server:
```bash
npm run build
```

### Getting TradeStation API Credentials

1. Go to [TradeStation Developer Portal](https://developer.tradestation.com/)
2. Create a new application to get your Client ID and Client Secret
3. Complete the OAuth flow to obtain a refresh token
4. Add the credentials to your `.env` file

## Configure in Claude Code

Add the following to your Claude Code MCP configuration file:

**macOS/Linux:** `~/.config/claude-code/mcp_config.json`
**Windows:** `%APPDATA%\claude-code\mcp_config.json`

```json
{
  "mcpServers": {
    "tradestation": {
      "command": "node",
      "args": ["/path/to/mcp-tradesation/build/index.js"],
      "env": {
        "TRADESTATION_CLIENT_ID": "your_client_id_here",
        "TRADESTATION_CLIENT_SECRET": "your_client_secret_here",
        "TRADESTATION_REFRESH_TOKEN": "your_refresh_token_here",
        "TRADESTATION_REDIRECT_URI": "http://localhost:3000/callback"
      }
    }
  }
}
```

Alternatively, if you have a `.env` file in the project directory, you can omit the `env` section and the server will automatically load credentials from the `.env` file.

## Usage

Once configured, the MCP tools will be automatically available in Claude Code. You can use them like this:

```
Get a quote for SPY
Show me a 5-minute chart for AAPL with the last 20 bars
What are my account balances?
List my current positions
Preview an order to buy 100 shares of SPY at market price
```

## Development

### Project Structure

```
mcp-tradesation/
├── src/
│   ├── index.ts           # Main MCP server implementation
│   └── test-*.js          # Test scripts for API endpoints
├── build/                 # Compiled JavaScript output
├── .env.example          # Example environment configuration
├── package.json          # Package dependencies and scripts
└── tsconfig.json         # TypeScript configuration
```

### Testing

The project includes several test scripts to verify API functionality:

```bash
# Test token refresh and basic API access
node src/quick-token-test.js

# Test all MCP server functions
node src/test-mcp-functions.js

# Test specific endpoints
node src/test-specific-endpoints.js
```

### Building

```bash
npm run build
```

This compiles the TypeScript source to JavaScript in the `build/` directory.

## Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `TRADESTATION_CLIENT_ID` | Yes | Your TradeStation API client ID |
| `TRADESTATION_CLIENT_SECRET` | Yes | Your TradeStation API client secret |
| `TRADESTATION_REFRESH_TOKEN` | Yes | OAuth refresh token for authentication |
| `TRADESTATION_REDIRECT_URI` | Yes | OAuth redirect URI (must match app config) |
| `TRADESTATION_ACCOUNT_ID` | No | Default account ID for operations |
| `TRADESTATION_ENV` | No | Environment: 'simulation' or 'production' (default: simulation) |

## Troubleshooting

### Token Errors

If you see authentication errors:
1. Verify your credentials in the `.env` file are correct
2. Ensure your refresh token hasn't expired
3. Check that your TradeStation account has API access enabled

### Build Errors

If the build fails:
1. Ensure you have Node.js 18 or higher installed
2. Delete `node_modules` and `build` directories
3. Run `npm install` again
4. Run `npm run build`

### MCP Connection Issues

If Claude Code can't connect to the server:
1. Verify the path to `build/index.js` in your MCP config is correct
2. Check that the server built successfully (`build/index.js` exists)
3. Review Claude Code logs for error messages

## API Documentation

For detailed TradeStation API documentation, visit:
- [TradeStation Developer Portal](https://developer.tradestation.com/)
- [API Documentation](https://api.tradestation.com/docs/)

## License

ISC

## Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.

TDQS

B3.3/5.0

Scored across 13 tools

Disambiguation4/5

Most tools have distinct purposes, such as getAccounts for account lists and getBalances for balances, but there is some overlap between getOrders and getOrderDetails, and between marketData and barChart for price data, which could cause minor confusion.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern with minor deviations, as most tools start with 'get' or descriptive verbs like 'confirm' and 'search', but 'barChart' and 'marketData' break this pattern slightly by using noun-based names.

Tool Count5/5

With 13 tools, the count is well-scoped for a brokerage and trading server, covering key areas like accounts, orders, market data, and options without being overwhelming or insufficient.

Completeness4/5

The toolset provides comprehensive coverage for querying accounts, orders, positions, and market data, but lacks tools for executing trades or modifying orders, which are notable gaps in a trading context.

Maintenance

ActivityInactive
ResponsivenessNo issues