Finance Toolkit
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Search and fetch AKShare financial data (stocks, futures, funds, macro) from AI assistants
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"aktools": {
"command": "uvx",
"args": [
"aktools",
"mcp"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add aktools -- uvx aktools mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"aktools": {
"command": "uvx",
"args": [
"aktools",
"mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"aktools": {
"type": "stdio",
"command": "uvx",
"args": [
"aktools",
"mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub akfamily ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.1.4) เข้า registry 5 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Finance Toolkit, SolidInvoice, Korea Tax Calculator
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
500+ transparent financial methods calculated from raw statements, not third-party endpoints.
Create and send invoices and quotes, manage clients, and track payments in SolidInvoice.
Korean tax calculation and tax-audit judgment MCP: 96 tools with statutory citations.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
AKTools exposes AKShare's financial data as an HTTP API and an MCP server, so you can fetch it from any programming language or AI assistant.
AKTools 把开源财经数据接口库 AKShare 的一千多个接口变成两种开箱即用的服务:
两种方式背后是同一套接口目录、缓存和错误处理,按需选用即可。
[AKTools 中文文档](https://aktools.akfamily.xyz/) | [AKShare 数据字典](https://akshare.akfamily.xyz/data/index.html) | [版本说明](https://aktools.akfamily.xyz/aktools_version/)
第一次使用? HTTP API 请从 快速入门教程 开始,约 10 分钟即可完成从安装到下载 Excel 的完整流程;AI 助手请直接看下面的 在 AI 助手中使用。
pip install aktools
python -m aktools
然后在浏览器打开 http://127.0.0.1:8080/api/public/tool_trade_date_hist_sina,看到交易日历数据即表示成功。更多用法见下文的快速开始与调用规则。
先安装 uv,再把下面的配置加入 AI 助手的 MCP 配置文件,不需要事先安装 AKTools,也不需要手动启动服务:
{
"mcpServers": { "aktools": { "command": "uvx", "args": ["--from", "aktools", "aktools-mcp"] } } }
重启助手后,就可以直接提问,例如:
助手会通过 AKTools 提供的 3 个工具完成查询:search_interfaces 搜索接口、describe_interface 查看参数、get_data 获取数据。下面是在 Claude Code 中实际提问的过程(根据真实会话记录回放):
与 AKQuant 联用,一句话体验 AI 量化回测:在 WorkBuddy 中输入“安装 AKShare 和 AKQuant 各自的官方 MCP,运行一个示例策略并报告结果”,AI 会自动下载数据、运行回测、解读结果,并给出改进策略的建议。详见与 AKQuant 联用。
WorkBuddy
直接对 WorkBuddy 说“安装 AKShare 的官方 MCP”,它会自己完成配置。也可以手动把上面的配置加入 WorkBuddy 的连接器(MCP)设置,或用户级配置文件 ~/.workbuddy/mcp.json;国内网络可以在 aktools 下加上 "env": {"UV_INDEX_URL": "https://mirrors.aliyun.com/pypi/simple/"} 使用镜像源。
Codex
codex mcp add aktools -- uvx --from aktools aktools-mcp
Cursor
点击按钮一键添加:
也可以手动把上面的配置加入项目的 .cursor/mcp.json,或全局的 ~/.cursor/mcp.json。
Claude Code
claude mcp add aktools -- uvx --from aktools aktools-mcp
Claude Desktop
打开设置中的“开发者 → 编辑配置”,把上面的配置加入 claude_desktop_config.json,保存后重启 Claude Desktop。
连接已经运行的 AKTools 服务(HTTP 方式)
已经用 python -m aktools 启动了服务,或者想让多台电脑共用一个服务时,可以让助手直接连接 http://127.0.0.1:8080/mcp,例如:
claude mcp add --transport http aktools http://127.0.0.1:8080/mcp
第一次启动时 uvx 需要下载 AKShare 等依赖(约 150 MB),可能需要几分钟。配置、局域网访问与排障详见 AI 助手(MCP)文档。
python -m aktools 一行命令启动服务,无需编写任何代码/api/public/<接口名> 直接访问,AKShare 新增接口后升级即可使用/api/interfaces 列出全部接口并支持按关键词搜索,每个接口的参数、默认值和说明都能直接查询_format=csv 或 _format=xlsx 即可把数据下载为 CSV 或 Excel 文件/docs 即可在线查看和调试接口AKTools 要求 Python 3.11 及以上(64 位),运行环境要求与 AKShare 安装指导 一致。
pip install aktools
AKShare 的数据接口会随上游网站的变化频繁更新,遇到问题时请先把两者都升级到最新版:
pip install akshare aktools --upgrade -i https://pypi.org/simple
shell python -m aktools
| 地址 | 说明 |
|---|---|
http://127.0.0.1:8080/ | 主页,展示简要的使用说明 |
http://127.0.0.1:8080/docs | 接口导览,可在线调试 |
http://127.0.0.1:8080/version | 当前与最新的 AKShare、AKTools 版本 |
http://127.0.0.1:8080/api/interfaces?q=历史行情 | 按关键词搜索接口 |
http://127.0.0.1:8080/api/interfaces/stock_zh_a_hist | 查看接口的参数、默认值和说明 |
http://127.0.0.1:8080/api/public/tool_trade_date_hist_sina | 连通性测试(新浪交易日历,无需参数且较为稳定) |
http://127.0.0.1:8080/api/public/stock_zh_a_hist?symbol=600000 | 带参数获取数据 |
启动参数:
| 参数 | 简写 | 默认值 | 说明 |
|---|---|---|---|
--host | -H | 127.0.0.1 | 监听地址,需要局域网或其他机器访问时设置为 0.0.0.0 |
--port | -P | 8080 | 监听端口 |
--auto | -A | 关闭 | 启动后自动打开浏览器 |
--cache-ttl | — | 60 | 结果缓存的有效期(秒),同一接口、同样参数在有效期内直接返回上次的数据,0 为关闭 |
--akshare-cache-clear | — | 3600 | 清空 AKShare 内部缓存的间隔(秒),避免板块名称等数据一直不更新,0 为关闭 |
--proxy | — | 不设置 | 访问上游数据源使用的代理,如 http://127.0.0.1:7890;不设置时沿用 HTTP_PROXY 等环境变量 |
--timeout | — | 60 | 访问上游数据源的读取超时(秒),连接超时固定为 10 秒 |
--token | — | 不设置 | 访问令牌,设置后数据接口与 /mcp 需要携带令牌,多个令牌用逗号分隔,详见 访问令牌 |
--version | -v | — | 查看 AKTools 版本 |
例如:python -m aktools --port 8888 --auto 会在 8888 端口启动并自动打开浏览器。需要让局域网内的其他机器访问时,加上 --host 0.0.0.0,其他机器通过 http://<本机 IP>:8888 访问;0.0.0.0 只表示监听所有网卡,不能当作访问地址在浏览器中打开。
AKTools 本身不加工数据,只负责把 HTTP 请求翻译成对 AKShare 接口的调用:
GET /api/public/{接口名}?{参数1}={值1}&{参数2}={值2}
↓ akshare.{接口名}(参数1="值1", 参数2="值2")
/api/interfaces?q=关键词 搜索接口,通过 /api/interfaces/{接口名} 查看参数说明,详细的数据说明请查阅 AKShare 数据字典。?symbol=600000&period=weekly;不传的参数使用 AKShare 接口的默认值。"2024-01-25T00:00:00.000"。_format=csv 或 _format=xlsx,数据会以 {接口名}.csv 或 {接口名}.xlsx 文件下载,例如 /api/public/stock_zh_a_hist?symbol=000001&_format=xlsx。CSV 为带 BOM 的 UTF-8 编码,可以直接用 Excel 打开。请求失败时返回 {"error": "错误信息"},状态码含义如下:
| 状态码 | 含义 | 处理建议 |
|---|---|---|
200 | 成功 | — |
401 | 服务启用了访问令牌,但请求没有携带令牌或令牌不正确 | 在请求头加上 Authorization: Bearer <令牌>,或在网址中加上 _token=<令牌> |
400 | 参数名或参数值不合法,_format 取值不支持,或数据行数超过 Excel 上限 | 对照 /api/interfaces/{接口名} 检查参数;_format 改用 json、csv 或 xlsx,数据过大时改用 csv |
404 | 接口名不存在,或接口调用出错 | 升级 AKShare,并对照 /api/interfaces/{接口名} 检查接口名和参数 |
429 | 上游数据源限制了访问频率 | 稍后重试,或调大 --cache-ttl 减少重复请求 |
502 | 无法访问上游数据源、上游返回错误,或上游页面改版导致解析失败 | 检查网络和代理设置,见 常见问题;解析失败时升级 AKShare |
以下示例均假设服务运行在 http://127.0.0.1:8080,请按实际地址和端口修改。
curl
curl "http://127.0.0.1:8080/api/public/stock_zh_a_hist?symbol=000001&period=daily&start_date=20240101&end_date=20240131&adjust=qfq"
Python
import pandas as pd
import requests
url = "http://127.0.0.1:8080/api/public/stock_zh_a_hist" params = { "symbol": "000001", "period": "daily", "start_date": "20240101", "end_date": "20240131", "adjust": "qfq", } r = requests.get(url, params=params, timeout=30) r.raise_for_status() df = pd.DataFrame(r.json()) print(df)
R
library(RCurl) # 需要先安装该包
library(jsonlite) # 需要先安装该包 options(warn = -1) # 去掉无参数请求时的 warning 信息
temp_df <- getForm( uri = "http://127.0.0.1:8080/api/public/stock_zh_a_hist", symbol = "000001", period = "daily", start_date = "20211109", end_date = "20211209", adjust = "hfq", .encoding = "utf-8" ) inner_df <- fromJSON(temp_df) inner_df
MATLAB
api = 'http://127.0.0.1:8080/api/public/';
url = [api 'stock_zh_a_hist']; options = weboptions('ContentType', 'json', 'CharacterEncoding', 'utf-8'); data = webread(url, 'symbol', '000001', 'period', 'daily', ... 'start_date', '20211109', 'end_date', '20211209', 'adjust', 'hfq', options); data % MATLAB 无法显示中文字段名,可自行改为英文字段
Rust
依赖:reqwest(启用 blocking 与 json 特性)和 serde_json。
use reqwest::blocking;
use serde_json::Value;
const URL: &str = "http://127.0.0.1:8080/api/public";
fn main() -> Result<(), Box > { let params = [ ("symbol", "000001"), ("period", "daily"), ("start_date", "20240125"), ("end_date", "20240126"), ("adjust", ""), ]; let resp = blocking::Client::new() .get(format!("{URL}/stock_zh_a_hist")) .query(¶ms) .send()?;
if resp.status().is_success() { let data: Value = resp.json()?; println!("{data:#?}"); } else { eprintln!("请求失败,状态码为:{}", resp.status()); } Ok(()) }
更多示例及运行结果,请见 多语言调用。
使用仓库中的 Dockerfile 构建镜像,镜像默认以 Gunicorn + Uvicorn worker 运行,worker 数量可用 -e WEB_CONCURRENCY=4 调整:
docker build -t aktools .
docker run -d -p 8080:8080 aktools
国内网络通常无法访问 Docker Hub 与官方 PyPI,可以分别指定镜像:
docker build --build-arg BASE_IMAGE=docker.m.daocloud.io/library/python:3.14-slim-trixie --build-arg PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/ -t aktools .
镜像升级等更多说明,请见 部署文档。
python -m aktools 适合本地使用。生产环境建议直接用 Gunicorn 启动 aktools.main:app:
pip install gunicorn uvicorn-worker
AKTOOLS_HOST=0.0.0.0 gunicorn aktools.main:app --bind 0.0.0.0:8080 --workers 4 --worker-class uvicorn_worker.UvicornWorker
多人或多台电脑共用服务时,可以用
--token设置访问令牌,详见 访问令牌。AKTools 不提供用户登录,需要按人管理权限时,请在前面加一层带认证的反向代理。
返回 502,提示“访问上游数据源失败”
运行 AKTools 的机器无法访问东方财富、新浪财经等上游网站,通常是代理配置导致的。报错中如果出现 ProxyError 或 Unable to connect to proxy,请检查或清除代理相关的环境变量后重启服务:
# Linux / macOS
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY
Remove-Item Env:HTTP_PROXY, Env:
ตัดมาแค่ช่วงต้น อ่านต่อใน repo