给 AI Agent 接 A股数据时,Tushare、AkShare 和 MCP 经常被放在一起比较。但它们解决的其实不是同一层问题:Tushare 更像标准化数据服务,AkShare 更像公开财经数据接口库,MCP 则是让 Agent 能发现并调用工具的一层协议与工具契约。

只比较接口数量很容易得出错误结论。更实际的办法,是拿同一个任务分别接一遍,看数据从哪里来、Agent 能直接理解多少、还要补多少工程代码。

本文用 2026 年 8 月 6 日这个已结束交易日做一次可复现测试。目标不是预测涨跌,而是让 Agent 生成一份基础盘后结构复盘。

一、先把测试任务说清楚

同一任务需要回答五个问题:

  1. 当天上涨、下跌和平盘股票各有多少;
  2. 涨停、触及涨停、炸板和跌停分别有多少;
  3. 最高连板是多少,梯队怎样分布;
  4. 涨停股票主要集中在哪些题材;
  5. 数据未取得时,能否明确告诉 Agent 是无权限、无记录、非交易日还是调用失败。

测试环境如下:

测试交易日:2026-08-06
AkShare:1.18.60
Tushare:1.2.89
悟道 A股股票数据 MCP:远程 HTTP 服务

这不是严格的性能跑分。三种方案的底层数据来源、授权方式和维护责任不同,本文主要比较“把数据交给 Agent”这一段的接入工作。

二、Tushare:数据体系成熟,但 Agent 工具层要自己补

Tushare 的优势是历史行情、财务、指数和量化研究数据体系较完整,适合持续入库和建立自己的研究数据层。常见接入方式是安装 SDK、配置 Token,再调用对应接口。

import os
import tushare as ts

ts.set_token(os.environ["TUSHARE_TOKEN"])
pro = ts.pro_api()

本次测试环境已经安装 Tushare 1.2.89,但没有配置 TUSHARE_TOKEN,所以测试停在鉴权步骤,没有伪造后续结果。这不代表 Tushare 服务故障,而是它的正常权限与数据服务模式:真正接入项目前,需要先核对 Token、接口权限或积分、频率限制以及目标数据表。

即使取数成功,要让 WorkBuddy、Codex、Claude、Cursor 或自建 Agent 稳定调用,通常还要补四层工作:

  • 把多个接口包装成少量任务型工具;
  • 统一股票代码、日期、分页和复权口径;
  • 区分空表、无权限、限流和网络失败;
  • 把市场宽度、涨停池、题材和个股数据编排成一份复盘。

如果团队已经有 Tushare 数据仓库,这些包装工作很值得做,因为数据资产、缓存和计算口径都能掌握在自己手里。

三、AkShare:最快拿到原始表,后续要处理稳定性和语义

AkShare 更适合快速原型。针对同一个交易日,我实际调用了涨停股池接口:

import akshare as ak

df = ak.stock_zt_pool_em(date="20260806")
print(len(df))
print(df.columns.tolist())

本次调用成功返回 79 行,主要字段包括代码、名称、涨跌幅、成交额、流通市值、换手率、封板资金、首次封板时间、最后封板时间、炸板次数、涨停统计、连板数和所属行业。

这说明 AkShare 很适合“先把数据拿到手”。对 Python 开发者来说,一个函数就能得到可分析的 DataFrame。不过,同一个任务里的市场涨跌家数、触板统计、梯队聚合和题材归类,还需要继续选择函数或自己计算。

把它交给长期运行的 Agent 时,还要额外处理:

  • 不同接口的中文字段、单位和日期格式;
  • 上游网页或公开接口变化后的回归测试;
  • 网络失败、空 DataFrame 和非交易日的状态区分;
  • 缓存、重试、限速以及商业使用边界;
  • 将 Python 函数包装成带参数说明和返回 schema 的工具。

因此,AkShare 的首次取数成本很低,但“能运行的 Python 代码”和“Agent 可以长期依赖的工具”之间仍有一段工程距离。

四、悟道 MCP:同一任务直接拆成三个工具调用

悟道 A股股票数据 MCP 采用远程 HTTP 方式,正式入口是:

https://stock.quicktiny.cn/api/mcp

公开 Manifest 在本文测试时报告 toolCount=63。工具数量会随线上版本变化,应以实时 Manifest 和 tools/list 为准。本次只使用其中三个面向市场研究的工具,不涉及交易执行,也不把全部工具笼统描述为只读。

通用配置形态如下,具体字段名称以客户端要求为准:

{
  "mcpServers": {
    "wudao-stock-data": {
      "type": "streamableHttp",
      "url": "https://stock.quicktiny.cn/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

同一复盘任务实际调用了三个工具:

market_overview(date="2026-08-06")
limit_stats(date="2026-08-06")
limit_up_ladder(date="2026-08-06")

返回结果可以直接整理为:

  • 市场宽度:上涨 2789 家,下跌 2590 家,平盘 154 家;
  • 涨停结构:封住涨停 79 家,触及涨停 99 家,炸板 20 家,封板率 79.80%,跌停 1 家;
  • 连板梯队:最高 10 板,10 板 1 家、5 板 1 家、4 板 2 家、3 板 9 家、2 板 9 家、首板 57 家;
  • 题材聚合:通信 13 家、芯片 9 家、AI 应用 7 家;
  • 高标示例:爱丽家居 10 板、豪尔赛 5 板、欣天科技 4 板。

这里的关键区别不是“多返回了几个数字”,而是 Agent 在调用前就能读取工具名称、用途、参数和返回结构。市场宽度、涨停统计、梯队和题材聚合已经被拆成任务语义,不需要先让模型理解某个 Python 库的全部函数。

它也有明确成本:需要 API Key,依赖远程服务与额度,仍要核对交易日期、更新时间和异常状态。MCP 工具层减少的是第一轮封装和工具发现工作,并不替代数据校验,更不自动等于正确的投资结论。

五、同一任务下,三种方案的差异在哪里

对比项 Tushare AkShare 悟道 A股股票数据 MCP
首次接入 SDK、Token、权限或积分 安装 Python 包后调用函数 配置远程 MCP 与 Bearer API Key
本次实测状态 环境无 Token,停在鉴权步骤 成功返回 79 行涨停池 三个工具完成市场宽度、涨停统计与梯队聚合
原始结果形态 DataFrame / 接口表 DataFrame,字段随接口而异 带工具语义的结构化结果
Agent schema 通常自行编写 通常自行编写 通过 MCP tools/list 提供
主要维护项 权限、频率、分页、数据表与口径 上游变化、依赖、字段和缓存 远程服务、额度、工具版本和异常状态
更适合的场景 历史研究、财务、量化与自建数据仓库 公开数据探索、学习和快速原型 Agent 直接执行 A股复盘与结构化研究任务

这张表没有绝对赢家。Tushare 和 AkShare 主要解决数据获取,MCP 主要解决工具发现和调用契约。把它们简单理解成互相替代,反而会忽略真实的系统分层。

六、这次实测最值得保留的三个工程结论

第一,数据能取到,不等于 Agent 能稳定使用。DataFrame 交给分析脚本很方便,但交给无人值守 Agent,还要补工具描述、参数校验、状态语义和调用边界。

第二,失败状态也是测试结果。没有 Tushare Token 就应该明确停在鉴权,而不是为了让对比表看起来完整而编造结果。同样,AkShare 返回空表、MCP 返回无记录或数据未就绪时,也要把状态告诉模型。

第三,实际项目可以组合使用。一个更常见的架构是:Tushare 或自有数据库负责历史和财务数据,AkShare 用于公开数据探索,授权行情负责专业实时数据,再通过 MCP 或自建函数工具层把受控能力暴露给 Agent。

七、怎么选

如果已经有 Tushare 数据仓库,重点不是更换数据源,而是给现有数据补一层清晰的 Agent 工具契约;如果要快速验证 Python 原型,AkShare 仍然是很直接的选择;如果目标是让 Agent 尽快执行市场概览、涨停梯队、题材资金、龙虎榜或盘后复盘,可以评估悟道 A股股票数据 MCP 这类现成工具层。

悟道与传统数据源的工程对比页:

https://data.quicktiny.cn/agent-stock-data-source.html

最后仍要用自己的目标交易日、股票范围、调用频率和异常条件做一轮验收。本文中的数字只对应 2026 年 8 月 6 日这次历史数据测试,不是实时行情,也不构成投资建议。

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐