🚀 📈 Stock MCP Server
Stock MCP Server 是一個基於 Model Context Protocol 的智能股票數據服務平臺,能夠一站式獲取 A 股、港股、美股的即時數據,並提供 AI 驅動的深度分析,為投資者提供全面、準確、高效的股票信息服務。
🚀 快速開始
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"]}'
✨ 主要特性
- 🌐 全球市場覆蓋 - 一鍵接入 A 股、港股、美股數據。
- 🤖 AI 智能分析 - 提供新聞情緒分析、深度研究報告、智能搜索等功能。
- 🚀 開箱即用 - 通過 Docker 一鍵部署,5 分鐘即可啟動服務。
- 📊 多數據源融合 - 智能聚合 AKShare、Tushare、yFinance、Finnhub 等多個數據源。
- 💾 高性能緩存 - 採用 Redis 加速,並具備自動降級功能,穩定可靠。
📦 安裝指南
核心配置(.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 |
詳見:配置指南
💻 使用示例
基礎用法
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 -X POST "http://localhost:9998/api/stock/quotes" \
-H "Content-Type: application/json" \
-d '{"symbols": ["AAPL", "TSLA", "MSFT"]}'
📚 詳細文檔
- 📡 完整 API 文檔 - 所有接口詳細說明、參數、示例。
- 💡 API 使用示例 - 實際場景的代碼示例。
- 📖 使用指南 - 配置、部署、最佳實踐。
- 🔧 開發文檔 - 架構設計、二次開發。
- 🌐 OpenAPI 規範 - 標準 API 規範文件。
- 💻 Swagger UI - 交互式 API 測試(服務啟動後訪問)。
🔧 技術細節
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 股、港股、美股三大市場。
📚 詳細文檔: 啟動後訪問 http://localhost:9998/docs。
數據查詢能力
- ✅ 即時行情 - 分鐘級價格/成交量。
- ✅ 歷史數據 - K 線圖、復權價格。
- ✅ 財務報表 - 資產負債表、現金流。
- ✅ 技術指標 - MACD、RSI、布林帶。
- ✅ 資金流向 - 主力資金、北向資金。
AI 增強
- 🔍 智能搜索 - Tavily 語義搜索。
- 📰 情緒分析 - 多源新聞聚合 + 評分。
- 📈 深度研究 - AI 生成研究報告。
- 💡 決策輔助 - 數據驅動的投資建議。
- 🌐 多語言支持 - 中英文自動識別。
API 接口文檔
交互式文檔
啟動服務後訪問以下地址查看完整的 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 Header 進行身份驗證:
-H "Authorization: your-api-token-here"
獲取 Token: 請聯繫管理員或在配置文件中設置自定義 Token。
快速測試
使用以下命令快速測試主要接口:
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
更多問題:完整故障排查指南
📄 許可證
本項目採用 MIT 許可證,詳見 LICENSE。
🙏 致謝
本項目基於以下優秀開源項目構建:
MCP • FastAPI • AKShare • Tushare • yFinance • Tavily
⭐️ 如果對你有幫助,請給個 Star ⭐️