Skip to main content
Glama
amahpour

Income Screener MCP Server

by amahpour

Income Screener MCP Server

Claudeをpyetrade経由でE*Tradeに接続し、インカムゲイン重視のトレーディングリサーチを行うPython製MCPサーバーです。

  • リアルタイム株価(株式、優先株、ベビーボンド)

  • オプションチェーンの検索

  • 年率利回りフィルター付きのプット売り候補スクリーニング

  • ポートフォリオのポジション監視

アーキテクチャ

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

前提条件

  1. 有効なE*Trade証券口座。

  2. developer.etrade.comから取得した開発者用APIキー。本番環境用キーの承認には3〜5営業日かかります。

  3. Python 3.10以上。

セットアップ

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

auth.pyはOAuth1フローを実行します。URLを表示(ブラウザで自動的に開こうとします)し、E*Tradeのサイトでアプリを承認後、検証コードをターミナルに貼り付けると、生成されたアクセストークンが.envに書き込まれます。

注意: E*Tradeのアクセストークンは米国東部時間の深夜に期限切れとなります。サーバーを使用する前に、毎朝python auth.pyを再実行してください。

サーバーの実行

python server.py

このサーバーはstdio経由でMCPと通信します。対話形式で実行するのではなく、MCPクライアント(Claude Desktop、Claude Codeなど)によって起動されるように設計されています。

Claude Desktopの設定

claude_desktop_config.jsonに以下を追加します:

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

ツール

ツール

説明

get_quote(symbols)

最大25銘柄までのリアルタイム株価を取得します。

get_option_expire_dates(symbol)

指定銘柄の利用可能なオプション満期日を取得します。

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

オプションチェーンのウィンドウを取得します。

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

年率利回りに基づいてプット売りのインカム候補をランク付けします。

get_portfolio()

認証済みプロファイルの最初の口座のポジションを取得します。

年率利回り

screen_put_candidates(bid / strike) * (365 / DTE)を計算し、min_annual_yieldでフィルタリングします。結果は利回りの高い順にソートされます。

デフォルトのウォッチリスト

screen_put_candidatessymbolsなしで呼び出すと、組み込みの株式リスト(HPQ, HPE, PFE, T, VZ, F, INTC, DOW, KHC, WBA)が使用されます。優先株/ベビーボンドのウォッチリストは、get_quoteで使用するためにserver.py内で定義されています。

注意事項

  • server.pydev=False(本番API)を使用します。E*Tradeのサンドボックス環境では、実際のオプションチェーンデータは返されません。

  • 優先株のシンボル形式(例: JPM-CJPMpC)は異なる場合があります。特定のティッカーでテストしてください。

  • screen_put_candidates内の呼び出しは、E*Tradeのレート制限内に収まるよう0.5秒の遅延を入れてシリアル化されています。

ファイル

.
├── 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