AKTools について
AKToolsは、AKShareの金融データインターフェースをHTTP APIとMCPサーバーで提供し、プログラムやAIアシスタントから利用できます。株式、先物、ファンド、マクロデータなどを扱い、インターフェース検索、パラメーター確認、データ取得のツールを備えています。
主な機能
- 01HTTP API経由でAKShareを呼び出し
- 02検索・パラメーター確認・取得ツール
- 03株式、先物、ファンド、マクロデータ
- 04CSVまたはExcel形式でのダウンロード
- 05同じ条件のクエリ結果をキャッシュ
活用シーン
- 01AIアシスタントで過去の市場価格を調べる
- 02AKShareのインターフェースとパラメーターを探す
- 03取得データをCSVまたはExcelに出力
MCP 対応
MCPサーバーはsearch_interfaces、describe_interface、get_dataを提供し、インターフェース検索、パラメーター確認、データ取得を行います。稼働中サービスのHTTP MCPエンドポイントにも接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
AKTools
AKTools は AKShare の金融データを HTTP API および MCP サーバーとして公開するため、あらゆるプログラミング言語や AI アシスタントからデータを取得できます。
AKTools は、オープンソースの金融データインターフェースライブラリ AKShare の 1,000 を超えるインターフェースを、すぐに使える次の 2 種類のサービスとして提供します。
- HTTP API:1 行のコマンドでサービスを起動できます。C/C++、Java、Go、Rust、JavaScript、R、MATLAB、Stata、Excel など、あらゆるプログラミング言語やソフトウェアから URL を使ってデータを取得できます。
- MCP サービス:Claude、Cursor などの AI アシスタントで自然言語を使って直接質問できます。アシスタントが自らインターフェースを検索し、パラメーターを入力してデータを取得します。
どちらの方法も、同じインターフェース一覧、キャッシュ、エラー処理を使用します。用途に応じてお選びください。
AKTools 中国語ドキュメント | AKShare データ辞書 | バージョン情報
初めてお使いですか? HTTP API は クイックスタートチュートリアル から始めてください。インストールから Excel のダウンロードまで、約 10 分で一通り完了できます。AI アシスタントを使う場合は、以下のAI アシスタントで使うをご覧ください。
目次
2 種類の利用方法
HTTP API でデータを取得する
pip install aktools
python -m aktools
次に、ブラウザーで http://127.0.0.1:8080/api/public/tool_trade_date_hist_sina を開き、取引日カレンダーのデータが表示されれば成功です。詳しい使い方は、以下のクイックスタートと呼び出しルールをご覧ください。
AI アシスタントで使う
まずuv をインストールし、以下の設定を AI アシスタントの MCP 設定ファイルに追加します。事前に AKTools をインストールする必要も、手動でサービスを起動する必要もありません。
{
"mcpServers": {
"aktools": {
"command": "uvx",
"args": ["--from", "aktools", "aktools-mcp"]
}
}
}
アシスタントを再起動すると、次のように直接質問できます。
- 「贵州茅台の 2024 年 10 月 8 日から 11 日までの、前復権の日足相場を調べて」
- 「AKShare には転換社債に関するインターフェースがいくつありますか?」
- 「stock_zh_a_hist インターフェースのパラメーターと、復権方式の指定方法を教えて」
アシスタントは AKTools が提供する 3 つのツールを使って検索します。search_interfaces はインターフェースを検索し、describe_interface はパラメーターを確認し、get_data はデータを取得します。以下は Claude Code で実際に質問した際の様子です(実際の会話記録に基づく再現)。

Claude Desktop
設定の「開発者 → 設定を編集」を開き、上記の設定を claude_desktop_config.json に追加して保存した後、Claude Desktop を再起動します。
Claude Code
claude mcp add aktools -- uvx --from aktools aktools-mcp
Cursor
ボタンをクリックすると、一括で追加できます。
上記の設定をプロジェクトの .cursor/mcp.json またはグローバル設定の ~/.cursor/mcp.json に手動で追加することもできます。
すでに起動している AKTools サービスに接続する(HTTP 方式)
すでに python -m aktools でサービスを起動している場合や、複数のコンピューターで 1 つのサービスを共有する場合は、アシスタントから http://127.0.0.1:8080/mcp に直接接続できます。例:
claude mcp add --transport http aktools http://127.0.0.1:8080/mcp
初回起動時には、uvx が AKShare などの依存関係をダウンロードする必要があり(約 150 MB)、数分かかることがあります。設定、LAN からのアクセス、トラブルシューティングについては、AI アシスタント(MCP)ドキュメントをご覧ください。
特長
- 2 通りの利用方法:同じデータを HTTP API 経由で取得できるほか、Claude、Cursor などの AI アシスタントで自然言語を使って取得できます。
- 設定不要:
python -m aktoolsの 1 行でサービスを起動でき、コードを書く必要はありません。 - 全インターフェースに対応:AKShare の各データインターフェースに
/api/public/<インターフェース名>から直接アクセスできます。AKShare にインターフェースが追加された場合も、アップグレードするだけで利用できます。 - 言語を問わず利用可能:標準 JSON を返すため、HTTP リクエストを送信できるあらゆる言語やソフトウェアから呼び出せます。
- インターフェースの検索・確認:
/api/interfacesでは、全インターフェースの一覧表示とキーワード検索ができます。各インターフェースのパラメーター、デフォルト値、説明も直接確認できます。 - 表のダウンロード:
_format=csvまたは_format=xlsxを指定するだけで、データを CSV または Excel ファイルとしてダウンロードできます。 - 結果をキャッシュ:同じインターフェースに同じパラメーターでリクエストした場合、60 秒以内であれば前回のデータを返します。上流サイトへの重複リクエストを減らし、IP アドレスがブロックされるリスクを軽減します。
- ドキュメントを内蔵:FastAPI に基づいており、起動後に
/docsにアクセスすると、インターフェースをオンラインで確認・テストできます。 - デプロイが容易:Dockerfile を提供しており、Gunicorn + Uvicorn によるマルチプロセスデプロイに対応しています。
インストール
AKTools の要件は Python 3.11 以降(64 ビット) です。実行環境の要件は AKShare インストールガイド と同じです。
pip install aktools
AKShare のデータインターフェースは、上流サイトの変更に伴って頻繁に更新されます。問題が発生した場合は、まず AKShare と AKTools の両方を最新版にアップグレードしてください。
pip install akshare aktools --upgrade -i https://pypi.org/simple
クイックスタート
-
サービスを起動します。
python -m aktools -
ブラウザーで以下のアドレスを開きます。
アドレス 説明 http://127.0.0.1:8080/ホームページ。簡単な使用方法を表示します。 http://127.0.0.1:8080/docsインターフェース一覧。オンラインでテストできます。 http://127.0.0.1:8080/versionAKShare と 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 | リッスンするアドレス。LAN 内や他のマシンからアクセスする場合は 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 秒に固定されています。 |
--version | -v | — | AKTools のバージョンを確認します。 |
例:python -m aktools --port 8888 --auto は、ポート 8888 で起動し、ブラウザーを自動で開きます。LAN 内の他のマシンからアクセスする場合は、--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")
- インターフェース名は AKShare の関数名と完全に一致します。
/api/interfaces?q=キーワードでインターフェースを検索し、/api/interfaces/{インターフェース名}でパラメーターの説明を確認できます。詳しいデータの説明については、AKShare データ辞書を参照してください。 - パラメーターはクエリー文字列として渡します。値を引用符で囲む必要はありません。例:
?symbol=600000&period=weekly。指定しないパラメーターには、AKShare インターフェースのデフォルト値が使用されます。 - 戻り値は、デフォルトで DataFrame を行ごとに変換した JSON 配列です。日時フィールドは ISO 8601 形式です。例:
"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 | 成功 | — |
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<dyn std::error::Error>> {
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(())
}
その他の例と実行結果については、多言語での呼び出しを参照してください。
デプロイ
Docker
リポジトリの Dockerfile を使用してイメージをビルドします。イメージはデフォルトで Gunicorn を使って複数の Uvicorn worker を管理し、実行します。
docker build -t aktools .
docker run -d -p 8080:8080 aktools
中国国内のネットワーク環境では、PyPI ミラーを指定するとビルドを高速化できます。
docker build --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
AKTools 不带鉴权功能。如果服务需要暴露到公网,请在前面加一层带鉴权的反向代理(如 Nginx)。
常见问题
返回 502,提示“访问上游数据源失败”
运行 AKTools 的机器无法访问东方财富、新浪财经等上游网站,通常是代理配置导致的。报错中如果出现 ProxyError 或 Unable to connect to proxy,请检查或清除代理相关的环境变量后重启服务:
# Linux / macOS
unset HTTP_PROXY HTTPS_PROXY ALL_PROXY
# Windows PowerShell
Remove-Item Env:HTTP_PROXY, Env:HTTPS_PROXY, Env:ALL_PROXY
部分接口要求在境内网络环境下访问,详见 AKShare 文档中对应接口的说明。
返回 404,提示“未找到该接口”或“调用接口出错”
先升级 AKShare 到最新版,然后用 /api/interfaces?q=关键词 搜索正确的接口名,用 /api/interfaces/{接口名} 检查参数名和可选值。也可以在 Python 中直接调用同名的 AKShare 接口,确认问题是否出在 AKShare。
数据没有及时更新
同一接口、同样参数的请求在 60 秒内会返回缓存的数据,响应头 X-AKTools-Cache: hit 表示数据来自缓存,启动时加上 --cache-ttl 0 可关闭缓存。板块名称等数据由 AKShare 内部缓存,默认每小时清空一次,可用 --akshare-cache-clear 调整。
数据有误或接口报错,应该去哪里反馈?
AKTools 只负责转发请求,数据内容由 AKShare 提供。如果在 Python 中直接调用 AKShare 也有同样的问题,请到 AKShare Issues 反馈;只有 AKTools 自身的问题(启动、路由、序列化等)才需要到 AKTools Issues 反馈。
参与贡献
欢迎提交 Issue 和 Pull Request!开发环境的搭建、代码检查与提交规范请见 贡献指南。参与本项目即表示您同意遵守 贡献者行为准则。
免责声明
AKTools 与 AKShare 提供的数据仅供学术研究使用,不构成任何投资建议。数据均来自公开的网络数据源,请在使用前自行核实,并遵守相关数据源的使用条款。因使用本项目造成的任何直接或间接损失,项目作者及贡献者不承担任何责任。
许可证
本项目基于 MIT 许可证 开源。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。