This ETRADE MCP Server provides programmatic access to ETRADE's Market API through the Model Context Protocol, enabling comprehensive market data retrieval and analysis.
Authentication Management: Handle OAuth authentication by retrieving the authorization URL (etrade_get_auth_url) and completing authentication with verification codes (etrade_authenticate).
Market Data Access: Get real-time or delayed quotes for single or multiple symbols (etrade_get_quote), including price, volume, bid/ask spreads, and optionally earnings dates. Supports stocks, options, and mutual funds.
Security Lookup: Search for financial products (etrade_lookup_product) by full or partial symbols or company names, with filtering across security types (equities, mutual funds, options).
Options Analysis: Retrieve detailed option chains (etrade_get_option_chains) with customizable filters for expiration dates, strike price ranges, option types (calls/puts), weekly vs standard options, and price positioning (at-the-money or all).
Expiration Date Discovery: List available option expiration dates (etrade_get_option_expire_dates) for any symbol, filterable by type (weekly, monthly, quarterly, or all).
Environment Support: Works with both E*TRADE sandbox (testing) and production environments, with secure credential management via environment variables.
E*TRADE MCP Server
A Model Context Protocol (MCP) server for E*TRADE's Market API, built with FastMCP.
Features
This MCP server provides access to E*TRADE's Market API endpoints:
Quote: Get real-time and delayed quotes for stocks, options, and mutual funds
Product Lookup: Search for securities by symbol or company name
Option Chains: Get option chains with strikes and expirations
Option Expire Dates: Get available expiration dates for options
Installation
Clone this repository
Install dependencies:
Copy
.env.exampleto.envand add your E*TRADE API credentials:
Edit
.envand add your credentials:
Getting E*TRADE API Credentials
Go to E*TRADE Developer Portal
Sign up or log in with your E*TRADE account
Request a Sandbox consumer key at https://us.etrade.com/etx/ris/apikey
Get your Consumer Key and Consumer Secret
Start with the sandbox environment for testing
Authentication
One-time Setup (Recommended)
Run the authentication script to get and save your access tokens:
This will:
Prompt you to visit an E*TRADE authorization URL
Ask you to enter the verification code
Save the access tokens to your
.envfile
The MCP server will automatically use these saved tokens.
Note: Access tokens expire at midnight US Eastern time, so you'll need to re-authenticate daily.
Alternative: Manual Authentication
You can also authenticate through the MCP tools:
Call
etrade_get_auth_url()to get the authorization URLVisit the URL in your browser and authorize the application
Copy the verification code
Call
etrade_authenticate(verifier="YOUR_CODE")with the verification code
Usage
Running the Server
The server runs as an HTTP server on port 8000 with the MCP endpoint at /mcp:
Or with Python:
The server will start at http://localhost:8000 with the MCP endpoint available at http://localhost:8000/mcp.
Connecting to the Server
Configure your MCP client to connect to the HTTP endpoint:
Available Tools
etrade_get_auth_url()
Get the OAuth authorization URL. This is the first step in authentication.
Returns: Authorization URL to visit in browser
etrade_authenticate(verifier: str)
Complete authentication with the verification code from E*TRADE.
Args:
verifier: Verification code from E*TRADE
Returns: Success message
etrade_get_quote(symbols: str, require_earnings_date: bool = False, skip_mini_options_check: bool = False)
Get stock quotes for one or more symbols.
Args:
symbols: Comma-separated list of symbols (e.g., "AAPL,MSFT,GOOGL")require_earnings_date: Include next earnings dateskip_mini_options_check: Skip mini options check
Returns: Quote data with prices, volume, bid/ask, etc.
etrade_lookup_product(search: str, company: str = None, type: str = None)
Look up products by symbol or company name.
Args:
search: Symbol or partial symbol to searchcompany: Company name (optional)type: Security type - EQ, MF, OPTN (optional)
Returns: List of matching products
etrade_get_option_chains(symbol: str, ...)
Get option chains for a symbol with various filters.
Args:
symbol: Underlying symbolexpiry_year,expiry_month,expiry_day: Expiration date filtersstrike_price_near: Filter strikes near this priceno_of_strikes: Number of strikes to returninclude_weekly: Include weekly optionsoption_category: STANDARD, ALL, MINIchain_type: CALL, PUT, CALLPUTAnd more...
Returns: Option chain data
etrade_get_option_expire_dates(symbol: str, expiry_type: str = None)
Get available option expiration dates.
Args:
symbol: Underlying symbolexpiry_type: WEEKLY, MONTHLY, QUARTERLY, ALL
Returns: List of expiration dates
Example Usage with MCP Client
API Documentation
For detailed API documentation, see:
Environment Variables
ETRADE_CONSUMER_KEY: Your E*TRADE consumer key (required)ETRADE_CONSUMER_SECRET: Your E*TRADE consumer secret (required)ETRADE_ENVIRONMENT:sandboxorproduction(default: sandbox)ETRADE_SANDBOX_BASE_URL: Sandbox API URL (default: https://apisb.etrade.com)ETRADE_PROD_BASE_URL: Production API URL (default: https://api.etrade.com)
Security Notes
Never commit your
.envfile or expose your API credentialsStart with the sandbox environment for testing
OAuth tokens expire; you'll need to re-authenticate periodically
Production environment requires additional E*TRADE account approvals
Reference
This server is based on E*TRADE's sample Python client, which is included in the EtradePythonClient directory for reference.
License
MIT