jjmerri/etrade-mcp
If you are the rightful owner of etrade-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
This document provides a comprehensive overview of the E*TRADE MCP Server, a Model Context Protocol server for accessing E*TRADE's Market API.
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:
pip install -e .
- Copy
.env.exampleto.envand add your E*TRADE API credentials:
cp .env.example .env
- Edit
.envand add your credentials:
ETRADE_CONSUMER_KEY=your_consumer_key_here
ETRADE_CONSUMER_SECRET=your_consumer_secret_here
ETRADE_ENVIRONMENT=sandbox # or 'production'
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:
python authenticate.py
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 URL - Visit 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:
etrade-mcp
Or with Python:
python -m etrade_mcp.server
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:
{
"mcpServers": {
"etrade": {
"url": "http://localhost:8000/mcp"
}
}
}
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, CALLPUT- And 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
# Get authorization URL
auth_url = etrade_get_auth_url()
# Visit the URL, authorize, get verifier code
# Authenticate
etrade_authenticate(verifier="12345")
# Get a quote
quote = etrade_get_quote(symbols="AAPL")
# Look up a product
results = etrade_lookup_product(search="Apple")
# Get option chains
chains = etrade_get_option_chains(
symbol="AAPL",
chain_type="CALL",
price_type="ATNM"
)
# Get expiration dates
dates = etrade_get_option_expire_dates(symbol="AAPL")
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 credentials - Start 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