使用说明
A-Share & HK Stock Financial Data MCP Server
基于 Akshare 与 yfinance 的股票财务数据 MCP 服务,供 Claude、Cursor 等 AI Agent 调用。支持 A 股和港股;可选连接免费的 Futu OpenD 获取港股主营构成。
与常规股票数据 MCP 的区别
专注于单个公司的深度调研,数据落地本地文件而非直接涌入模型上下文。效果详见 example。
Anthropic initiating-coverage 专项适配
build_historical_financial_package 是为 Anthropic claude-for-financial-services/equity-research 中的 initiating-coverage plugin 工作流特化的 A 股及港股数据入口,重点服务其公司研究之后的历史财务建模、估值和图表任务。工具把 3–10 年历史三表、最新中报/季报、主营构成、股本与分红、公告索引、统一单位、币种角色和自动质量检查一次性落地为本地文件,减少 Agent 反复读取整份财报和在上下文中整理宽表所消耗的 token。
它是面向该工作流的数据准备适配层,不替代定期报告审计、会计政策判断、追溯重述核验或最终投资结论。
功能
- 无需 Token,开箱即用
- A 股:抓取利润表、资产负债表、现金流量表(来源:新浪财经)
- 港股:核心三表及行情只使用 yfinance,不再抓取东方财富港股金额或财务指标
- 港股免费主营构成:可选连接 Futu OpenD,抓取发行人披露的产品、地区、行业和业务收入
- 抓取最近 N 年的核心财务指标
- A 股及港股历史研究包:机械生成 3–10 年三表、核心实际值、补充指标、分红、来源清单及质量检查
- 港股币种隔离:交易币种与财报币种分列;不确定的数据商换算金额自动隔离,禁止进入模型
- 支持公司名称反查股票代码 / Ticker
- AkShare 二级文档:
akshare_docs按需查询约 480 个个股、指数、行业、资金流、公告接口的参数、返回列和本机可用状态;akshare_call受控执行并附溯源信息 - 异常统一转为可读错误信息,MCP 进程不会因此崩溃
- 数据自动落地为本地 Markdown 文件
工具说明
search_stock
输入公司名称,返回股票代码或港股 Ticker。
| 参数 | 必填 | 说明 |
|---|---|---|
stock_name |
✅ | 公司名称或简称,如 贵州茅台、腾讯控股、Tencent |
market |
❌ | "cn"(默认,A 股)或 "hk"(港股) |
注意: 搜索港股时必须显式传入
market="hk",否则将在 A 股数据库中查找,导致找不到结果。港股搜索底层使用 yfinance Search API,支持中英文名称,结果自动缓存。
get_financials
输入股票代码,抓取当前市值及历史财务数据,保存为本地 .md 文件。
| 参数 | 必填 | 说明 |
|---|---|---|
stock_code |
✅ | A 股六位代码(如 600519)或港股 Ticker(如 0700.HK) |
years |
❌ | 抓取最近几年的数据,默认 3 |
output_dir |
❌ | 输出目录的绝对路径,默认为当前目录 |
build_historical_financial_package
为 A 股或港股财务建模和首次覆盖研究生成可审计的本地数据包。它保留三张原始报表,并额外生成标准化长表、核心历史实际值、补充指标、股本/分红资料、来源清单、单位字典、质量报告、清单和 ZIP 压缩包。
港股采用双币种模型:quote_currency 表示证券交易币种,financial_currency 表示发行人财报币种。例如腾讯为 HKD/CNY、汇丰为 HKD/USD、港交所为 HKD/HKD。核心三表使用 Yahoo Finance info.financialCurrency 明确标记。由于东方财富港股报告列表、主要指标和实际金额行为存在无法审计的币种冲突,MCP 默认完全停止抓取其港股金额与财务指标;兼容文件 provider_statements_long.csv 和 financial_indicators_long.csv 保留表头但不写入数值。
若本机安装并登录免费的 Futu OpenD,港股包会自动调用 get_financials_revenue_breakdown,将发行人披露的产品、地区、行业和业务收入写入 business_composition.csv 与 business_composition_long.csv。调用时不传 currency_code,保留接口返回的原始报告币种;质量检查会将该币种与 yfinance financialCurrency 对照。富途未配置、公司未披露某维度或接口没有历史数据时保持空值并输出 WARN。
数值型长表同时提供 original_value、standardized_value、currency、original_unit、standard_unit、scale_to_standard 和 unit_basis。例如主营比例从 0–1 换算为百分数、股本变动从万股换算为股;原值始终保留,不做不可追溯的覆盖。
| 参数 | 必填 | 说明 |
|---|---|---|
stock_code |
✅ | A 股六位代码,如 000408;或港股代码,如 0700.HK、00700 |
years |
❌ | 年度历史期数,3–10 年,默认 5 |
output_dir |
❌ | 输出目录的绝对路径,默认为当前目录 |
include_latest_interim |
❌ | 是否附带最新一期中报/季报,默认 true |
自动检查包括三表完整性、年度覆盖、资产负债表平衡、核心字段覆盖、币种一致性、产品与地区分部覆盖、官方报告链接以及接口失败情况。WARN 不代表数据包不可用;它会指出需人工补齐的材料。行情价格、股数为 0 或金额币种为 UNRESOLVED 时,工具会明确禁止该值进入估值。
港股包额外生成:
market_identity.json:规范代码、交易所、交易币种和财报币种currency_manifest.csv:逐数据集说明币种角色、来源及能否进入模型business_composition.csv:Futu OpenD 可用时返回的港股产品/地区/行业/业务收入business_composition_long.csv:上述主营构成的收入与占比长表provider_statements_long.csv:兼容保留的禁用数据集;港股不再写入东方财富金额hk_report_metadata.csv:兼容保留的禁用数据集;港股不再依赖东方财富币种标签
当前港股机械化边界:Futu 只提供收入和占比,不保证每家公司披露产品及地区,也不提供通用的分部成本/利润。缺失项目及报告级 HKEX 官方链接仍需从发行人年报或披露易补充,工具会输出 WARN,不会猜填。
akshare_docs
按需查询 AkShare 接口说明。默认上下文只有工具描述,接口文档在需要时才取。
| 参数 | 必填 | 说明 |
|---|---|---|
query |
❌ | 中文关键词,如 个股资金流、申万 行业 成份 |
name |
❌ | 接口名,返回完整参数、已记录的返回列和本机状态 |
category |
❌ | 类别过滤,如 资金流、公告与新闻 |
limit |
❌ | 搜索结果数,默认 5 |
不带参数调用时返回类别和接口数。索引覆盖 stock_、index_、sw_index_ 前缀接口,需要雪球 token 的接口标为不可调用。
akshare_call
执行索引内的一个 AkShare 接口。
| 参数 | 必填 | 说明 |
|---|---|---|
name |
✅ | 接口名 |
params |
❌ | 接口参数(对象),未知参数会被拒绝 |
columns |
❌ | 只保留这些列 |
limit |
❌ | 内联返回的最大行数,默认 50 |
output_dir |
❌ | 大结果 CSV 的输出目录 |
不超过 limit 行且不超过 15 列时直接返回表格;否则存为 CSV,只返回路径、行数、列名和前 5 行预览。每次返回附带接口、参数、akshare 版本、取数时间和数据商网址;单次调用超时 60 秒。调用结果(状态、行数、返回列)自动记入本机 src/akshare_docs/health.json,供 akshare_docs 显示。
接口索引与本机状态
# AkShare 升级后重建索引(src/akshare_docs/index.json,提交进仓库)
python scripts/build_akshare_index.py
# 小范围探测 scripts/probe_args.json 里约 30 个常用接口(写入本机 health.json,gitignore)
python scripts/build_akshare_index.py --probe-set
# 全量探测全部接口:约 480 次请求,可能触发限流,仅在确有需要时手动运行
python scripts/build_akshare_index.py --probe-all
安装
需要 Python 3.10+。
pip install "mcp>=1.0.0" akshare yfinance pandas tabulate
港股主营构成是可选的免费增强功能。先安装并登录 Futu OpenD,完成首次问卷和协议确认,再安装 SDK:
pip install futu-api
默认连接 127.0.0.1:11111。如 OpenD 使用其他地址,可设置 FUTU_OPEND_HOST 和 FUTU_OPEND_PORT。没有安装或登录 Futu 时,yfinance 三表仍正常生成,只是主营构成质量检查显示 WARN。该接入不要求付费数据订阅;不同地区的免费行情权限仍以富途当前规则为准。
配置
以 Claude Desktop 或 Cursor 为例:
{
"mcpServers": {
"ashare-mcp": {
"command": "python",
"args": ["-m", "src.server"],
"env": {
"PYTHONPATH": "C:/path/to/this/repo"
}
}
}
}
PYTHONPATH 改为实际仓库的绝对路径。运行时所需网络访问:
| 数据源 | 用途 |
|---|---|
| 新浪财经 | A 股财务三表 |
| 腾讯行情(qt.gtimg.cn) | A 股行情快照:现价、时间戳、流通/总股本 |
| 新浪财经(ak.stock_zh_a_daily) | A 股行情快照备用:最新收盘价、流通股本 |
| 巨潮资讯 | A 股公司基本信息;行情快照名称备用 |
| 东方财富 | A 股主营构成、分红历史 |
| Yahoo Finance | 港股行情、发行人币种财务三表及名称搜索 |
| Futu OpenAPI(可选免费登录) | 港股产品、地区、行业及业务收入构成;原始币种 |
| 东方财富 | 港股公司资料及带明确币种文字的分红;不再抓取港股财务金额或指标 |
| 香港交易所披露易 | 港股一级来源检索入口;当前不自动解析报告级链接 |
使用示例
# 查找 A 股代码
search_stock("贵州茅台")
→ Found stock code for 贵州茅台: 600519
# 查找港股 Ticker
search_stock("腾讯控股", market="hk")
→ Found HK stock ticker for 腾讯控股: 0700.HK
# 获取 A 股财务数据
get_financials("600519", years=3)
# 获取港股财务数据
get_financials("0700.HK", years=3)
# 生成 A 股五年历史研究包
build_historical_financial_package("000408", years=5, output_dir="C:/research/000408")
# 生成港股五年历史研究包;交易币种和财报币种自动分开
build_historical_financial_package("0700.HK", years=5, output_dir="C:/research/0700")
# 查找并调用其他 AkShare 接口
akshare_docs(query="十大股东")
akshare_call(name="stock_gdfx_top_10_em", params={"symbol": "sz002410", "date": "20260630"})
测试
python -m pytest tests/