Skip to main content
Glama
pdpd22

Stock Market Data

by pdpd22

Stock Market Data MCP

Pythonを書かず、ChatGPTから自然文でYahoo Financeの市場データを取得するRemote MCPサーバーです。 公式MCP Python SDK 2.1.1、yfinance 1.7.0、Streamable HTTP、エンドポイント /mcp。 最初の3ツールに加え、yfinanceの主要なデータ取得機能を14ツールにまとめています。

状態:Render FreeへのHTTPSデプロイ、14ツールの外部実データ検証、ChatGPT Plusでの接続とget_quote呼び出しを確認済み。詳細は docs/STATUS.md

  • GitHub: https://github.com/pdpd22/chatgpt-stock-mcp

  • MCP endpoint: https://chatgpt-stock-mcp.onrender.com/mcp

  • この所有者のChatGPTには Stock Market Data として接続済みです。新しい会話で「+」から選択し、日本語で依頼できます。

  • 公開ディレクトリへの申請は未実施。個人用MVPで、第三者向けのデータ再配信許諾は未確定です。

  • Freeインスタンスは15分無通信で休止し、復帰に約1分かかる場合があります。既存のFreeサービスと月750時間枠を共有します。

必要環境

  • Python 3.12(開発環境は3.12.13)

  • Git(GitHubから取得する場合)

  • インターネット接続。Yahoo FinanceへのHTTP/WebSocket通信が必要です。

  • ChatGPTへの接続にはWeb版の対応アカウントと外部HTTPS URL、または公式Secure MCP Tunnel。

  • このサーバーはOpenAI APIを呼びません。OpenAI APIキー・API課金は不要です。

  • Dockerは任意です。

セットアップ:macOS / Linux

GitHubから取得するかZIPを展開して実行します。

git clone https://github.com/pdpd22/chatgpt-stock-mcp.git
cd chatgpt-stock-mcp
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements-dev.txt
cp .env.example .env
python server.py

セットアップ:Windows PowerShell

cd chatgpt-stock-mcp
py -3.12 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -r requirements-dev.txt
Copy-Item .env.example .env
python server.py

PowerShellの実行ポリシーで有効化できない場合は設定変更せず、直接実行できます。

.\.venv\Scripts\python.exe -m pip install -r requirements-dev.txt
.\.venv\Scripts\python.exe server.py

ローカルURLは http://127.0.0.1:8000/mcp。Webブラウザで開くだけでは正しく検証できません。 ルート //docs は意図的に404です。MCP以外の公開HTTP機能はありません。

テスト

外部サービスに依存しないテスト:

python -m pytest -q
ruff check .

サーバーを起動し、別のターミナル(同じ仮想環境)から実データを検証:

python scripts/smoke_test.py
python scripts/smoke_test.py --extended

サーバーの起動・停止も自動化する場合:

python scripts/smoke_test.py --local --extended

--local はポート18000で子プロセスを起動し、終了時に停止します。 handshake → tools/list → tools/call を実行し、reports/live-smoke.json に結果を保存します。 正常系のエラーは終了コード1です。存在しない銘柄などの意図した異常系だけを成功判定します。 HTTP成功、データ取得成功、ChatGPTによるツール選択成功はそれぞれ別に確認してください。

Tools

ツール

用途

get_quote

最新価格、価格日時、直近日足OHLCV

get_history

日・週・月足、最大300行

get_company_info

会社名、取引所、通貨、業種、時価総額、URL

get_ticker_data

35種の詳細データ。財務諸表、配当、決算、予想、保有者、ニュース等

get_price_history

分足、期間指定、調整株価、時間外、複数銘柄

get_options

満期一覧、コール・プットのオプションチェーン

search_market_data

Search / Lookup、銘柄・関連ニュース検索

get_screen_fields

株式・ETF・投資信託スクリーナーの条件一覧

screen_market

プリセットまたは最大10条件のAND/ORスクリーニング

get_fund_data

ETF・投資信託の組入銘柄、資産配分、債券等

get_market_overview

市場概要、開閉状況

get_sector_industry

セクター・業種概要、関連企業、業種一覧

get_events_calendar

決算・経済指標・IPO・分割予定

sample_live_prices

Yahoo WebSocketの短時間サンプル、最大10秒

自然文の例:

  • 「AAPLの現在の株価を取得して」

  • 「NVDAの過去1年間の株価を取得して」

  • 「7203.Tの最近1か月の値動きを取得して」

  • 「Appleの四半期キャッシュフローを見せて」

  • 「SPYの上位組入銘柄は?」

  • 「AAPLのオプション満期を調べてから、一番近い満期のコールを取得して」

  • 「米国株の出来高ランキングを取得して」

データ種類、制約、除外した管理APIの対応表は docs/COVERAGE.md、実際に検出したJSON Schemaは docs/tool-catalog.json

価格の意味

  • get_quote.price は日時が取得できた通常取引の価格。price_as_of を必ず表示します。

  • 取得できない場合、price_kind=latest_daily_bar として日足の close にフォールバックします。リアルタイム価格とは呼びません。

  • date/open/high/low/close/volume は直近の日足です。取引時間中は未確定の場合があります。

  • fetched_at はサーバーの取得時刻で、相場の発生時刻とは異なります。

  • 通貨はYahooのメタデータを使用し、取得不能ならnull。USDやJPYを推測しません。

  • 欠損・NaN・Infinityはnull。データがないことはゼロを意味しません。

  • get_history は日付昇順で最新N行を返します。5年分は週足または月足を使うと全期間を収めやすくなります。

  • auto_adjust=False でもYahooが過去値に分割調整を適用することがあります。調整方法を結果に記載します。

制限・セキュリティ

  • symbolは24文字以内。.T^GSPCJPY=XBTC-USD などのYahoo記号に対応。URL、パス、コードは拒否。

  • get_historyは最大300行。詳細系は1ページ100件、offset最大5000、列数40、指定fields最大30。

  • 複数銘柄は5銘柄、1銘柄100行、合計300行。取得中に時間制限を超える場合は銘柄数を減らしてください。

  • JSON構造化データは120,000バイト以内。MCP contentにも表示用JSONが入るため、ワイヤー全体は最大およそその2倍+メタデータです。

  • 入力HTTP bodyは16KiB以内。プロセス全体で30ツール呼び出し/分、同時取得4件、応答待ち25秒。

  • キャッシュは30秒、128エントリ。ライブサンプルはキャッシュしません。単一プロセスMVP向けです。

  • タイムアウトしても処理中のワーカー枠を直ちに開放せず、無制限に上流処理が増えないようにしています。

  • ログはリクエストID、ツール名、状態、所要時間。認証ヘッダー・価格本文・会話本文は記録しません。

  • 公開ホストを明示許可しDNS rebindingを防止。ChatGPTはサーバー間通信のためCORSは設定していません。

  • ツールはすべてreadOnly。注文、ファイルアクセス、任意URL、任意コード実行、シェル実行は提供しません。

  • MVPはNo Authentication。URLを知る第三者からの利用を防げないため、個人用検証に限定します。

OAuth追加用に create_server(token_verifier=..., auth_settings=...) を用意しています。 標準SDKの認証ディスカバリーに接続できる構造ですが、実際の認証プロバイダー設定・認可・トークン検証はまだ配備していません。 本番ではscope/audience/有効期限検証、OAuth discovery、共有レート制限、WAF、利用者別上限が必要です。

Provider差し替え

providers/base.py の3メソッドを実装した MarketDataProvidercreate_server(provider=...) に渡します。 詳細機能も対応する場合は ExtendedMarketDataProvider.query(operation, params) を実装します。 コアモデルは models.py。yfinance固有処理は providers/ にまとまっています。 新APIのデータがない機能は明示的なunsupportedエラーにし、データを捏造しません。 API候補比較・利用条件は docs/RESEARCH.md

GitHub

リポジトリ名は chatgpt-stock-mcp を使用します。秘密を含まないソースのみをコミットします。 .env、トークン、証明書、ログ、実相場テスト出力は除外しています。 GitHub上の新規repository作成とpushが済んだかは docs/STATUS.md を確認してください。

Renderデプロイ

個人検証用にRenderのFree Web Serviceを選択。render.yamlplan: free を明示しています。 GitHub接続後、Blueprintとして読み込むか、Python Web Serviceで以下を指定します。

設定

Runtime

Python 3.12.13

Build

pip install -r requirements.txt

Start

python server.py

Instance

Free

Environment

HOST=0.0.0.0REQUESTS_PER_MINUTE=30

MCP path

/mcp

Renderの PORTRENDER_EXTERNAL_HOSTNAME を自動利用します。カスタムドメインは ALLOWED_HOSTS に追加します。 Render側でHTTPSを終端します。ドメイン変更後はHost許可設定とChatGPT接続URLも更新します。 Freeは15分無通信で停止し、再起動に約1分かかる場合があります。ChatGPT接続がタイムアウトしたらサービス起動を待って再試行してください。 月750時間の枠はworkspaceで共有。帯域・ビルド枠超過は支払方法があると追加課金の可能性があります。 課金承認前に有料プラン・カード登録・超過課金を有効にしないでください。本番の常時稼働は別途承認が必要です。

公開URL取得後に実行:

python scripts/smoke_test.py --url https://YOUR-ACTUAL-HOST/mcp --extended

これはURL形式の例です。実デプロイURLではありません。実際のURLはSTATUSに記録します。

ChatGPT接続(公式情報確認日:2026-09-07)

現行公式資料はApps SDKの一部を Plugins に統合しています。旧2023年Plugins、Custom GPT Actionsとは別のMCP接続です。

  1. Web版ChatGPTでSettings → Security and login → Developer modeを有効化。

  2. Pluginsの+から開発用MCP接続を追加。

  3. 名前:Stock Market Data。説明:米国株・日本株の価格、履歴、企業情報と市場データを取得。

  4. Connectionに実際のHTTPS /mcp URLを入力。個人MVPはNo Authentication。

  5. 検出された14ツールを確認し作成。会話のDeveloper modeメニューでこの接続を選択。

  6. 前述の自然文を実行し、実際のツール名・引数・戻り値とサーバーログを照合。

コード変更後は接続のRefreshでメタデータを再読込します。Web検索だけの回答は成功と判定しません。 公式上の対象はPlus / Pro / Business / Enterprise / EducationのWeb版。Freeは対象一覧にありません。 workspace管理者の制限は別です。ユーザー個別の可否はログインした画面で確認する必要があります。 対応プランに変更してもこのサーバー構成を作り直す必要はありません。 代替の公式Secure MCP Tunnelは開発用です。第三者公開には安定した公開HTTPSサーバーが必要です。

利用条件と公開準備

yfinanceのOSSライセンスとYahooデータの利用権は別です。 yfinance公式は研究・教育用途、Yahoo Finance APIの個人利用を案内しています。 個人MVPで検証できますが、第三者提供・商用再配布の許可を意味しません。 公開前に正式なデータ利用契約、認証、運用対策、運営者情報、公開ポリシーと審査を整えます。 docs/PUBLICATION.mddocs/privacy-policy.draft.mddocs/terms.draft.mdchatgpt-app-submission.json を用意しました。 ドラフトを公開済みの規約として扱わないでください。法的同意・申請送信・課金契約は未実施です。

公式資料

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/pdpd22/chatgpt-stock-mcp'

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