akshare-mcp
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 |
Related MCP server: sfc-data-mcp
Quick Start
Installation
pip install akshare-mcpNote: AKShare requires Python ≥ 3.10 and uses the
numpy,pandas, andrequestspackages. These will be installed automatically.
Usage
Run the server:
akshare-mcpYou should see:
[akshare-mcp] Loaded 13 tools covering 1086 akshare functionsIntegrating 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 |
| 226 | A股行情 | Real-time/historical quotes, IPO, LHB, technical indicators, market summaries |
| 56 | A股基本面 | Financial statements, profit forecasts, ESG ratings, shareholders, dividends |
| 36 | 港股美股 | HK/US stock profiles, financials, quotes, exchange info |
| 38 | 板块/资金流向 | Concept & industry board indices, constituents, capital flow, north/south-bound connect |
| 40 | 融资融券/其他 | Margin trading, block trades, stock pledging, suspension/resumption, chip distribution |
| 225 | 宏观经济 | China macro (GDP, CPI, PMI, M2, etc.), global macro (US, EU, JP, UK, AU, etc.) |
| 91 | 期货 | Futures quotes, holdings, warehouse receipts, settlement, COT reports |
| 88 | 基金 | Fund NAV, ETF quotes, manager profiles, performance rankings, AMAC stats |
| 46 | 债券 | Convertible bonds, treasury yields, corporate bonds, repo, NAFMII |
| 91 | 指数 | CSI/Shenwan/global indices, sector analysis, index constituents |
| 46 | 期权 | Index/ETF/commodity options, Greeks, margin, option chains |
| 40 | 外汇/商品 | Forex rates, energy, spot commodities, carbon emissions, crypto |
| 63 | 其他数据 | Air quality, movies, games, news, wealth rankings, QDII, REITs |
Discovery Tool
Tool | Purpose |
| Search functions by keyword across all categories |
Common Tool Parameters
Every category tool accepts the same parameter interface:
Parameter | Type | Required | Description |
|
| Yes | The exact akshare function name to call (e.g. |
|
| No | JSON-encoded keyword arguments for the function (default: |
|
| No | Convenience shortcut; forwarded as keyword argument |
|
| No | Convenience shortcut (format: |
|
| No | Convenience shortcut (format: |
|
| No | Convenience shortcut (e.g. |
|
| No | Convenience shortcut for stock price adjustment ( |
|
| 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 toolConvertible 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/ -v51 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 testsHow 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 toolDispatch: 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 DataFrameError 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 |
|
| 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
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/xiaozhozho/akshare-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server