ashare-mcp
The ashare-mcp server provides comprehensive Chinese A-share market data via baostock and EastMoney APIs, exposing 25+ tools across these categories:
Market Data
Retrieve basic stock profiles, list all securities with trading status, query the trading calendar, and fetch historical K-line (OHLCV) data at daily, weekly, monthly, or minute frequencies with optional price adjustment.
Dividend & Price Adjustment
Access dividend/rights-issue records and forward/backward price adjustment factors for specific stocks.
Quarterly Financial Statements
Profitability (ROE, net margin, EPS), operating efficiency (turnover ratios), growth metrics (YOY equity/asset/net income), balance sheet ratios (current ratio, debt-to-asset), cash flow ratios, and DuPont decomposition analysis.
Earnings Reports
Retrieve performance express reports (业绩快报) and earnings forecast/pre-announcements (业绩预告) for a stock within a date range.
Industry & Index Constituents
Get Shenwan industry classifications and list constituents of major indices: SSE 50, CSI 300, and CSI 500 on specific dates.
Macro Indicators
Benchmark deposit/loan rates, required reserve ratio history, and monthly/yearly M0/M1/M2 money supply data.
Corporate Disclosure Announcements (EastMoney)
List a stock's announcements filterable by date range or keyword, and download the full PDF of any announcement. This works outside mainland China.
Utility
get_current_timereturns the current server time, useful for constructing relative date ranges.
English | 简体中文
ashare-mcp
An MCP server built on baostock that exposes all 23 baostock data endpoints as MCP tools: K-line, quarterly financials (profit / operation / growth / balance / cash-flow / DuPont), performance express & forecast reports, dividends, adjust factors, industry classification, index constituents, the trading calendar, and macro series.
It also ships two disclosure-announcement (公告) tools backed by EastMoney's public HTTP APIs — list announcements for a stock and download the PDF — since baostock has no announcement surface. EastMoney's endpoints are reachable outside mainland China, so these work even when baostock's data port is blocked.
The data layer sits behind a DataProvider abstraction. v1 ships the
baostock backend, with the seam in place to add other sources later without
touching the tool layer. The announcement tools live alongside the provider
(they don't go through baostock at all).
Install
uv syncRelated MCP server: sfc-data-mcp
Run (stdio)
uv run ashare-mcpConfigure it in a stdio MCP client (Claude Desktop / Claude Code / Cursor):
{
"mcpServers": {
"ashare": {
"command": "uv",
"args": ["--directory", "/path/to/ashare-mcp", "run", "ashare-mcp"]
}
}
}Tools
Category | Tools |
Market |
|
Dividend / adjust |
|
Quarterly financials |
|
Reports |
|
Industry / constituents |
|
Macro |
|
Disclosure (EastMoney) |
|
Utility |
|
Every baostock-backed data tool returns a uniform shape:
{"count": int, "fields": [...], "data": [{...}, ...]}. The announcement
tools return their own shape (see below).
Disclosure announcements (公告)
Two EastMoney-backed tools, independent of baostock:
get_stock_announcements(code, start_date="", end_date="", page_size=50, keyword="")— list a stock's announcements newest-first.codeacceptssh.600519/sz.002049/600519.start_date/end_dateare inclusiveYYYY-MM-DDfilters.keywordis a case-sensitive substring on the title (e.g.重组). Returns{code, count, data:[{art_code, title, notice_date, type, pdf_url_guess}]}.download_stock_announcement(art_code, save_dir="")— download the announcement PDF by theart_codereturned above. Resolves the real attachment URL via EastMoney's content API (falls back to theH2_<art_code>_1.pdfconvention if needed). Returns{art_code, title, save_dir, files:[{path, url, bytes}]}— open the returnedpathwith the MCP client's file/Read tool to read the PDF.
Typical flow: call get_stock_announcements → pick an art_code →
download_stock_announcement → read the saved PDF.
Codes
Pass baostock-form codes: sh.600519, sz.000001, bj.430047. Bare 6-digit
codes (e.g. 600519) are normalized best-effort, but ambiguous index codes
(e.g. 000001 is both SSE Composite sh.000001 and Ping An Bank sz.000001)
should be passed with an explicit prefix.
Configuration
Env var | Default | Meaning |
|
| Data backend. Only |
|
| Where |
Development
uv run pytest -q # unit tests (no network)
uv run pytest -q -m network # live baostock smoke testNotes
baostock's data port must be reachable from your network (reachable inside mainland China; may time out elsewhere). If baostock tools start timing out, check this first. The EastMoney announcement tools use a separate HTTPS endpoint and are typically reachable outside CN.
baostock needs no registration, but each process still must call
bs.login()to open a session — this server logs in once and logs out on shutdown.The announcement tools are stdlib-only (no new dependencies) and run off the baostock session, so they keep working even if baostock is down.
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
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/maimai-hqw/ashare-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server