mcpField
A
AKShare

AKShare

本地服务
github.com/agentpit-io金融数据5762 周前更新

关于 AKShare

AKShare MCP 把 AKShare 的一千多个中国市场数据函数封装为可自行部署的 MCP 服务,由模型自行搜索、查看签名并调用。它面向需要灵活查询中国金融数据、且不依赖固定数据源列表的用户。服务以 SSE 方式运行,并通过 Docker 部署。

主要功能

  1. 01搜索 AKShare 函数
  2. 02查看函数签名与参数
  3. 03调用指定的 AKShare 函数
  4. 04限制单次返回的最大行数

适用场景

  1. 01查询龙虎榜、股东、研报等中国市场数据
  2. 02在内网部署后供 Hunter 等工具接入使用
  3. 03在行数受限的情况下获取关键数据

MCP 相关

该项目是 MCP 服务,通过 SSE 端点向 MCP 客户端提供 akshare_search、akshare_signature 和 akshare_call 三个工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"hangeaiagent-akshare": {
"command": "uvx",
"args": [
"agentpit-akshare-mcp"
],
"env": {
"AKSHARE_MAX_ROWS": "<AKSHARE_MAX_ROWS>"
}
}
}
}
启动命令uvx agentpit-akshare-mcp
需要配置的环境变量
AKSHARE_MAX_ROWSCap on rows per response

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiagentpit-akshare-mcp0.1.1

工具

3

收录的工具列表 · 更新于 2 周前

参数类型必填说明
limitinteger否
keywordstring是

详细介绍

来自项目 README

AKShare MCP

把 AKShare 变成一个你自己跑的能力,接进 Hunter。


为什么不是「数据源」

数据源的模型是一条记录 = 一个 (市场, 数据类型, 接口地址)。

AKShare 有一千多个函数 —— 龙虎榜、十大股东、券商研报、公司治理、 南向资金、宏观、期货、基金……按数据源建模就得枚举一千多条,做不到。

Hunter 原来只从里面挑了 6 条进目录,而那 6 条是我们用得上的,不是你 用得上的。你想查「北向资金持股明细」而我们没挑,你就没辙。

改成能力之后,模型拿到三个工具,自己去找、自己去调:

akshare_search("龙虎榜")                    → 有哪些函数能查这个?
akshare_signature("stock_lhb_detail_em")   → 它要什么参数?
akshare_call("stock_lhb_detail_em", {...}) → 调它

不需要我们提前枚举。

为什么要你自己跑

AKShare 是 Python 库不是 HTTP 服务,没法在表单里填一个 URL。而且它多数 接口的上游在国内,从境外容器直连经常打不通。


跑起来

cd tools/akshare-mcp
docker build -t akshare-mcp .
docker run -d -p 8931:8931 --name akshare-mcp akshare-mcp

镜像大约 1.5G(AKShare 自己拖着 pandas/lxml/beautifulsoup4 一大串), 首次构建要几分钟。

验证:

curl -N http://localhost:8931/sse
# 有 SSE 流出来就是起来了(它不会自己结束,Ctrl-C 退出)

接进 Hunter

能力 → 接入一个工具 → 填:

字段值
传输方式sse
地址http://你的地址:8931/sse
需要 key不勾

Hunter 跑在 Docker 里的话,localhost 指的是 Hunter 自己的容器 —— 要填宿主机地址(Linux 上是 172.17.0.1,Docker Desktop 上是 host.docker.internal),或者把两个服务放进同一个 compose 网络。

⚠️ **不要填 Hunter 官方的任何地址。**这个服务存在的意义就是让你不依赖我们。


环境变量

变量默认说明
AKSHARE_MCP_HOST0.0.0.0监听地址
AKSHARE_MCP_PORT8931端口
AKSHARE_MAX_ROWS200单次返回最大行数

AKSHARE_MAX_ROWS 不要调太大:AKShare 有些接口一次几万行,原样塞进模型 上下文会把真正有用的东西挤掉。被截断时返回里会明确说,不会假装那就是全部。


安全

akshare_call 只能调 akshare 模块里公开的、可调用的属性:

  • 名字带 _ 前缀的拒绝
  • 带 . 的(想访问子模块)拒绝
  • 不存在或不可调用的拒绝
  • 不做 eval / exec / 动态 import

它不是通用代码执行入口。

**但仍然不要暴露到公网。**这个服务没有鉴权,而 AKShare 会向第三方站点发 请求 —— 公网上任何人都能借你的机器发请求。绑内网,或者加一层带鉴权的反代。


常见问题

调用超时 / 连接被拒 多数 AKShare 接口的上游在国内。如果这台机器在境外,大部分接口都会失败 —— 把它跑在国内的机器上,或者给容器配代理。

函数名找不到 AKShare 的命名多是英文缩写,硬猜会一直失败:龙虎榜是 stock_lhb_detail_em 不是 stock_dragon_tiger。先 akshare_search 再 akshare_call。

返回的列名是中文 AKShare 的原样返回,我们不改列名 —— 改了之后你对着它的文档会对不上。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。