Skip to main content
Glama

E*TRADE MCP Server

by jjmerri
README.md5.92 kB
# 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: ```bash pip install -e . ``` 3. Copy `.env.example` to `.env` and add your E\*TRADE API credentials: ```bash cp .env.example .env ``` 4. 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](https://developer.etrade.com/) 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](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: ```bash 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`: ```bash etrade-mcp ``` Or with Python: ```bash 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: ```json { "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 ```python # 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: - [E\*TRADE API Documentation](https://developer.etrade.com/home) - [Market Quote API](https://apisb.etrade.com/docs/api/market/api-quote-v1.html) ## 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

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jjmerri/etrade-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server