Stock analysis MCP server with technical analysis and financial data tools. data source: tushare
Project description
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 |
返回: JSON 字符串,包含:
- 价格信息:当前价、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 |
返回: JSON 字符串,包含:
- 规模:营业总收入、营业收入(单位:万元)
- 利润:营业利润、归母净利润、EBIT、EBITDA、基本每股收益
- 利润率:营业利润率、归母净利润率(%)
- 费用:研发费用、销售费用、管理费用、财务费用(单位:万元)
- 费用率:研发/销售/管理费用率(%)
- 风险:资产减值损失、减值预警(减值损失>归母净利润10%)
- 同比增速:营业收入同比、归母净利润同比、研发费用同比(%)
说明:
- 金额单位为万元,增速单位为%
- 同比基于去年同期同季度数据
- 只保留合并报表(report_type=1)
- 同一报告期保留最新且字段最完整的一条
示例:
# 查询平安银行利润表
get_income_data(ts_code="科大讯飞")
read_candles_type
识别 K 线形态(单根、两根、三根、五根组合),返回 JSON 字符串。
参数:
| 参数 | 类型 | 必填 | 说明 | 默认值 |
|---|---|---|---|---|
| ts_code | string | 是 | 股票代码(如 科大讯飞)或公司名称(如 科大讯飞) |
- |
| limit | number | 否 | 获取最近 N 根日线 | 100 |
| use_qfq | boolean | 否 | 是否使用前复权价格 | true |
| recent_n | number | 否 | 仅分析最近 N 根 K 线 | null |
返回: JSON 字符串,按形态类型分组:
{
"as_of_date": "2024-01-15",
"single": {
"date": "2024-01-15",
"patterns": [{"name": "锤子线", "signal": "bullish", "strength": 4, ...}]
},
"double": {
"dates": ["2024-01-14", "2024-01-15"],
"patterns": [{"name": "看涨吞噬", "signal": "bullish", "strength": 5, ...}]
},
"triple": {
"dates": ["2024-01-13", "2024-01-14", "2024-01-15"],
"patterns": [{"name": "早晨之星", "signal": "bullish", "strength": 5, ...}]
},
"five": {
"dates": ["2024-01-09", ..., "2024-01-15"],
"patterns": [{"name": "上升三法", "signal": "bullish", "strength": 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线形态识别
注意事项
- 首次使用需配置 Tushare Token
- 股票代码缓存会自动更新(半年),可手动强制刷新
- 前复权数据通过复权因子计算,可能与券商终端略有差异
- 本项目仅供学习参考,不构成投资建议
License
MIT
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file china_stock_analysis_mcp-0.1.5.tar.gz.
File metadata
- Download URL: china_stock_analysis_mcp-0.1.5.tar.gz
- Upload date:
- Size: 20.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8413ff9ade8c6d2c6b2a57dd8bd0bb6459f5b64bb8e8afbd9042c9010e80f1bd
|
|
| MD5 |
b9db6368be8f10b3a0418a0e17b8657c
|
|
| BLAKE2b-256 |
27501212fdc2db8aee76364e5f61862c86453926dedb33d4a962dd2100274df8
|
File details
Details for the file china_stock_analysis_mcp-0.1.5-py3-none-any.whl.
File metadata
- Download URL: china_stock_analysis_mcp-0.1.5-py3-none-any.whl
- Upload date:
- Size: 24.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c4936dce620653f0db02d87046909878f8f0afbf9bac60fefbfa246d2690b4c6
|
|
| MD5 |
b7587085070d934d6dd8f6360d07e5e7
|
|
| BLAKE2b-256 |
819c72d905a2e2995117679a766ad516820677be2bfa3cb3e37463c4ff1b7959
|