Skip to main content
Glama
matthewtzong

SnapTrade MCP Server

by matthewtzong
README.md
# SnapTrade MCP Server

A Test/Sandbox MCP server that integrates with the SnapTrade API Sandbox environment to provide portfolio oversight, market data, and trading capabilities.

## Features

### Resources
- `portfolio://summary` - High-level overview of total equity, buying power, and daily P&L.
- `account://{id}/positions` - Real-time stream of all holdings in a specific account.
- `account://{accountId}/market/{symbol}/quote` - Current security price for a specific account.

### Tools
- `read_portfolio` - Fetch balances, positions, and history.
- `read_market_data` - Access symbols and real-time quotes.
- `check_trade_impact` - Preview fees and impact before trading.
- `execute_trade` - Finalize a trade that has been checked for impact.
- `lookup_symbol` - Resolve tickers to official SnapTrade UUIDs.

### Prompts
- `analyze_portfolio_risk` - Examines concentration, exposure, and volatility.
- `evaluate_trade_idea` - Performs due diligence on a specific ticker.
- `daily_market_brief` - Generates a morning report for the user.
- `tax_loss_harvesting` - Identifies candidates for tax-efficient selling.

## Configuration

The server requires the following environment variables. 

```env
SNAPTRADE_CLIENT_ID=your_client_id
SNAPTRADE_CONSUMER_KEY=your_consumer_key
SNAPTRADE_USER_ID=your_test_user_id
SNAPTRADE_USER_SECRET=your_test_user_secret
```

## Installation

### 1. Build the Server
```bash
npm install
npm run build
```

### 2. Add to Claude Desktop
Add this to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "snaptrade_sample": {
      "command": "node",
      "args": ["/absolute/path/to/snaptrade_mcp/build/index.js"],
      "env": {
        "SNAPTRADE_CLIENT_ID": "...",
        "SNAPTRADE_CONSUMER_KEY": "...",
        "SNAPTRADE_USER_ID": "...",
        "SNAPTRADE_USER_SECRET": "..."
      }
    }
  }
}
```

## Security & Reliability
- **HMAC-SHA256 Signing**: All requests are cryptographically signed using canonical JSON serialization and sorted query strings.
- **Two-Step Trading**: Prevents accidental orders by forcing an "Impact -> Approval -> Execute" flow.
- **Rate Limiting/Retries**: Implements exponential backoff for HTTP 429 (Rate Limit) errors.
- **Startup Validation**: The server verifies your API connectivity and environment variables immediately on boot.