tastytrade-mcp
MCP server for the tastytrade brokerage API, providing tools for account management, market data, and order execution.
README
tastytrade-mcp
MCP server for the tastytrade brokerage API, built in TypeScript on the official @tastytrade/api SDK. Runs over stdio.
This is a rebuild of the earlier Python tastytrade_mcp server with a deliberately leaner surface: single-tenant, env-var auth, no database, and only tools backed by real API endpoints.
Setup
No clone, no build — npx installs straight from this repo and compiles automatically on first run. You need Node 20+ and SSH access to this GitHub repo (the same git@github.com key you use for pushing).
-
Create an OAuth client and a personal-grant refresh token at my.tastytrade.com → Manage → API Access. You need the client secret and the refresh token (access tokens are generated and refreshed automatically).
-
Put the secrets in your environment (shell profile, or a gitignored
.envloaded by direnv — never in a file you commit):export TASTYTRADE_CLIENT_SECRET="..." export TASTYTRADE_REFRESH_TOKEN="..." -
Register with your MCP client.
Project
.mcp.json(Claude Code) — safe to commit..mcp.jsonsupports${VAR}environment-variable expansion, so the file holds only references; values are read from the environment Claude Code was launched in. If a variable is missing, the config fails to load rather than silently sending an empty secret:{ "mcpServers": { "tastytrade": { "command": "npx", "args": ["-y", "git+ssh://git@github.com/bholzer/tastytrade-mcp.git"], "env": { "TASTYTRADE_CLIENT_SECRET": "${TASTYTRADE_CLIENT_SECRET}", "TASTYTRADE_REFRESH_TOKEN": "${TASTYTRADE_REFRESH_TOKEN}", "TASTYTRADE_ENVIRONMENT": "${TASTYTRADE_ENVIRONMENT:-production}" } } } }⚠️ Don't use
claude mcp add --scope project --env TASTYTRADE_CLIENT_SECRET=...— that writes the literal secret value into.mcp.json, which is exactly the file that gets committed. Write the${VAR}form by hand as above.One-liner (Claude Code, user scope).
claude mcp adddefaults to local/user config (~/.claude.json), which never leaves your machine, so passing values directly is acceptable there:claude mcp add tastytrade \ --env TASTYTRADE_CLIENT_SECRET="$TASTYTRADE_CLIENT_SECRET" \ --env TASTYTRADE_REFRESH_TOKEN="$TASTYTRADE_REFRESH_TOKEN" \ -- npx -y git+ssh://git@github.com/bholzer/tastytrade-mcp.gitClaude Desktop.
claude_desktop_config.jsondoes not support${VAR}expansion — you have to paste the values in. That file is local-only (not committed), but be aware the secrets sit in plaintext on disk.The first launch takes ~30s while npm clones and compiles; after that it starts from cache. To pin a specific version, append a tag or commit:
...tastytrade-mcp.git#v1.0.0.
Updating
npx caches the install. To pick up new commits:
npx clear-npx-cache # then the next launch re-installs from HEAD
(Or pin to tags and bump the tag in your config.)
Running from a local checkout (development)
claude mcp add tastytrade \
--env TASTYTRADE_CLIENT_SECRET="$TASTYTRADE_CLIENT_SECRET" \
--env TASTYTRADE_REFRESH_TOKEN="$TASTYTRADE_REFRESH_TOKEN" \
-- node /path/to/tastytrade-mcp/dist/index.js
Environment variables
| Variable | Required | Description |
|---|---|---|
TASTYTRADE_CLIENT_SECRET |
yes | OAuth client secret |
TASTYTRADE_REFRESH_TOKEN |
yes | OAuth personal-grant refresh token |
TASTYTRADE_ENVIRONMENT |
no | production (default) or sandbox (cert environment) |
TASTYTRADE_SCOPES |
no | OAuth scopes, default read trade |
Tools (18)
System
health_check— verify credentials, report environment and customer.
Accounts & portfolio
get_accounts— list accounts.get_balances— cash, net liq, buying power, margin usage.get_positions— open positions, filterable by symbol/underlying, optional marks.get_transactions— transaction history with date/symbol/type filters and paging.get_net_liq_history— historical net liquidating value (1d–all).get_margin_requirements— margin/buying-power requirements report.
Market data
search_symbols— symbol search.get_instrument— full instrument definition (tick size, streamer symbol, …) for equities, options, futures, future options, crypto.get_market_metrics— IV rank/percentile, liquidity, beta, earnings/dividend dates.get_option_chain— nested option chain with expiration/DTE/strike/type filters; returns an expiration summary when unfiltered to keep responses small.get_quotes— live bid/ask, last trade, OHLC summary, and Greeks (for options) via the dxLink websocket streamer. Accepts equity, OCC option, futures, and future-option symbols.
Trading
create_order— 1–4 leg orders for any instrument type. Dry-run by default: returns the preview (buying-power effect, fees, warnings) without placing anything; requires explicitdry_run: falseto submit.list_orders— order history or live working orders.get_order— single order status.cancel_order— cancel one order.replace_order— modify price/type/TIF of a working order.cancel_all_orders— cancel every working order in an account (optionally one underlying).
Differences from the Python server
- OAuth only (the v7 JS SDK no longer supports session login as a client config). Sandbox use requires a cert-environment OAuth client instead of sandbox username/password.
- Dropped: multi-user database mode, encrypted token storage, shortcuts, and tools that had stub/fake implementations (fake streaming endpoints, correlation analysis, opportunity scanning). The persistent "emergency state" machinery is replaced by the real
cancel_all_ordersaction. set_stop_loss/set_take_profitare expressible throughcreate_order(order_type: "Stop"/"Limit"with closing legs).
Development
npm run watch # incremental compile
npm start # run the built server
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.