给 Claude Code 装上 A 股数据能力。零 C 依赖,纯 Python + requests,双源融合(新浪 + 东方财富)。
AKShare 功能强大但依赖 numpy/pandas + cryptography(需要 Rust 编译),在 Python 3.13 上安装困难。本项目直接调用新浪财经和东方财富的公开 HTTP API,零 C 依赖、秒装。
git clone https://github.com/YOUR_USERNAME/akshare-mcp.git
cd akshare-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install requests{
"mcpServers": {
"akshare": {
"command": "/path/to/akshare-mcp/.venv/bin/python",
"args": ["/path/to/akshare-mcp/server.py"],
"env": {
"HTTPS_PROXY": "http://127.0.0.1:7890"
}
}
}
}如果网络能直连,去掉
env字段。如果使用 Clash,建议添加DOMAIN-SUFFIX,eastmoney.com,DIRECT规则。
| 分类 | 工具 | 描述 | 状态 |
|---|---|---|---|
| 🔭 大盘 | market_overview |
上证/深证/创业板/科创50/沪深300 实时行情 | ✅ |
| 📈 个股 | stock_spot |
个股实时行情 | ✅ |
stock_history |
历史K线(日/周/月) | ||
quick_analysis |
行情+30日走势一键速览 | ||
| 📊 ETF | etf_spot |
主要宽基+行业ETF行情 | ✅ |
etf_history |
ETF历史净值 | ||
| 💰 资金 | north_bound_flow |
北向累计+南向每日 | ✅ |
| 🏭 板块 | sector_detail |
板块成分股列表 | ❌ 东财报表已下线 |
| 🐉 龙虎榜 | dragon_tiger |
上榜个股及净买入(自动T+1回退) | ✅ |
dragon_tiger_seats |
席位明细(机构/游资/散户拆分) | ✅ | |
dragon_tiger_summary |
机构/游资/北向/散户汇总+情绪判断 | ✅ | |
| 📰 公告 | stock_announcements |
个股最新公告(精准过滤) | ✅ |
| 📋 新闻 | financial_news |
A股财经新闻(新浪API,支持关键词) | ✅ |
| 🎯 情绪 | market_breadth |
涨跌停统计+ETF情绪+综合情绪 | ✅ |
margin_trading |
融资余额/买入额 | ❌ 东财报表已下线 | |
institution_visits |
机构调研记录 | ✅ | |
guba_hot |
股吧热门帖子(散户情绪代理) | ❌ 股吧接口已废弃 |
"今天大盘怎么样" → market_overview
"茅台现在多少钱" → stock_spot 600519
"帮我快速看看宁德时代" → quick_analysis 300750
"沪深300有哪些ETF" → etf_spot 沪深300
"北向资金最近在干嘛" → north_bound_flow 10
"半导体板块有哪些票" → sector_detail 半导体
"茅台年报" → stock_announcements 600519 keyword=年报
"今天龙虎榜" → dragon_tiger
| 数据 | 来源 | 延迟 | 备注 |
|---|---|---|---|
| 实时行情/指数/ETF | 新浪财经 hq.sinajs.cn |
~3秒 | 主力数据源 |
| 历史K线 | 东方财富 push2his.eastmoney.com |
实时 | — |
| 公告 | 东方财富 np-anotice-stock.eastmoney.com |
实时 | — |
| 龙虎榜/席位 | 东方财富 datacenter-web.eastmoney.com |
T+1 | 当日数据次日凌晨上线 |
| 板块/机构调研 | 东方财富 datacenter-web.eastmoney.com |
实时 | — |
| 融资融券 | 东方财富 datacenter-web.eastmoney.com |
— |
server.py (1198 行纯 Python)
├── 新浪 API 封装 → 实时行情/指数/ETF
├── 东方财富 API 封装 → K线/公告/板块/龙虎榜/北向资金
├── MCP JSON-RPC 框架(手写,不依赖 mcp SDK)
└── 17 个工具注册 + 路由(含 6 个情绪维度工具)
- Python ≥ 3.11
requests(唯一外部依赖)
| 工具 | 问题 | 根因 | 解决思路 |
|---|---|---|---|
margin_trading (融资融券) |
返回"报表配置不存在" | 东财 datacenter 报表 RPT_MARGIN_TRADING_DAILY / RPT_MUTUAL_MARKET_DAILY 已于 2026.7 下线 |
① 寻找东财新版融资融券 API;② 改用 push2 KAMT 接口(需确认 secid);③ 暂时用 market_breadth 涨跌停+ETF情绪替代 |
guba_hot (股吧热度) |
返回"无法解析"或空 | 股吧旧接口 guba.eastmoney.com/interface/GetData.aspx 已废弃,所有已知端点 404 |
① 抓取东财新版股吧页面 API(需逆向);② 改用 financial_news 关键词搜索替代散户情绪;③ 用 push2 客户端接口(需确认新 URL) |
sector_detail (板块成分股) |
返回空数组 [] |
① 东财 datacenter 报表 RPT_BOARD_COMPONENT 已下线;② push2 API 在某些网络环境不可达 |
① 找新版板块报表名(如 RPT_BOARD_LIST 等变体);② 用新浪行业接口 vip.stock.finance.sina.com.cn;③ 用 push2 fs=b:BK代码 参数(需网络可达) |
| 工具 | 问题 | 根因 | 解决思路 |
|---|---|---|---|
stock_history (历史K线) |
ProxyError: 代理连接断开 | 该工具访问 push2his.eastmoney.com(Azure CDN),需走代理(Clash 7890)。但代理连接偶发 RemoteDisconnected |
① Clash 中为 push2his.eastmoney.com 配置独立代理节点;② 或找替代 K 线数据源(如新浪 finance.sina.com.cn 历史接口);③ 增加重试+超时 |
etf_history (ETF历史净值) |
同上 | 同走 push2his |
同上 |
quick_analysis (30日走势) |
实时行情可用,历史走势报错 | 实时行情走新浪(OK),30日走势走 push2his(挂) |
实时部分正常使用;历史走势参考 stock_history 的解决方案 |
现状:17 个工具中 11 个正常、3 个 API 侧故障、3 个网络层不稳定。核心数据(大盘/个股/ETF实时/龙虎榜/情绪/公告/新闻)全部可用。
- 龙虎榜 T+1 延迟:当日数据次日凌晨上线,已内置自动回退(最多回溯5天)
- 公告查询漏报:
stock_announcements改用stock_list精准过滤,解决大票公告遗漏 - 财经新闻占位:
financial_news从空壳改为新浪财经 API 实现
examples/email-reports/ 目录包含完整的日报/周报自动化方案:
send_email.py— Markdown → PDF 附件邮件发送email_config.example.json— 多邮箱配置模板(支持 163/QQ/Gmail).md-to-pdf.json— A4 PDF 样式README.md— 从安装到定时集成的完整指南
配合 Claude Code cron 可实现:盘前速览(8:30)、盘后复盘(15:33)、宏观周报(周六)、行业周报(周日) 全自动生成。
编辑 server.py 的 POPULAR_ETFS 列表:
POPULAR_ETFS = [
("sh510300", "沪深300ETF"),
("你的代码", "你的ETF名称"),
]编辑 CONCEPT_BOARDS 字典:
CONCEPT_BOARDS = {
"你的板块名": "东方财富板块代码",
}板块代码可以在东方财富概念板块页面 URL 中找到。
- 东方财富 — 数据来源
- 新浪财经 — 数据来源
- MCP (Model Context Protocol) — 协议规范
MIT