🚀 株式MCPサーバー
Model Context Protocolに基づくスマート株式データサービスで、中国株(A股)、香港株(港股)、米国株(美股)のリアルタイムデータをワンストップで取得し、AIによる深層分析も提供します。
クイックスタート • 主な機能 • APIドキュメント • 設定ガイド
✨ なぜStock MCPを選ぶのか?
- 🌐 世界市場カバー - 中国株(A股)、香港株(港股)、米国株(美股)のデータにワンクリックでアクセスできます。
- 🤖 AIスマート分析 - ニュースの感情分析、深層調査レポート、スマート検索機能を備えています。
- 🚀 すぐに使える - Dockerでワンクリックでデプロイし、5分でサービスを起動できます。
- 📊 複数のデータソースの融合 - AKShare、Tushare、yFinance、Finnhubなどのデータをスマートに集約します。
- 💾 高性能キャッシュ - Redisによる高速化と自動ダウングレード機能で、安定した動作を保証します。
🚀 クイックスタート
git clone <your-repo-url> && cd stock-mcp
cp .env.example .env && vim .env
docker-compose up -d
open http://localhost:9998/docs
🎯 5分で核心機能を体験する:
curl "http://localhost:9998/stock/price?symbol=600519&start_date=2024-01-01&end_date=2025-01-01"
curl "http://localhost:9998/api/stock/news?symbol=AAPL"
curl "http://localhost:9998/api/stock/fundamental?symbol=000008&curr_date=2025-06-01"
curl -X POST "http://localhost:9998/api/stock/quotes" \
-H "Content-Type: application/json" \
-d '{"symbols": ["AAPL", "TSLA", "MSFT"]}'
✨ 主な機能
📋 APIインターフェースの概要
| 分類 |
インターフェース |
エンドポイント |
説明 |
| 📊 相場データ |
Market Price |
GET /stock/price |
過去の価格+AI分析レポート |
|
Stock Quote |
GET /api/stock/news |
リアルタイム相場スナップショット |
|
Stock Quotes |
POST /api/stock/quotes |
一括相場照会 |
| 💼 基本データ |
Fundamental |
GET /api/stock/fundamental |
財務基本データ |
| 📰 ニュース情報 |
Stock News |
GET /api/stock/news |
最新の株式ニュース |
|
News by Date |
GET /api/stock/news/date |
指定日のニュース |
| 📅 取引日カレンダー |
Trading Days |
GET /api/calendar/trading-days |
取引日リスト |
|
Is Trading Day |
GET /api/calendar/is-trading-day |
取引日チェック |
|
Trading Hours |
GET /api/calendar/trading-hours |
取引時間情報 |
|
Exchanges |
GET /api/calendar/supported-exchanges |
サポートされている取引所 |
💡 ヒント: すべてのインターフェースは中国株(A股)、香港株(港股)、米国株(美股)の3大市場をサポートしています。
📚 詳細ドキュメント: 起動後、http://localhost:9998/docs にアクセスしてください。
📊 データ照会機能
- ✅ リアルタイム相場 - 分単位の価格/出来高
- ✅ 過去のデータ - K線図、除權価格
- ✅ 財務報告 - 貸借対照表、キャッシュフロー
- ✅ テクニカル指標 - MACD、RSI、ボリンジャーバンド
- ✅ 資金の流れ - 主力資金、北向資金
🤖 AI強化
- 🔍 スマート検索 - Tavilyの意味検索
- 📰 感情分析 - 複数のニュースソースの集約 + 評価
- 📈 深層調査 - AIによる調査レポートの生成
- 💡 意思決定支援 - データ駆動型の投資アドバイス
- 🌐 多言語対応 - 中国語と英語の自動識別
⚙️ 設定説明
核心設定(.envファイル)
TUSHARE_TOKEN=your_token_here
HTTP_PROXY=http://127.0.0.1:7890
HTTPS_PROXY=http://127.0.0.1:7890
TAVILY_API_KEY=your_key
FINNHUB_API_KEY=your_key
NEWS_API_KEY=your_key
📖 完全な設定説明
| 設定項目 |
説明 |
デフォルト値 |
REDIS_HOST |
Redisホスト |
redis(Docker)/ localhost |
CACHE_ENABLED |
キャッシュを有効にするかどうか |
true |
CACHE_TTL |
キャッシュの有効期限(秒) |
3600 |
詳細は:設定ガイドを参照してください。
📡 APIインターフェースドキュメント
🎨 インタラクティブドキュメント
サービスを起動した後、以下のURLにアクセスして、完全なSwagger UIドキュメントを表示します:
- Swagger UI: http://localhost:9998/docs
- ReDoc: http://localhost:9998/redoc
📊 株式データインターフェース
1️⃣ 市場相場分析 - Market Price
インターフェース情報
- パス:
GET /stock/price
- 説明: 指定した株式の過去の価格データとAI分析レポートを取得します。
リクエストパラメータ
| パラメータ名 |
タイプ |
必須 |
説明 |
例 |
symbol |
string |
はい |
株式コード |
000001, AAPL |
start_date |
string |
いいえ |
開始日 |
2024-07-13 |
end_date |
string |
いいえ |
終了日 |
2025-07-13 |
Authorization |
string |
いいえ |
認証トークン(Header) |
a7f3518b-... |
レスポンス例
{
"status": "success",
"message": "株式価格データと分析レポートの取得に成功しました。",
"data": "# AAPL株式分析レポート\n\n## 📊 基本情報\n- **株式名**: アップル社\n- **株式コード**: AAPL\n- **分析期間**: 2025-07-12 から 2025-08-12\n\n## 💰 価格の推移\n- **現在の価格**: $227.18\n- **期間内の値動き**: $+18.80 (+9.02%)\n- **期間内の最高値**: $230.74\n- **期間内の最低値**: $201.27\n- **平均出来高**: 60,489,490\n\n## 📈 テクニカル指標\n- **5日移動平均線**: $218.35\n- **20日移動平均線**: $212.25\n- **最近のトレンド**: 上昇"
}
使用例
curl -X GET "http://localhost:9998/stock/price?symbol=AAPL&start_date=2024-07-13&end_date=2025-07-13" \
-H "Authorization: a7f3518b-2983-4d29-bd1d-15a13e470903"
2️⃣ 基本データ - Stock Fundamental
インターフェース情報
- パス:
GET /api/stock/fundamental
- 説明: 株式の基本財務データを取得します。
リクエストパラメータ
| パラメータ名 |
タイプ |
必須 |
説明 |
例 |
symbol |
string |
はい |
株式コード |
000008, 600519 |
curr_date |
string |
いいえ |
照会日 |
2025-06-01 |
Authorization |
string |
いいえ |
認証トークン(Header) |
a7f3518b-... |
使用例
curl -X GET "http://localhost:9998/api/stock/fundamental?symbol=000008&curr_date=2025-06-01" \
-H "Authorization: a7f3518b-2983-4d29-bd1d-15a13e470903"
3️⃣ リアルタイム相場 - Stock Quote
インターフェース情報
- パス:
GET /api/stock/news
- 説明: 株式のリアルタイム相場スナップショットを取得します。
リクエストパラメータ
| パラメータ名 |
タイプ |
必須 |
説明 |
例 |
symbol |
string |
はい |
株式コード |
000001, AAPL |
Authorization |
string |
いいえ |
認証トークン(Header) |
a7f3518b-... |
レスポンス例
{
"status": "success",
"message": "AAPLのリアルタイム相場の取得に成功しました。",
"data": {
"ticker": "AAPL",
"currentPrice": "256.48",
"dailyChangePercent": "-0.0818107444777616",
"peRatio": "38.919575",
"marketCap": "3806263246848",
"source": "yfinance"
}
}
使用例
curl -X GET "http://localhost:9998/api/stock/news?symbol=AAPL" \
-H "Authorization: a7f3518b-2983-4d29-bd1d-15a13e470903"
4️⃣ 一括相場照会 - Stock Quotes
インターフェース情報
- パス:
POST /api/stock/quotes
- 説明: 複数の株式のリアルタイム相場を一括で照会します。
リクエストパラメータ
| パラメータ名 |
タイプ |
必須 |
説明 |
symbols |
array |
はい |
株式コードのリスト |
Authorization |
string |
いいえ |
認証トークン(Header) |
使用例
curl -X POST "http://localhost:9998/api/stock/quotes" \
-H "Content-Type: application/json" \
-H "Authorization: a7f3518b-2983-4d29-bd1d-15a13e470903" \
-d '{"symbols": ["AAPL", "TSLA", "MSFT"]}'
📰 ニュースデータインターフェース
5️⃣ 株式ニュース - Stock News
インターフェース情報
- パス:
GET /api/stock/news
- 説明: 指定した株式の最新ニュースを取得します。
リクエストパラメータ
| パラメータ名 |
タイプ |
必須 |
説明 |
例 |
symbol |
string |
はい |
株式コード |
000001, AAPL |
Authorization |
string |
いいえ |
認証トークン(Header) |
a7f3518b-... |
使用例
curl -X GET "http://localhost:9998/api/stock/news?symbol=000001" \
-H "Authorization: a7f3518b-2983-4d29-bd1d-15a13e470903"
6️⃣ 指定日のニュース - News by Date
インターフェース情報
- パス:
GET /api/stock/news/date
- 説明: 指定した日付範囲内の株式ニュースを取得します。
リクエストパラメータ
| パラメータ名 |
タイプ |
必須 |
説明 |
例 |
symbol |
string |
はい |
株式コード |
000001 |
target_date |
string |
はい |
対象日 |
2025-09-10 |
days_before |
integer |
いいえ |
過去に照会する日数 |
7 |
Authorization |
string |
いいえ |
認証トークン(Header) |
a7f3518b-... |
使用例
curl -X GET "http://localhost:9998/api/stock/news/date?symbol=000001&target_date=2025-09-10&days_before=7" \
-H "Authorization: a7f3518b-2983-4d29-bd1d-15a13e470903"
📅 取引日カレンダーインターフェース
7️⃣ 取引日リスト - Trading Days
インターフェース情報
- パス:
GET /api/calendar/trading-days
- 説明: 指定した時間範囲内の取引日リストを取得します。
リクエストパラメータ
| パラメータ名 |
タイプ |
必須 |
説明 |
例 |
symbol |
string |
はい |
株式コード |
000001 |
start_date |
string |
はい |
開始日 |
2025-01-01 |
end_date |
string |
はい |
終了日 |
2025-09-01 |
Authorization |
string |
いいえ |
認証トークン(Header) |
a7f3518b-... |
使用例
curl -X GET "http://localhost:9998/api/calendar/trading-days?symbol=000001&start_date=2025-01-01&end_date=2025-09-01" \
-H "Authorization: a7f3518b-2983-4d29-bd1d-15a13e470903"
8️⃣ 取引日チェック - Is Trading Day
インターフェース情報
- パス:
GET /api/calendar/is-trading-day
- 説明: 指定した日付が取引日かどうかをチェックします。
リクエストパラメータ
| パラメータ名 |
タイプ |
必須 |
説明 |
例 |
symbol |
string |
はい |
株式コード |
000001 |
check_date |
string |
はい |
チェック日 |
2025-09-30 |
Authorization |
string |
いいえ |
認証トークン(Header) |
a7f3518b-... |
使用例
curl -X GET "http://localhost:9998/api/calendar/is-trading-day?symbol=000001&check_date=2025-09-30" \
-H "Authorization: a7f3518b-2983-4d29-bd1d-15a13e470903"
9️⃣ 取引時間 - Trading Hours
インターフェース情報
- パス:
GET /api/calendar/trading-hours
- 説明: 指定した日付の取引時間情報を取得します。
リクエストパラメータ
| パラメータ名 |
タイプ |
必須 |
説明 |
例 |
symbol |
string |
はい |
株式コード |
000001 |
check_date |
string |
はい |
チェック日 |
2025-09-30 |
Authorization |
string |
いいえ |
認証トークン(Header) |
a7f3518b-... |
使用例
curl -X GET "http://localhost:9998/api/calendar/trading-hours?symbol=000001&check_date=2025-09-30" \
-H "Authorization: a7f3518b-2983-4d29-bd1d-15a13e470903"
🔟 サポートされている取引所 - Supported Exchanges
インターフェース情報
- パス:
GET /api/calendar/supported-exchanges
- 説明: システムがサポートするすべての取引所のリストを取得します。
リクエストパラメータ
| パラメータ名 |
タイプ |
必須 |
説明 |
Authorization |
string |
いいえ |
認証トークン(Header) |
レスポンス例
{
"status": "success",
"message": "サポートされている取引所のリストの取得に成功しました。",
"data": {
"total_count": 200,
"regions": {
"アメリカ": ["NYSE", "NASDAQ"],
"中国": ["XSHG", "XSHE"],
"ヨーロッパ": ["XPAR", "XLON"],
"アジア太平洋": ["NSE", "TSE"],
"カナダ": ["TSX"]
},
"all_exchanges": ["NYSE", "NASDAQ", "XSHG", "XSHE", "..."]
}
}
使用例
curl -X GET "http://localhost:9998/api/calendar/supported-exchanges" \
-H "Authorization: a7f3518b-2983-4d29-bd1d-15a13e470903"
🔐 認証説明
すべてのAPIインターフェースは、オプションの Authorization ヘッダーを使用した認証をサポートしています。
-H "Authorization: your-api-token-here"
トークンの取得: 管理者に連絡するか、設定ファイルでカスタムトークンを設定してください。
📊 クイックテスト
以下のコマンドを使用して、主要なインターフェースをすばやくテストできます。
curl "http://localhost:9998/stock/price?symbol=600519&start_date=2024-01-01&end_date=2025-01-01"
curl "http://localhost:9998/api/stock/news?symbol=AAPL"
curl "http://localhost:9998/api/calendar/is-trading-day?symbol=000001&check_date=$(date +%Y-%m-%d)"
curl "http://localhost:9998/api/calendar/supported-exchanges"
📖 API設計規範
このプロジェクトのAPIは、以下の設計原則に従っています。
✅ RESTfulスタイル - 標準のHTTPメソッド(GET/POST)を使用します。
✅ 統一されたレスポンス形式 - すべてのインターフェースは統一されたJSON構造を返します。
✅ 詳細なエラー情報 - エラーレスポンスには明確なエラーコードと説明が含まれています。
✅ OpenAPI 3.0 - 完全なAPI仕様ドキュメント(参照)
✅ 自動ドキュメント生成 - Swagger UIとReDocの両方のドキュメントをサポートしています。
🐳 Dockerデプロイ
サービスアーキテクチャ
| ポート |
サービス |
説明 |
9998 |
FastAPI |
RESTful API + Swaggerドキュメント |
9999 |
MCP Server |
Model Context Protocolサービス |
6379 |
Redis |
内部キャッシュ(外部に公開されません) |
一般的なコマンド
docker-compose up -d
docker-compose logs -f stock-mcp
docker-compose down
docker-compose restart
docker-compose up -d --build
🛠️ トラブルシューティング
❌ Redis接続エラー
cat .env | grep REDIS_HOST
docker-compose ps redis
❌ yFinanceタイムアウト
cat .env | grep PROXY
❌ Tushare権限エラー
Tokenが有効で、.env ファイルに設定されていることを確認してください。
grep TUSHARE_TOKEN .env
その他の問題:完全なトラブルシューティングガイドを参照してください。
📚 ドキュメント
- 📡 完全なAPIドキュメント - すべてのインターフェースの詳細な説明、パラメータ、例
- 💡 API使用例 - 実際のシナリオでのコード例
- 📖 使用ガイド - 設定、デプロイ、ベストプラクティス
- 🔧 開発ドキュメント - アーキテクチャ設計、二次開発
- 🌐 OpenAPI仕様 - 標準のAPI仕様ファイル
- 💻 Swagger UI - インタラクティブなAPIテスト(サービス起動後にアクセス)
🤝 貢献の参加
IssueとPull Requestの提出を歓迎します!
git checkout -b feature/amazing-feature
git commit -m "Add: amazing feature"
git push origin feature/amazing-feature
📄 ライセンス
MITライセンス - 詳細は LICENSE を参照してください。
🙏 謝辞
このプロジェクトは、以下の優れたオープンソースプロジェクトに基づいて構築されています。
MCP • FastAPI • AKShare • Tushare • yFinance • Tavily
⭐️ もしこのプロジェクトが役に立ったら、Starをしてください⭐️