使用说明
MCP Akshare Stock Server
基于 FastMCP 的中国股票数据分析 MCP 服务器,提供完整的股票数据获取和技术分析功能。
功能特性
- 🔄 实时股票数据 - 获取 A 股实时价格和交易信息
- 📊 历史数据 - 查询股票历史价格和技术指标
- 📈 支撑压力位 - 自动计算支撑位和压力位
- 🏛️ 市场指数 - 获取主要市场指数数据
- 🔍 股票基本信息 - 查询股票基本信息和行业分类
- 📊 ETF 单日数据 -
get_etf_daily_tool默认查询国家队ETF(汇金重仓8只核心宽基, 也可指定单只/多只/全市场),返回涨跌幅/成交额/规模/主力资金/份额变化及合并汇总
快速开始
环境要求
- uv (推荐)
安装和运行
git clone https://github.com/Alucardzh/mcp-stock-server.git
cd mcp-stock-server
uv sync
uv run server.py
Transport 模式
本服务器使用 HTTP Transport(Streamable HTTP)作为唯一的传输方式,适合生产环境、Docker 部署和远程访问:
# 直接运行(默认监听 0.0.0.0:8000)
uv run server.py
# 或通过环境变量指定 host
MCP_HOST=0.0.0.0 uv run server.py
优点:
- ✅ 稳定可靠,连接自动管理
- ✅ 支持负载均衡和反向代理
- ✅ 适合多客户端并发访问
- ✅ 易于监控和调试
ℹ️ SSE 与 STDIO 传输方式已弃用,统一使用 HTTP 模式。
配置 CherryStudio
在 CherryStudio 中配置 MCP 服务器(使用 HTTP 模式):
{
"mcpServers": {
"mcp-akshare": {
"isActive": true,
"name": "mcp-akshare",
"type": "http",
"url": "http://localhost:8000/mcp",
"installSource": "unknown"
}
}
}
将
url替换为实际部署地址,Docker 部署时通常映射到http://localhost:18881/mcp。
Docker 部署
使用 Docker Compose 部署(HTTP 模式,端口 18881):
docker-compose up -d
服务将在 http://localhost:18881 启动
环境变量
项目通过 .env 文件(参考 env.template)配置运行所需的环境变量。请复制模板并填入真实值:
cp env.template .env
| 变量名 | 必填 | 说明 | 示例 |
|---|---|---|---|
AKPROXY_TOKEN |
✅ | akshare-proxy 服务的鉴权 Token,用于通过 akshare-proxy-patch 访问行情数据(akshare/efinance),也是 Yahoo 兜底行情的 akproxy yfinance 付费通道凭据。在 akshare-proxy 获取 |
|
MCP_HOST |
❌ | HTTP 服务监听地址,默认 0.0.0.0 |
|
YAHOO_PROXY |
❌ | 海外行情兜底代理。Yahoo 兜底优先走 akproxy yfinance 通道(复用 AKPROXY_TOKEN),授权失败时回退此代理;两者均不可用=禁用 Yahoo 路径,自动降级国内源 |
http://192.168.3.10:7890 |
⚠️
.env已在.gitignore中忽略,请勿提交真实 Token。
工具列表
下述工具名称均带
_tool后缀(与server.py中的注册名一致)。
get_stock_symbol_by_name_tool
通过股票名称获取股票代码
- name: 股票名称,类似 '中国平安' or '平安'
get_stock_history_tool
获取股票历史数据
- symbol: 股票代码 (6 位数字,如 "000001") 或中文名称
- start_date: 开始日期 (YYYY-MM-DD,可选)
- end_date: 结束日期 (YYYY-MM-DD,可选)
- period: 数据周期 ("daily", "weekly", "monthly")
- adjust: 价格调整 ("qfq" 前复权, "hfq" 后复权, "none" 不复权)
get_stock_realtime_tool
获取实时股票数据
- symbol: 股票代码 (6 位数字) 或中文名称
get_stock_basic_tool
获取股票基本信息
- symbol: 股票代码 (6 位数字) 或中文名称
calculate_support_resistance_tool
计算支撑位和压力位
- symbol: 股票代码 (6 位数字) 或中文名称
- n_levels: 支撑/压力位级别数量 (1-10,默认 5)
- lookback_period: 分析周期天数 (30-365,默认 60)
get_market_index_tool
获取市场指数数据
- index_code: 指数代码 (默认 "000001" 上证指数)
get_ths_hot_list_tool
获取同花顺热门股票榜单
- span: 时间跨度 ("hour" 近 1 小时榜, "day" 今日榜,默认 "hour")
- limit: 返回数量 (1-100,默认 100)
get_akproxy_token_info
查询 akshare-proxy 服务的积分剩余额度(无需参数)。
get_daily_review_tool
一键复盘:当日 A 股全貌(七模块并行聚合,单模块失败不影响整体)
- date: 查询日期 YYYY-MM-DD,默认今天;历史日期时板块资金流、涨跌家数自动降级
返回七段:indices(五大指数)、breadth(涨跌家数/涨停/跌停/炸板/连板梯队)、
fund_flow(大盘+板块主力资金,东财口径)、national_team(国家队ETF份额变化与估算净申购)、
derivatives(IF/IH/IC/IM 基差含年化、期权 PCR、IF/IO 席位摘要)、margin(两融余额,T-1)、
以及 notes(降级说明)与 errors(模块级错误)。
get_market_breadth_tool
市场涨跌结构(涨跌家数仅当日;涨停/跌停/炸板支持历史日期)
- date: 查询日期 YYYY-MM-DD,默认今天
get_zt_pool_tool
涨停生态股池明细(金额单位亿元;无数据自动回退最近交易日)
- pool: 涨停/炸板/跌停/强势/昨涨停,默认"涨停"
- date: 查询日期 YYYY-MM-DD,默认今天
get_fund_flow_tool
主力资金(东财口径:超大单+大单净额)
- scope: "全部"(大盘+板块) / "大盘" / "板块",默认"全部"
- indicator: "今日" / "5日" / "10日"(仅板块口径),默认"今日"
- date: 查询日期 YYYY-MM-DD,默认今天
get_margin_tool
两融余额(交易所 T-1 披露)
- market: "沪深"(合计) / "沪" / "深",默认"沪深"
- days: 最近 N 个交易日序列(1-30),默认 10
- date: 截止日期 YYYY-MM-DD,默认今天
get_cffex_rank_tool
中金所前 20 会员成交持仓排名(经纪席位口径,直连中金所官网零积分)
- var: IF/IH/IC/IM(股指期货)或 IO/MO/HO(股指期权),默认 IF
- date: 查询日期 YYYY-MM-DD,默认今天;非交易日自动回退
- member: 会员名子串过滤(如 "中信"),默认不过滤
get_index_derivatives_tool
股指衍生品指标:四大期指基差(含年化)+ 期权 PCR(分交易所)
- date: 查询日期 YYYY-MM-DD,默认今天
get_global_markets_tool
全球市场快照(盘前一键):六组并行聚合,单组失败不影响整体
- groups: 美股/美债/汇率/亚太/商品/恐慌(逗号分隔),默认"全部"
美股(纳指/标普/道指/费半)、美债(10Y/30Y+bp变动, 日债10Y/20Y/30Y来自日本财务省)、
汇率(美元指数+离岸人民币)、亚太(日经/KOSPI/恒生科技)、商品(布伦特/WTI/COMEX黄金主力)、
恐慌(VIX)。国内直连为主源,Yahoo(经YAHOO_PROXY代理)为备源。
get_stock_global_snapshot_tool
全球个股快照(Yahoo 经 YAHOO_PROXY 代理,美股含盘后/盘前涨跌)
- symbols: 显式 Yahoo 代码(如
NVDA,000660.KS),优先于 preset - preset:
ai_chain(算力链8只含台积电) /storage(存储链5只) /etf(SMH/AIQ/BOTZ) /all
get_fed_watch_tool
美联储预期简版:美债 2Y + 10Y-2Y 利差 + 2Y 周变动(bp)
get_global_linkage_review_tool
共振复盘:隔夜全球(纳指/费半涨跌、美债/日债 bp 变动)vs 当日 A 股(指数/涨跌家数/电子通信板块资金流)对照
- date: A股交易日 YYYY-MM-DD,默认今天(板块资金流仅当日口径可得)
get_stock_intraday_tool
查询个股分钟分时(1分钟仅当日,5分钟可回溯历史)。mode=summary 返回竞价撮合价、开盘/尾盘30分钟统计、全天高低点时间、涨停触碰时间线;mode=full 返回全量分钟bar。
get_stock_auction_tool
查询个股集合竞价分时(9:15-9:25 虚拟撮合过程,仅当日可拉取)。当日首次查询即落盘 CSV 归档(data/auction/{code}/{date}.csv),历史日期读归档。mode=summary 返回 9:15/9:20/9:25 三段轨迹、撮合价量、高开幅度;mode=detail 返回逐笔快照。
get_stock_boards_tool
查询个股完整行业名与概念板块列表(efinance 所属板块 + 概念名单过滤)。用于复盘模块⑦题材聚类的完整口径,替代涨停池 4 字截断行业。
get_lhb_tool
查询龙虎榜榜单(efinance 主 / akshare 备)。按股聚合净买/卖(亿元)、上榜原因、东财解读,附净买 TOP10 / 净卖 TOP5 摘要。
get_lhb_seats_tool
查询个股龙虎榜席位明细(akshare 东财数据源,买/卖前 5 席位,金额万元,带机构/外资/游资分类)。当日数据建议 18:00 后查询。
使用示例
# 通过 MCP 客户端调用(HTTP 模式)
result = await client.call_tool("get_stock_realtime_tool", {
"symbol": "000001"
})
开发
项目结构
mcp-stock-server/
├── server.py # 入口(实例运行;工具不在本文件注册)
├── mcp_app.py # FastMCP 实例 + instructions(LLM 可见的分类导航)
├── mcp_tools/ # 工具注册层(按领域分类,导入即注册)
│ ├── meta.py # 服务器元工具(list_tools / akproxy额度)
│ ├── stock.py # 个股(行情/基础/分钟分时/竞价/板块/支撑阻力/热度榜)
│ ├── review.py # 复盘(一键复盘/涨跌结构/涨停生态/指数)
│ ├── lhb.py # 龙虎榜(榜单/席位)
│ ├── funds.py # 资金面(主力资金/两融/ETF)
│ ├── derivatives.py # 衍生品(中金所席位/基差PCR/美债利差)
│ ├── global_markets.py # 全球(六组快照/隔夜共振/海外个股链)
│ └── prompts.py # 分析师 prompts
├── utils/ # 数据获取与分析模块(真实逻辑所在,注册层只做透传)
├── scripts/ # 冒烟脚本
├── pyproject.toml # 项目配置
├── env.template # 环境变量模板
├── docker-compose.yml # Docker Compose 配置
├── Dockerfile # 容器构建文件
└── README.md # 项目文档
新增/修改工具
- 业务逻辑写在
utils/(数据通道选型遵循 efinance 优先:efinance 有封装的走utils/ef.py,akshare 独有的模块级导入便于测试 monkeypatch)。 - 在
mcp_tools/对应分类模块加一个@mcp.tool()薄透传函数(命名*_tool后缀,docstring 中文)。 - 新分类才需要:建文件 + 在
mcp_tools/__init__.py加一行导入;并同步mcp_app.py的 SERVER_INSTRUCTIONS 导航。 - 若新增顶层文件/目录,记得
Dockerfile加对应COPY行。
依赖
- fastmcp: MCP 服务器框架
- akshare: 股票数据源
- efinance (>=0.5.9): 东财行情并行通道(个股K线、全市场快照;akproxy 推荐,更快且更省积分)
- akshare-proxy-patch (>=0.5.0): akshare/efinance 数据代理补丁,需配合
AKPROXY_TOKEN使用 - pandas: 数据处理
- numpy: 数值计算
许可证
MIT License