股票
STDIO基于MCP的智能股票数据服务
基于MCP的智能股票数据服务
基于 Model Context Protocol 的智能股票数据服务
一站式获取 A股/港股/美股实时数据 + AI 驱动的深度分析
# 1. 克隆项目 git clone [email protected]:huweihua123/stock-mcp.git && cd stock-mcp # 2. 配置环境变量(必需:TUSHARE_TOKEN) cp .env.example .env && vim .env # 3. 一键启动 docker-compose up -d # 4. 访问服务 open http://localhost:9998/docs # 5. 快速测试页面(可视化API调试) open http://localhost:9998/
💡 查看样例报告: 想了解 AI 分析能力?查看 样例报告 了解完整的技术分析和基本面报告格式
🎯 5分钟体验核心功能:
# 查询茅台历史价格及AI分析 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"]}' # 查询宏观经济数据 curl "http://localhost:9998/api/macro/gdp?start_date=2020-01-01&end_date=2024-12-31"
🎨 可视化测试: 访问 http://localhost:9998/ 使用内置的接口测试工具,无需命令行即可快速测试所有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 | 指定日期新闻 | |
| 🏛️ 宏观经济 | GDP Data | GET /api/macro/gdp | GDP数据查询 | 
| CPI Data | GET /api/macro/cpi | CPI数据查询 | |
| PMI Data | GET /api/macro/pmi | PMI数据查询 | |
| PPI Data | GET /api/macro/ppi | PPI数据查询 | |
| Money Supply | GET /api/macro/money-supply | 货币供应量数据 | |
| LPR Data | GET /api/macro/lpr | LPR利率数据 | |
| Social Financing | GET /api/macro/social-financing | 社会融资规模数据 | |
| 📅 交易日历 | 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
🧪 快速测试: 访问 http://localhost:9998/ 使用可视化测试工具
📊 数据查询能力
  | 
🤖 AI 增强
  | 
.env 文件)# 【必填】A股数据访问(申请地址:https://tushare.pro/) 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 # AI 搜索和研究 FINNHUB_API_KEY=your_key # 增强新闻数据 NEWS_API_KEY=your_key # 新闻聚合
| 配置项 | 说明 | 默认值 | 
|---|---|---|
REDIS_HOST | Redis 主机 | redis(Docker)/ localhost | 
CACHE_ENABLED | 是否启用缓存 | true | 
CACHE_TTL | 缓存过期时间(秒) | 3600 | 
详见:配置指南
无需安装任何工具,直接在浏览器中测试所有API接口:
docker-compose up -d

🔹 股票数据测试
   • 查询贵州茅台(600519)历史价格和技术分析
   • 获取苹果(AAPL)实时行情快照
   • 批量查询多只热门股票
🔹 宏观经济数据测试
   • 查询最近5年GDP增长趋势
   • 获取CPI、PPI通胀数据对比
   • 分析货币供应量变化
🔹 交易日历测试
   • 检查节假日是否为交易日
   • 获取指定时间段的所有交易日
   • 查询不同交易所的交易时间
启动服务后访问以下地址查看完整的 Swagger UI 文档:
💡 推荐使用: API测试工具提供了友好的界面,支持股票、宏观经济、交易日历等所有接口的快速测试,支持参数自动填充和响应结果高亮显示。
查看完整的 AI 分析报告样例:
GET /stock/price| 参数名 | 类型 | 必填 | 说明 | 示例 | 
|---|---|---|---|---|
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"

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"

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"

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"]}'

GET /api/stock/news| 参数名 | 类型 | 必填 | 说明 | 示例 | 
|---|---|---|---|---|
symbol | string | 是 | 股票代码 | 000001, AAPL | 
Authorization | string | 否 | 认证令牌(Header) | a7f3518b-... | 
curl -X GET "http://localhost:9998/api/stock/news?symbol=000001"

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"

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" \

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" \
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" \
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" \

GET /api/macro/gdp| 参数名 | 类型 | 必填 | 说明 | 示例 | 
|---|---|---|---|---|
start_date | string | 否 | 开始日期 | 2020-01-01 | 
end_date | string | 否 | 结束日期 | 2024-12-31 | 
Authorization | string | 否 | 认证令牌(Header) | a7f3518b-... | 
{ "status": "success", "message": "成功获取GDP数据", "data": [ { "季度": "2024年第3季度", "国内生产总值_当季值": "306480.0", "国内生产总值_累计值": "913027.0", "国内生产总值_同比增长": "4.6", "国内生产总值_累计同比增长": "4.8" } ] }
curl -X GET "http://localhost:9998/api/macro/gdp?start_date=2020-01-01&end_date=2024-12-31" \
GET /api/macro/cpi| 参数名 | 类型 | 必填 | 说明 | 示例 | 
|---|---|---|---|---|
start_date | string | 否 | 开始日期 | 2020-01-01 | 
end_date | string | 否 | 结束日期 | 2024-12-31 | 
Authorization | string | 否 | 认证令牌(Header) | a7f3518b-... | 
{ "status": "success", "message": "成功获取CPI数据", "data": [ { "月份": "2024年09月", "全国_当月": "100.4", "全国_累计": "100.3", "城市_当月": "100.4", "城市_累计": "100.4", "农村_当月": "100.5", "农村_累计": "100.1" } ] }
curl -X GET "http://localhost:9998/api/macro/cpi?start_date=2020-01-01&end_date=2024-12-31" \
GET /api/macro/pmi| 参数名 | 类型 | 必填 | 说明 | 示例 | 
|---|---|---|---|---|
start_date | string | 否 | 开始日期 | 2020-01-01 | 
end_date | string | 否 | 结束日期 | 2024-12-31 | 
Authorization | string | 否 | 认证令牌(Header) | a7f3518b-... | 
curl -X GET "http://localhost:9998/api/macro/pmi?start_date=2020-01-01&end_date=2024-12-31" \
GET /api/macro/ppi| 参数名 | 类型 | 必填 | 说明 | 示例 | 
|---|---|---|---|---|
start_date | string | 否 | 开始日期 | 2020-01-01 | 
end_date | string | 否 | 结束日期 | 2024-12-31 | 
Authorization | string | 否 | 认证令牌(Header) | a7f3518b-... | 
curl -X GET "http://localhost:9998/api/macro/ppi?start_date=2020-01-01&end_date=2024-12-31" \
GET /api/macro/money-supply| 参数名 | 类型 | 必填 | 说明 | 示例 | 
|---|---|---|---|---|
start_date | string | 否 | 开始日期 | 2020-01-01 | 
end_date | string | 否 | 结束日期 | 2024-12-31 | 
Authorization | string | 否 | 认证令牌(Header) | a7f3518b-... | 
curl -X GET "http://localhost:9998/api/macro/money-supply?start_date=2020-01-01&end_date=2024-12-31" \
GET /api/macro/lpr| 参数名 | 类型 | 必填 | 说明 | 示例 | 
|---|---|---|---|---|
start_date | string | 否 | 开始日期 | 2020-01-01 | 
end_date | string | 否 | 结束日期 | 2024-12-31 | 
Authorization | string | 否 | 认证令牌(Header) | a7f3518b-... | 
curl -X GET "http://localhost:9998/api/macro/lpr?start_date=2020-01-01&end_date=2024-12-31" \
GET /api/macro/social-financing| 参数名 | 类型 | 必填 | 说明 | 示例 | 
|---|---|---|---|---|
start_date | string | 否 | 开始日期 | 2020-01-01 | 
end_date | string | 否 | 结束日期 | 2024-12-31 | 
Authorization | string | 否 | 认证令牌(Header) | a7f3518b-... | 
curl -X GET "http://localhost:9998/api/macro/social-financing?start_date=2020-01-01&end_date=2024-12-31" \
所有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" # 查询GDP数据 curl "http://localhost:9998/api/macro/gdp?start_date=2020-01-01&end_date=2024-12-31" # 查询CPI数据 curl "http://localhost:9998/api/macro/cpi?start_date=2023-01-01&end_date=2024-12-31"
🎨 可视化测试: 访问 http://localhost:9998/ 可以直接在浏览器中测试所有接口,无需命令行操作
本项目API遵循以下设计原则:
✅ RESTful风格 - 使用标准HTTP方法(GET/POST)
✅ 统一响应格式 - 所有接口返回统一的JSON结构
✅ 详细错误信息 - 错误响应包含明确的错误码和描述
✅ OpenAPI 3.0 - 完整的API规范文档(查看)
✅ 自动文档生成 - Swagger UI + ReDoc双文档支持
| 端口 | 服务 | 说明 | 
|---|---|---|
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
# 检查配置 cat .env | grep REDIS_HOST # 确保 Docker 环境使用: REDIS_HOST=redis # 检查 Redis 状态 docker-compose ps redis
# 检查代理配置 cat .env | grep PROXY # Docker 环境应使用: HTTP_PROXY=http://host.docker.internal:7890
确保 Token 有效且已配置到 .env 文件:
grep TUSHARE_TOKEN .env
更多问题:完整故障排查指南
欢迎提交 Issue 和 Pull Request!
# 1. Fork 项目 # 2. 创建特性分支 git checkout -b feature/amazing-feature # 3. 提交代码 git commit -m "Add: amazing feature" # 4. 推送并创建 PR git push origin feature/amazing-feature
MIT License - 详见 LICENSE