Skip to main content
Glama
amahpour

Income Screener MCP Server

by amahpour

Servidor MCP de Income Screener

Un servidor MCP en Python que conecta Claude a E*Trade mediante pyetrade para investigación de trading orientada a ingresos:

  • Cotizaciones en tiempo real (acciones, preferentes, bonos baby)

  • Búsquedas de cadenas de opciones

  • Selección de candidatos para venta de puts con filtros de rendimiento anualizado

  • Monitoreo de posiciones de cartera

Arquitectura

Claude (Claude Code / Claude Desktop)
    ↓ MCP protocol (stdio)
server.py  (FastMCP + pyetrade)
    ↓ OAuth1 REST
E*Trade API (api.etrade.com)

Requisitos previos

  1. Una cuenta de corretaje E*Trade activa.

  2. Claves de API de desarrollador de developer.etrade.com. Las claves de producción tardan de 3 a 5 días hábiles en aprobarse.

  3. Python 3.10+.

Configuración

pip install -r requirements.txt
cp .env.example .env
# edit .env and set ETRADE_CONSUMER_KEY / ETRADE_CONSUMER_SECRET
python auth.py

auth.py guía el flujo OAuth1: imprime una URL (e intenta abrir tu navegador), autorizas la aplicación en el sitio de E*Trade, pegas el código de verificación en la terminal y los tokens de acceso resultantes se escriben en .env.

Nota: Los tokens de acceso de E*Trade caducan a medianoche ET. Vuelve a ejecutar python auth.py cada mañana antes de usar el servidor.

Ejecución del servidor

python server.py

El servidor utiliza MCP a través de stdio y está diseñado para ser iniciado por un cliente MCP (Claude Desktop, Claude Code, etc.) en lugar de ejecutarse de forma interactiva.

Configuración de Claude Desktop

Añadir a claude_desktop_config.json:

{
  "mcpServers": {
    "income-screener": {
      "command": "python",
      "args": ["server.py"],
      "cwd": "/home/amahpour/code/pyetrade-mcp"
    }
  }
}

Herramientas

Herramienta

Descripción

get_quote(symbols)

Cotizaciones en tiempo real para hasta 25 símbolos.

get_option_expire_dates(symbol)

Fechas de vencimiento de opciones disponibles para un símbolo.

get_option_chain(symbol, chain_type, expiry_date, strike_price_near, num_strikes)

Obtener una ventana de cadena de opciones.

screen_put_candidates(symbols, max_strike_pct, min_annual_yield, min_open_interest, months_out)

Clasificar candidatos de venta de puts por rendimiento anualizado.

get_portfolio()

Posiciones para la primera cuenta en el perfil autenticado.

Rendimiento anualizado

screen_put_candidates calcula (bid / strike) * (365 / DTE) y filtra por min_annual_yield. Los resultados se ordenan de mayor a menor rendimiento.

Listas de seguimiento predeterminadas

Si llamas a screen_put_candidates sin symbols, utiliza una lista de acciones integrada (HPQ, HPE, PFE, T, VZ, F, INTC, DOW, KHC, WBA). En server.py se define una lista de seguimiento de preferentes/bonos baby para usar con get_quote.

Notas

  • server.py utiliza dev=False (API de producción). El entorno de pruebas (sandbox) de E*Trade no devuelve datos reales de cadenas de opciones.

  • El formato de los símbolos de acciones preferentes (p. ej., JPM-C frente a JPMpC) puede variar; prueba con tus tickers específicos.

  • Las llamadas en screen_put_candidates se serializan con un retraso de 0,5 s para mantenerse dentro de los límites de tasa de E*Trade.

Archivos

.
├── README.md
├── LICENSE
├── requirements.txt    # pyetrade, mcp[cli], python-dotenv
├── .env.example        # template — copy to .env and fill in
├── auth.py             # one-shot OAuth token refresh
└── server.py           # FastMCP server + all 5 tools
-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

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/amahpour/pyetrade-mcp'

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