akshare-mcp
MCP server that wraps AKShare's 1000+ financial data functions, enabling LLMs to query Chinese stock, macro, futures, fund, bond, option, forex, and alternative data through standardized tools.
README
<p align="center"> <img src="https://akshare.akfamily.xyz/_static/akshare.svg" alt="akshare" width="200"/> </p>
<h1 align="center">akshare-mcp</h1>
<p align="center"> <strong>MCP (Model Context Protocol) Server for AKShare Financial Data</strong> </p>
<p align="center"> <a href="https://pypi.org/project/akshare-mcp/" target="_blank"> <img src="https://img.shields.io/pypi/v/akshare-mcp" alt="PyPI"> </a> <a href="https://github.com/xiaozhozho/akshare-mcp/blob/main/LICENSE" target="_blank"> <img src="https://img.shields.io/github/license/xiaozhozho/akshare-mcp" alt="License"> </a> <a href="https://www.python.org/" target="_blank"> <img src="https://img.shields.io/badge/python-≥3.10-blue" alt="Python"> </a> </p>
<p align="center"> <a href="#overview">Overview</a> • <a href="#quick-start">Quick Start</a> • <a href="#tools">Tools</a> • <a href="#usage-examples">Usage</a> • <a href="#development">Development</a> • <a href="#architecture">Architecture</a> </p>
Overview
akshare-mcp wraps AKShare — an open-source Chinese financial data library with 1000+ data functions — as a Model Context Protocol (MCP) server, enabling LLMs (Claude, etc.) to query Chinese financial data through standardized tool interfaces.
What you can query
| Category | Examples |
|---|---|
| Stocks | Real-time quotes, historical bars, financial statements, board/industry indices, fund flow, margin trading, IPO data, LHB |
| Macroeconomics | GDP, CPI, PMI, money supply, interest rates — China, US, EU, Japan, etc. |
| Futures | Real-time/daily bars, settlement prices, open interest, warehouse receipts, basis analysis |
| Funds | Mutual fund NAV, ETF quotes & holdings, fund manager info, performance rankings |
| Bonds | Convertible bonds, treasury yields, corporate bonds, repo rates, NAFMII data |
| Options | CFFEX index options, SSE/SZSE ETF options, commodity options, Greeks, margin |
| Forex & Commodities | Exchange rates, gold/silver spot, crude oil, carbon emissions, hog prices |
| Indices | CSI/Shenwan/global indices, industry indices, index constituents |
| Alternative Data | Weather, news sentiment, migration, box office, wealth rankings, game rankings |
Quick Start
Installation
pip install akshare-mcp
Note: AKShare requires Python ≥ 3.10 and uses the
numpy,pandas, andrequestspackages. These will be installed automatically.
Usage
Run the server:
akshare-mcp
You should see:
[akshare-mcp] Loaded 13 tools covering 1086 akshare functions
Integrating with Claude Desktop
Add to your claude_desktop_config.json:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"akshare": {
"command": "uvx",
"args": ["akshare-mcp"]
}
}
}
If uvx is not available, use pip directly:
{
"mcpServers": {
"akshare": {
"command": "python",
"args": ["-m", "akshare_mcp.server"]
}
}
}
Integration with other MCP clients
Any MCP-compatible client can connect via stdio. The server listens on stdin/stdout and responds to the standard list_tools / call_tool requests.
Tools
akshare-mcp groups its 1000+ data functions into 13 category tools plus a discovery tool:
Category Tools
| Tool | Functions | Category | Key Data |
|---|---|---|---|
akshare_stock_a |
226 | A股行情 | Real-time/historical quotes, IPO, LHB, technical indicators, market summaries |
akshare_stock_fundamental |
56 | A股基本面 | Financial statements, profit forecasts, ESG ratings, shareholders, dividends |
akshare_stock_hk_us |
36 | 港股美股 | HK/US stock profiles, financials, quotes, exchange info |
akshare_stock_board_flow |
38 | 板块/资金流向 | Concept & industry board indices, constituents, capital flow, north/south-bound connect |
akshare_stock_margin_other |
40 | 融资融券/其他 | Margin trading, block trades, stock pledging, suspension/resumption, chip distribution |
akshare_macro |
225 | 宏观经济 | China macro (GDP, CPI, PMI, M2, etc.), global macro (US, EU, JP, UK, AU, etc.) |
akshare_futures |
91 | 期货 | Futures quotes, holdings, warehouse receipts, settlement, COT reports |
akshare_fund |
88 | 基金 | Fund NAV, ETF quotes, manager profiles, performance rankings, AMAC stats |
akshare_bond |
46 | 债券 | Convertible bonds, treasury yields, corporate bonds, repo, NAFMII |
akshare_index |
91 | 指数 | CSI/Shenwan/global indices, sector analysis, index constituents |
akshare_option |
46 | 期权 | Index/ETF/commodity options, Greeks, margin, option chains |
akshare_fx_commodity |
40 | 外汇/商品 | Forex rates, energy, spot commodities, carbon emissions, crypto |
akshare_other |
63 | 其他数据 | Air quality, movies, games, news, wealth rankings, QDII, REITs |
Discovery Tool
| Tool | Purpose |
|---|---|
akshare_discover |
Search functions by keyword across all categories |
Common Tool Parameters
Every category tool accepts the same parameter interface:
| Parameter | Type | Required | Description |
|---|---|---|---|
method |
str |
Yes | The exact akshare function name to call (e.g. stock_zh_a_hist) |
params_json |
str |
No | JSON-encoded keyword arguments for the function (default: "{}") |
symbol |
str |
No | Convenience shortcut; forwarded as keyword argument |
start_date |
str |
No | Convenience shortcut (format: YYYYMMDD) |
end_date |
str |
No | Convenience shortcut (format: YYYYMMDD) |
period |
str |
No | Convenience shortcut (e.g. daily, weekly, monthly) |
adjust |
str |
No | Convenience shortcut for stock price adjustment (qfq, hfq) |
date |
str |
No | Convenience shortcut for single-date parameters |
Tip: Use
akshare_discoverfirst to find the rightmethodname, then call the parent tool withmethod=function_name.
Usage Examples
Query real-time A-share stock quotes
# Via akshare_discover:
# query="spot_em" → found in akshare_stock_a
# Then:
call_tool("akshare_stock_a", {
"method": "stock_zh_a_spot_em"
})
Query historical stock data
call_tool("akshare_stock_a", {
"method": "stock_zh_a_hist",
"symbol": "300693",
"period": "daily",
"start_date": "20250101",
"end_date": "20250708"
})
Query macroeconomic GDP data
call_tool("akshare_macro", {
"method": "macro_china_gdp_yearly"
})
Search for a function
call_tool("akshare_discover", {
"query": "gdp"
})
# Returns matching functions grouped by tool
Convertible bond market
call_tool("akshare_bond", {
"method": "bond_zh_hs_cov_spot"
})
Fund flow by stock
call_tool("akshare_stock_board_flow", {
"method": "stock_fund_flow_individual",
"symbol": "300693"
})
Development
Setup
git clone https://github.com/xiaozhozho/akshare-mcp.git
cd akshare-mcp
pip install -e ".[dev]"
Run tests
python -m pytest tests/ -v
51 tests covering:
- DataFrame serialization (NaN/NaT/inf handling, datetime conversion, truncation)
- CategoryDispatcher (function dispatch, parameter merging, error wrapping)
- Error handling (akshare exception hierarchy, decorator pattern)
- ToolRegistry (auto-discovery, function assignment, cross-tool search)
Project structure
akshare-mcp/
├── pyproject.toml # Build config (hatchling)
├── src/
│ └── akshare_mcp/
│ ├── server.py # FastMCP entry point
│ ├── tools/
│ │ ├── base.py # CategoryDispatcher base class
│ │ └── registry.py # ToolRegistry + auto discovery
│ └── utils/
│ ├── dataframe.py # DataFrame → JSON serialization
│ └── errors.py # Error handling & wrapping
└── tests/ # 51 pytest tests
How it works
- Auto-discovery:
ToolRegistryscans all public akshare callables at import time usinginspect.getfile(), determines each function's source module, and assigns it to the appropriate category tool - Dispatch: Each category tool accepts a
methodparameter. The dispatcher resolves the function, merges convenience params with JSON params, calls akshare viaasyncio.to_thread(), and serializes the resulting DataFrame - Error handling: All akshare exceptions (NetworkError, RateLimitError, InvalidParameterError, etc.) are caught and returned as structured error dicts — never raw exceptions
- Serialization: DataFrames are converted to JSON with column metadata, row count, truncation handling, and proper NaN/NaT/inf → null conversion
Configuration
| Environment Variable | Default | Description |
|---|---|---|
AKSHARE_MCP_MAX_ROWS |
500 |
Maximum rows returned per response |
Architecture
┌─────────────────────────────────────────────────┐
│ MCP Client │
│ (Claude Desktop, etc.) │
└──────────────┬──────────────────────┬────────────┘
│ list_tools │ call_tool
▼ ▼
┌─────────────────────────────────────────────────┐
│ FastMCP (stdio transport) │
├─────────────────────────────────────────────────┤
│ ToolRegistry (13 category dispatchers) │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ stock_a │ │ macro │ │ discover │ │
│ │ 226 funcs│ │ 225 funcs│ │ search + index │ │
│ └──────────┘ └──────────┘ └──────────────────┘ │
├─────────────────────────────────────────────────┤
│ CategoryDispatcher │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ method → │ │ params → │ │ asyncio.to_thread│ │
│ │ func │ │ merge │ │ → akshare call │ │
│ └──────────┘ └──────────┘ └──────────────────┘ │
├─────────────────────────────────────────────────┤
│ Utils │
│ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │dataframe │ │ errors │ │ akshare library │ │
│ │serialize │ │ wrap │ │ ~1086 functions │ │
│ └──────────┘ └──────────┘ └──────────────────┘ │
└─────────────────────────────────────────────────┘
License
Apache License 2.0
See LICENSE for the full license text.
Related Projects
- AKShare — The underlying financial data library
- AKTools — HTTP API wrapper for AKShare
- MCP Python SDK — The MCP framework used
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。