etrade-mcp

jjmerri/etrade-mcp

3.2

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.

Tools
6
Resources
0
Prompts
0

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

  1. Clone this repository
  2. Install dependencies:
pip install -e .
  1. Copy .env.example to .env and add your E*TRADE API credentials:
cp .env.example .env
  1. Edit .env and 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

  1. Go to E*TRADE Developer Portal
  2. Sign up or log in with your E*TRADE account
  3. Request a Sandbox consumer key at https://us.etrade.com/etx/ris/apikey
  4. Get your Consumer Key and Consumer Secret
  5. 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:

  1. Prompt you to visit an E*TRADE authorization URL
  2. Ask you to enter the verification code
  3. Save the access tokens to your .env file

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:

  1. Call etrade_get_auth_url() to get the authorization URL
  2. Visit the URL in your browser and authorize the application
  3. Copy the verification code
  4. 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 date
  • skip_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 search
  • company: 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 symbol
  • expiry_year, expiry_month, expiry_day: Expiration date filters
  • strike_price_near: Filter strikes near this price
  • no_of_strikes: Number of strikes to return
  • include_weekly: Include weekly options
  • option_category: STANDARD, ALL, MINI
  • chain_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 symbol
  • expiry_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: sandbox or production (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 .env file 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