🚀 株式市場MCPサーバー
yfinanceを活用した、インドおよびグローバルの株式市場データ用の包括的なモデルコンテキストプロトコル(MCP)サーバーです。NSE/BSEおよび国際市場の両方に対応した、インテリジェントなシンボル解決、リアルタイムデータ、高度なチャート生成機能を備えています。
✨ 主な機能
インテリジェントなシンボル解決
- スマートな名前からシンボルへの変換:"Reliance"、"Apple"、"TCS"などの会社名を正確なシンボルの代わりに使用できます。
- ファジーマッチング:タイプミスや部分的な名前にも信頼度スコア付きで対応します。
- コンテキスト認識:地域のユーザーに対してはインドの株式(.NS/.BO)を優先します。
- 複数形式対応:正確なシンボル(RELIANCE.NS)と自然な名前(Reliance)の両方を受け付けます。
リアルタイム株式データ
- リアルタイム相場:現在の価格、変動、出来高、時価総額を提供します。
- 過去のデータ:設定可能な時間枠(1日から10年以上)での価格履歴を提供します。
- 会社プロファイル:詳細な基本情報、財務指標、ビジネス情報を提供します。
- 複数株式対応:ポートフォリオ分析のためのバッチ処理をサポートします。
- 迅速な相場チェック:会社の詳細を取得せずに迅速な価格チェックができます。
高度なチャート生成
- プロフェッショナルなチャート:金融スタイルの高品質matplotlibビジュアライゼーションを提供します。
- 複数のチャートタイプ:価格チャート、ローソク足チャート、出来高分析、比較チャートをサポートします。
- テクニカル指標:移動平均(MA20、MA50)、VWAP、出来高トレンドを表示します。
- 比較分析:複数株式のパフォーマンスを可視化します。
- エクスポート可能:レポートやプレゼンテーションに適したPNG形式のチャートを生成します。
包括的な金融分析
- 財務諸表:損益計算書、貸借対照表、キャッシュフロー分析を提供します。
- 収益情報:過去の収益、今後の日付、アナリストの予測を提供します。
- アナリストレポート:買い/売り/保有の推奨と価格目標を提供します。
- 所有権分析:機関投資家の保有状況、投資信託、主要株主を分析します。
- 市場調査:収益予測と収益予想を提供します。
インド市場最適化
- NSE/BSE対応:インドの証券取引所に特化したサポートを提供します。
- 通貨フォーマット:ルピー(₹)の記号とインドの数字形式(クロール/ラク)を使用します。
- NIFTY 50統合:市場の動きを追跡するための事前設定済みのウォッチリストを提供します。
- 主要指数:リアルタイムのNIFTY 50、SENSEX、BANK NIFTY、およびセクター別指数を提供します。
- 人気株式:100以上の事前設定済みのインド企業を即座にアクセスできます。
📦 インストール
前提条件
クイックスタート
-
リポジトリをクローンし、プロジェクトディレクトリに移動します。
-
環境設定ファイルを作成します。
cp .env.example .env
.envファイルを設定します。
AUTH_TOKEN=your_secure_auth_token_here
MY_NUMBER=your_validation_number_here
- 依存関係をインストールします。
pip install -r requirements.txt
- サーバーを起動します。
python stock_market_server.py
サーバーはhttp://0.0.0.0:8087で利用可能です。
💻 使用例
スマートなシンボル解決
- リアルタイム相場取得:
get_stock_quote("Reliance") または get_stock_quote("RELIANCE.NS")
- 過去のデータ取得:
get_stock_history("TCS", "1y") または get_stock_history("Tata Consultancy", "1y")
- 会社情報取得:
get_stock_info("Apple") または get_stock_info("AAPL")
- 複数株式の相場取得:
get_multiple_stock_quotes("Reliance,TCS,Infosys") または正確なシンボル
市場分析
- 指数追跡:
get_market_indices()
- 市場の動き:
get_market_movers("gainers")
- 株式比較:
compare_stocks("RELIANCE.NS,TCS.NS") または compare_stocks("Reliance,TCS")
- アナリストレポート:
get_analyst_recommendations("HDFC Bank")
- 価格目標:
get_analyst_price_targets("Apple")
チャート生成
- 価格チャート:
create_stock_chart("Reliance", "6mo") または create_stock_chart("RELIANCE.NS", "6mo")
- 比較チャート:
create_comparison_chart("TCS,Infosys", "1y")
- ローソク足チャート:
create_candlestick_chart("Apple", "3mo")
- 出来高分析チャート:
create_volume_analysis_chart("HDFC Bank", "6mo")
金融分析
- 収益データ:
get_earnings_data("Microsoft")
- 財務諸表:
get_income_statement("TCS")
- 所有権分析:
get_major_holders("Reliance")
- 配当履歴:
get_stock_dividends("HDFC Bank")
情報ツール
- get_mcp_capabilities: すべての機能と能力の包括的なガイド
- get_mcp_help: クイックヘルプと一般的な使用例
- get_supported_stocks: 事前に読み込まれたインドおよびグローバルの会社のリスト
- stock_mcp_authors_info: 著者名と履歴書のリンク
🔧 技術詳細
アーキテクチャ
- サービス指向設計:専用のサービス層を持つモジュール型アーキテクチャです。
- yfinance統合:Yahoo Finance APIからのリアルタイムデータをインテリジェントなキャッシュで取得します。
- FastMCPフレームワーク:非同期サポートを備えた高性能MCPサーバーの実装です。
- Pydanticモデル:全体で型安全なデータ検証とシリアライゼーションを行います。
- ベアラー認証:安全なトークンベースの認証システムです。
市場カバレッジ
- インド市場:NSE(.NS)およびBSE(.BO)に上場されている証券を完全にサポートします。
- グローバル市場:主要な国際取引所(NASDAQ、NYSE、LSEなど)をサポートします。
- 市場指数:20以上のインドおよびグローバルの指数をリアルタイムで追跡します。
- シンボル範囲:1000以上の事前に読み込まれた人気株式をインテリジェントな名前解決でサポートします。
データサービス
- リアルタイム相場:リアルタイムの価格、出来高、時価総額、変動データを提供します。
- 過去の分析:10以上の時間枠オプションを持つ包括的な過去のデータを提供します。
- テクニカル指標:移動平均、VWAP、出来高分析、ボラティリティ指標を提供します。
- 金融指標:P/E比、P/B比、EPS、配当利回り、ベータ、成長率を提供します。
- ニュース統合:最新の会社ニュースと市場を動かすイベントを提供します。
ビジュアライゼーションとチャート
- プロフェッショナルなチャート:金融データに最適化された高品質のmatplotlibチャートを提供します。
- 複数のチャートタイプ:折れ線チャート、ローソク足チャート、出来高分析、比較チャートをサポートします。
- テクニカル分析:組み込みのテクニカル指標とトレンド分析を提供します。
- エクスポート形式:レポート、プレゼンテーション、分析に適したPNG形式のチャートを提供します。
📚 ドキュメント
株式データツール
| ツール |
説明 |
パラメータ |
使用例 |
get_stock_quote |
インテリジェントな解決機能を備えたリアルタイム株式相場 |
symbol(会社名または正確なシンボル) |
get_stock_quote("Reliance") |
get_multiple_stock_quotes |
バッチでの株式相場取得 |
symbols(カンマ区切りの名前/シンボル) |
get_multiple_stock_quotes("TCS,Infosys,Apple") |
get_stock_info |
包括的な会社情報 |
symbol(会社名または正確なシンボル) |
get_stock_info("HDFC Bank") |
get_stock_history |
過去の価格データ |
symbol, period(1d - 10y) |
get_stock_history("Apple", "6mo") |
search_stocks |
名前で株式を検索 |
query(検索用語) |
search_stocks("Tata") |
resolve_symbol |
会社名を正確なシンボルに変換 |
query(会社名) |
resolve_symbol("Bharti Airtel") |
金融分析ツール
| ツール |
説明 |
パラメータ |
使用例 |
get_income_statement |
収益と利益分析 |
symbol |
get_income_statement("Microsoft") |
get_balance_sheet |
資産と負債 |
symbol |
get_balance_sheet("TCS") |
get_cashflow_statement |
キャッシュフロー分析 |
symbol |
get_cashflow_statement("Apple") |
get_earnings_data |
収益履歴 |
symbol |
get_earnings_data("Reliance") |
get_stock_dividends |
配当履歴 |
symbol |
get_stock_dividends("HDFC Bank") |
市場分析ツール
| ツール |
説明 |
パラメータ |
使用例 |
get_market_indices |
主要な市場指数 |
なし |
get_market_indices() |
get_market_movers |
上位の上昇株/下落株 |
type(gainers/losers) |
get_market_movers("gainers") |
compare_stocks |
複数株式の比較 |
symbols(カンマ区切り) |
compare_stocks("Reliance,TCS") |
get_analyst_recommendations |
アナリストのレーティング |
symbol |
get_analyst_recommendations("Apple") |
get_analyst_price_targets |
価格予測 |
symbol |
get_analyst_price_targets("Microsoft") |
チャート生成ツール
| ツール |
説明 |
パラメータ |
使用例 |
create_stock_chart |
プロフェッショナルな価格チャート |
symbol, period |
create_stock_chart("TCS", "1y") |
create_comparison_chart |
複数株式の比較チャート |
symbols, period |
create_comparison_chart("Apple,Microsoft", "6mo") |
create_candlestick_chart |
OHLCローソク足チャート |
symbol, period |
create_candlestick_chart("Reliance", "3mo") |
create_volume_analysis_chart |
VWAPを用いた出来高分析チャート |
symbol, period |
create_volume_analysis_chart("HDFC Bank", "6mo") |
サポートされる時間枠
- 日内:
1d, 5d(時間単位のデータ)
- 短期:
1mo, 3mo, 6mo(日単位のデータ)
- 中期:
1y, 2y(日単位のデータ)
- 長期:
5y, 10y(週単位のデータ)
- 特殊:
ytd(年初来), max(利用可能なすべてのデータ)
シンボル形式と例
- インドの株式:会社名を使用するか、NSEの場合は
.NS、BSEの場合は.BOを追加します。
- 例:
"Reliance" → RELIANCE.NS, "TCS" → TCS.NS, "HDFC Bank" → HDFCBANK.NS
- グローバルの株式:会社名または標準的なティッカーシンボルを使用します。
- 例:
"Apple" → AAPL, "Microsoft" → MSFT, "Google" → GOOGL
- 市場指数:Yahoo Financeの指数シンボルを使用します。
- インド:
^NSEI(NIFTY 50), ^BSESN(SENSEX), ^NSEBANK(BANK NIFTY)
- グローバル:
^GSPC(S&P 500), ^DJI(ダウジョーンズ), ^IXIC(ナスダック)
スマート解決の例
- インドの会社:"Reliance Industries", "Tata Consultancy", "HDFC Bank", "Bharti Airtel"
- グローバルの会社:"Apple Inc", "Microsoft Corporation", "Alphabet", "Amazon"
- 略称:"TCS", "HUL", "L&T", "SBI", "ICICI"
- 部分的な名前:"Reliance", "Infosys", "HDFC"
📄 開発状況
現在の実装(v2.0+)
- 完全なyfinance統合:25以上の株式データツールがすべてエラーハンドリング付きで実装されています。
- インテリジェントなシンボル解決:100以上の事前に読み込まれた会社を持つ高度なファジーマッチング。
- 高度なチャート生成:テクニカル指標を備えたプロフェッショナルなmatplotlibチャート。
- 包括的な金融データ:リアルタイム相場、過去のデータ、収益、およびアナリストのカバレッジ。
- 複数市場対応:インド(NSE/BSE)とグローバル市場のシームレスな統合。
- 本番環境対応:堅牢なエラーハンドリング、データ検証、およびパフォーマンス最適化。
最近の更新(2024)
- インテリジェントなシンボル解決システムの完全実装
- 15以上の新しい金融分析ツール(収益、推奨、価格目標)の追加
- 出来高分析とVWAP指標を備えたチャート生成の強化
- NIFTY 50を中心とした包括的なインド市場カバレッジ
- プロフェッショナルなチャートスタイリングと高度なデータビジュアライゼーション
- 堅牢なエラーハンドリングとグレースフルなフォールバックメカニズム
- スマートキャッシュとパフォーマンス最適化
ツールのカバレッジ
- 株式データ:相場、履歴、ニュース、配当、分割をカバーする12のツール
- 金融分析:収益、財務諸表、アナリストのカバレッジに関する8のツール
- 市場分析:指数、動き、比較、および調査に関する8のツール
- チャート生成:さまざまなチャートタイプとテクニカル分析に関する4のツール
- ユーティリティ:検索、解決、ヘルプ、機能、および著者情報に関する5のツール
🤝 コントリビュート
このプロジェクトは、最新のPython開発プラクティスを使用しています。
開発環境のセットアップ
git clone <repository-url>
cd stock-market-mcp
pip install -e ".[dev]"
コード品質と標準
- フォーマット:120文字の行制限でBlackコードフォーマッターを使用します。
- インポートの整理:isortを使用して一貫したインポート順序を維持します。
- 型安全:厳格モードでmypy型チェックを行います。
- テスト:pytestフレームワークを使用して包括的なテストカバレッジを実現します。
- ドキュメント:包括的なドキュメント文字列とAPIドキュメントを用意しています。
コードアーキテクチャ
- 非同期/待機:全体で非ブロッキング操作を行い、高性能を実現します。
- サービス層:株式データ、市場データ、およびチャート生成用の専用サービス。
- モデル検証:Pydanticモデルを使用して型安全なデータ検証を行います。
- エラーハンドリング:グレースフルなデグレードを備えた包括的なエラーハンドリング。
- キャッシュ:API呼び出しを減らし、応答時間を改善するためのインテリジェントなキャッシュ。
🐳 Dockerとデプロイ
Dockerでのクイックスタート
docker build -t stock-market-mcp .
docker run -p 8087:8087 \
-e AUTH_TOKEN=your-token \
-e MY_NUMBER=91xxxxxxxxxx \
stock-market-mcp
Railwayでのデプロイ
このアプリケーションは、以下の機能を備えたRailwayホスティングに最適化されています。
- Dockerfileベースのデプロイ
- 動的なポートバインディング
- ヘルスチェックエンドポイント
- 最小限のDockerイメージ
詳細なデプロイ手順については、RAILWAY_DEPLOY.mdを参照してください。
Docker Composeを使用したローカル開発
cp .env.example .env
docker-compose up --build