股票数据分析服务

基于 Tushare 的数据来源股票分析 MCP 服务器,提供技术分析和财务数据查询能力。

  • by burceasn
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 burceasn/china-stock-analysis-mcp

使用说明

China-Stock-Analysis-MCP

基于 Tushare 的数据来源股票分析 MCP 服务器,提供技术分析和财务数据查询能力。

为什么选择本项目

对比纯爬虫实现的股票数据获取方案(如基于 akshare 实现的 MCP),如果部署到云端对外提供MCP服务(如讯飞星辰, 阿里百炼)非常容易被反爬机制拦截,导致 MCP 失效。本项目基于 Tushare 的 Token 获取数据,使用官方 API 接口,可以接受更大的访问量,是更适合部署到云服务器上的股票数据 MCP 方案。

功能特性

  • 技术分析:计算 MA、EMA、DMI、RSI、MACD、KDJ、布林带、ATR、OBV 等技术指标
  • K线形态识别:识别单根、两根、三根、五根K线组合形态(基于 py-candlekit 库)
  • 财务数据:获取股票利润表数据,包含营收、利润、费用、现金流等
  • 智能解析:支持不完整,不带交易所代号的股票代码(如 002230)或公司名称(如 科大讯飞)查询
  • 前复权处理:自动计算前复权价格,消除分红配送影响
  • 多种运行模式:支持 stdio 模式和 HTTP 流式模式

环境配置

# 1. 克隆项目
git clone <repo-url>
cd tushare-mcp

# 2. 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/Mac
# venv\Scripts\activate  # Windows

# 3. 安装依赖
pip install -e .

# 4. 配置 Tushare Token
# 在项目根目录创建 .env 文件,添加:
TUSHARE_TOKEN=你的Token

获取 Token:https://tushare.pro/user/token

快速开始

方式一:命令行运行

# stdio 模式(默认)
python -m china_stock_analysis_mcp

# HTTP 流式模式
python -m china_stock_analysis_mcp --streamable-http --host 0.0.0.0 --port 8081

方式二(推荐):作为 MCP 工具使用

配置到 Claude Desktop 或其他 MCP 客户端:

{
    "mcpServers":{
        "china-stock-analysis":{
            "command": "uvx",
            "args": ["china-stock-analysis-mcp"],
            "env":{
                "TUSHARE_TOKEN": "你的token"
            }
        }
    }
}

可用工具

get_stock_technical_snapshot

获取股票技术分析快照,包含趋势、动量、波动率、成交量等指标,供 LLM 分析使用。

参数:

参数 类型 必填 说明 默认值
ts_code string 是 可接受不带交易所的股票代码(如 002230)或公司名称(如 科大讯飞) -
limit number 否 获取最近 N 根日线 100
use_qfq boolean 否 是否使用前复权价格 true

返回: Toon 格式(比 JSON 节省约 30% token),包含:

  • 价格信息:当前价、1日/5日/20日涨跌幅
  • 趋势指标:MA5、MA20、MA50、EMA12 与 EMA26 金叉/死叉状态
  • 动量指标:RSI14、MACD(DIF/DEA/MACD柱)、KDJ(K/D/J)
  • 波动率指标:布林带宽度、ATR14、价格相对于布林带位置
  • 趋势强度:ADX、+DI、-DI
  • 成交量:OBV 趋势、成交量/20日均量
  • 信号标签:RSI 超买/超卖、MACD 方向、KDJ 超买/超卖、均线多空排列、布林带突破、成交量信号、OBV 与价格背离

示例:

# 查询科大讯飞技术分析
get_stock_technical_snapshot(ts_code="科大讯飞")

get_income_data

获取股票利润表数据,包含近几期财务指标及同比变化趋势,供 LLM 分析使用。

参数:

参数 类型 必填 说明 默认值
ts_code string 是 股票代码(如 002230)或公司名称(如 科大讯飞) -
limit number 否 获取最近 N 期报告(约2年季报) 10

返回: Toon 格式(比 JSON 节省约 30% token),包含:

  • 规模:营业总收入、营业收入(单位:万元)
  • 利润:营业利润、归母净利润、EBIT、EBITDA、基本每股收益
  • 利润率:营业利润率、归母净利润率(%)
  • 费用:研发费用、销售费用、管理费用、财务费用(单位:万元)
  • 费用率:研发/销售/管理费用率(%)
  • 风险:资产减值损失、减值预警(减值损失>归母净利润10%)
  • 同比增速:营业收入同比、归母净利润同比、研发费用同比(%)

说明:

  • 金额单位为万元,增速单位为%
  • 同比基于去年同期同季度数据
  • 只保留合并报表(report_type=1)
  • 同一报告期保留最新且字段最完整的一条

示例:

# 查询科大讯飞利润表
get_income_data(ts_code="科大讯飞")

read_candles_type

识别 K 线形态(单根、两根、三根、五根组合),返回 Toon 格式(比 JSON 节省约 30% token)。

参数:

参数 类型 必填 说明 默认值
ts_code string 是 股票代码(如 002230)或公司名称(如 科大讯飞) -
limit number 否 获取最近 N 根日线 100
use_qfq boolean 否 是否使用前复权价格 true
recent_n number 否 仅分析最近 N 根 K 线 null

返回: Toon 格式,按形态类型分组:

as_of_date: 2024-01-15
single:
  date: 2024-01-15
  patterns[1]{name,signal,strength}:
    锤子线,bullish,4
double:
  dates[2]: 2024-01-14,2024-01-15
  patterns[1]{name,signal,strength}:
    看涨吞噬,bullish,5
triple:
  dates[3]: 2024-01-13,2024-01-14,2024-01-15
  patterns[1]{name,signal,strength}:
    早晨之星,bullish,5
five:
  dates[5]: 2024-01-09,...,2024-01-15
  patterns[1]{name,signal,strength}:
    上升三法,bullish,3

每个形态包含:

  • name: 中文名称
  • name_en: 英文名称
  • type: 形态类型(single/double/triple/five)
  • signal: 信号方向(bullish/bearish)
  • strength: 信号强度(1-5)
  • description: 形态描述

支持的形态:

  • 单根形态:十字星、锤子线、射击之星、光头光脚阳线/阴线、捉腰带阳线/阴线
  • 两根形态:看涨/看跌吞噬、刺穿形态、乌云盖顶、看涨/看跌孕十字、看涨/看跌踢脚线
  • 三根形态:早晨之星/十字星、黄昏之星/十字星、三白兵、三只乌鸦、三内部上涨、三外部上涨
  • 五根形态:上升三法、下降三法、垫高持有

基于 Steve Nison 的《Japanese Candlestick Charting Techniques》理论实现 示例:

# 查询科大讯飞最近 50 根 K 线形态
read_candles_type(ts_code="科大讯飞", recent_n=50)

项目结构

tushare-mcp/
├── src/china_stock_analysis_mcp/
│   ├── __main__.py         # 入口,支持 stdio/HTTP 模式
│   ├── mcp_server.py       # MCP 工具定义
│   ├── technical_analysis.py
│   ├── stock_lookup.py
│   └── read_candles.py     # K线形态识别(基于 py-candlekit)
├── pyproject.toml
└── .env

依赖

  • tushare:A股数据接口
  • fastmcp:MCP 协议实现
  • pandas / numpy:数据处理
  • py-candlekit:K线形态识别
  • toon-format:紧凑数据交换格式,节省约 30% token

注意事项

  1. 首次使用需配置 Tushare Token
  2. 股票代码缓存会自动更新(半年),可手动强制刷新
  3. 前复权数据通过复权因子计算,可能与券商终端略有差异
  4. 本项目仅供学习参考,不构成投资建议

License

MIT