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.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@E*TRADE MCP Serverget quote for AAPL and MSFT"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 .envEdit
.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.pyThis 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:
etrade-mcpOr with Python:
python -m etrade_mcp.serverThe 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, 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
# 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 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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.