Stock Market Data
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。
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.gitcd 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.pyPowerShellの実行ポリシーで有効化できない場合は設定変更せず、直接実行できます。
.\.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
ツール | 用途 |
| 最新価格、価格日時、直近日足OHLCV |
| 日・週・月足、最大300行 |
| 会社名、取引所、通貨、業種、時価総額、URL |
| 35種の詳細データ。財務諸表、配当、決算、予想、保有者、ニュース等 |
| 分足、期間指定、調整株価、時間外、複数銘柄 |
| 満期一覧、コール・プットのオプションチェーン |
| Search / Lookup、銘柄・関連ニュース検索 |
| 株式・ETF・投資信託スクリーナーの条件一覧 |
| プリセットまたは最大10条件のAND/ORスクリーニング |
| ETF・投資信託の組入銘柄、資産配分、債券等 |
| 市場概要、開閉状況 |
| セクター・業種概要、関連企業、業種一覧 |
| 決算・経済指標・IPO・分割予定 |
| 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、^GSPC、JPY=X、BTC-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メソッドを実装した MarketDataProvider を create_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.yaml は plan: free を明示しています。
GitHub接続後、Blueprintとして読み込むか、Python Web Serviceで以下を指定します。
設定 | 値 |
Runtime | Python 3.12.13 |
Build |
|
Start |
|
Instance | Free |
Environment |
|
MCP path |
|
Renderの PORT と RENDER_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接続です。
Web版ChatGPTでSettings → Security and login → Developer modeを有効化。
Pluginsの+から開発用MCP接続を追加。
名前:Stock Market Data。説明:米国株・日本株の価格、履歴、企業情報と市場データを取得。
Connectionに実際のHTTPS
/mcpURLを入力。個人MVPはNo Authentication。検出された14ツールを確認し作成。会話のDeveloper modeメニューでこの接続を選択。
前述の自然文を実行し、実際のツール名・引数・戻り値とサーバーログを照合。
コード変更後は接続のRefreshでメタデータを再読込します。Web検索だけの回答は成功と判定しません。 公式上の対象はPlus / Pro / Business / Enterprise / EducationのWeb版。Freeは対象一覧にありません。 workspace管理者の制限は別です。ユーザー個別の可否はログインした画面で確認する必要があります。 対応プランに変更してもこのサーバー構成を作り直す必要はありません。 代替の公式Secure MCP Tunnelは開発用です。第三者公開には安定した公開HTTPSサーバーが必要です。
利用条件と公開準備
yfinanceのOSSライセンスとYahooデータの利用権は別です。
yfinance公式は研究・教育用途、Yahoo Finance APIの個人利用を案内しています。
個人MVPで検証できますが、第三者提供・商用再配布の許可を意味しません。
公開前に正式なデータ利用契約、認証、運用対策、運営者情報、公開ポリシーと審査を整えます。
docs/PUBLICATION.md、docs/privacy-policy.draft.md、docs/terms.draft.md、chatgpt-app-submission.json を用意しました。
ドラフトを公開済みの規約として扱わないでください。法的同意・申請送信・課金契約は未実施です。
公式資料
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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