README.md•5.76 kB
# 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.