China Exchange Data MCP (SZSE + SSE). Keyless.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent — or use 1-click editor setup below.
One-click editor setup isn’t available for this listing yet — we don’t have a confirmed install command, and we’d rather show nothing than point your editor at the wrong package or host. Follow the project’s own setup instructions, linked above.
Live market data straight from the two Chinese mainland exchanges — SZSE (Shenzhen) and SSE (Shanghai), one pack because they are a single jurisdiction. Fills what @pipeworx/china-stocks doesn't cover: industry/sector turnover ranking, index daily/weekly bars, a full-market board snapshot for screens, and company bulletins (公告) by code.
Part of Pipeworx — an MCP gateway connecting AI agents to 1683+ live data sources.
板块 主力资金 净流入 指数 日线 公告 — 深交所 上交所 A股行情数据接口
ashares_sector_flows({ date?, top? }) — SZSE-official per-industry (行业) turnover ranking: turnover amount (成交金额/亿元), volume, company count, market cap, weighted P/E. This is turnover, not the vendor "主力资金净流入" (large-order net-inflow) metric — see Data sources below for why.ashares_index_bars({ index?, days?, weeks? }) — daily or weekly OHLC + volume + turnover bars for a major index: 000001 上证指数 Shanghai Composite, 000016 上证50, 000300 沪深300 CSI 300, 000688 科创50 STAR50 (all SSE), 399001 深证成指 Shenzhen Component, 399006 创业板指 ChiNext (both SZSE).ashares_market_bars({ date?, limit?, sort? }) — full SSE-board latest-session snapshot (~2,358 stocks): code, name, last, change %, volume, turnover amount. SSE only — see limitations below.ashares_bulletins({ code, since?, type?, limit? }) — SSE-listed company disclosure bulletins by 6-digit code: title, type, date, PDF URL. SSE only.Keyless. All four upstreams are public, unauthenticated JSON/JSONP endpoints. Every one requires a same-site Referer header or 4xx-blocks the request.
https://www.szse.cn/api/report/ShowReport/data?SHOWTYPE=JSON&CATALOGID=<id> with Referer: https://www.szse.cn/market/trend/index.html. CATALOGID=1804_gptj_merge_after (股票行业统计) is a per-industry turnover report; requires txtQueryDate. Catalog ids are undocumented by SZSE and were read out of the site's own network calls while browsing 市场数据 → 股票数据 → 行业统计 — 1804_gptj_merge_after is the only one this pack uses; 1110 (A股列表, static company metadata — code/name/listing date/industry, no price data) and 1815_stock_snapshot (per-code quote history, requires a specific security code, not a bulk snapshot) were probed and found not useful for a full-market bulk report.https://www.szse.cn/api/market/ssjjhq/getHistoryData?cycleType=<32|33>&marketId=1&code=<code>, same Referer. cycleType=32 = daily, cycleType=33 = weekly (empirically confirmed by testing 5/6/7/8/16/33/40/48 — 7/8/16 are intraday minute bars, 32/33 are the only two that returned clean day-spaced/week-spaced rows). marketId=1 works for both SZSE stocks (e.g. 000001 平安银行) and SZSE indices (e.g. 399001 深证成指) — SZSE does not distinguish stock vs. index by market id, only by code. Row shape is undocumented by SZSE and was reverse-engineered from the data: [date, open, close, low, high, change, change_pct, volume, amount] (confirmed by checking low <= open,close <= high holds across every row, and that close + (-change) ≈ the visible previous close).http://yunhq.sse.com.cn:32041/v1/sh1/.... Plain HTTP only — the documented TLS port did not respond from this environment; HTTP did. /dayk/<code>?begin=-N&end=-1&period=day|week gives OHLCV bars for any SSE code OR SSE index under the single sh1 namespace (000001 上证指数 and 600519 贵州茅台 both resolve through the same path — SSE doesn't separate stock/index namespaces either). Row = [date(YYYYMMDD), open, high, low, close, volume, amount]. /list/exchange/equity?select=...&begin=&end= returns the full SSE equity board (~2,358 rows) as one paged call: [code, name, last, chg_rate_pct, volume, amount] — no per-row OHLC, just last/change/volume/turnover, and it is a live/latest-session snapshot, not addressable by an arbitrary past date (tested: no date parameter changes the result).https://query.sse.com.cn/security/stock/queryCompanyBulletinNew.do?productId=<code> (JSONP, Referer: https://www.sse.com.cn/disclosure/listedinfo/announcement/). The working parameter is productId — securityCode / SECURITY_CODE (which the site's own commonQuery.do?sqlId=COMMON_PL_SSGSXX_ZXGG_NUM_L count-endpoint accepts) are silently ignored by this endpoint and return total: 0. Server-side beginDate/endDate also return total: 0 regardless of format tried — the since filter in this pack is applied client-side against the returned SSEDATE field, paging back through pageHelp.pageNo until either enough rows are collected or the page's oldest date passes since.push2.eastmoney.com is confirmed empty from any non-China IP (see docs/china-vertical-plan.md and project_china_ashares_pack memory) and is out of scope for this SZSE/SSE-sourced pack regardless. ashares_sector_flows instead reports SZSE's own official per-industry turnover ranking — a real, live, exchange-published number that answers the same "which sectors are hot today" question, labeled honestly as turnover rather than inflow.1815_stock_snapshot) requires a specific security code per call, so reconstructing a market-wide set for a past date would mean ~2,900 SZSE calls plus the SSE side — not viable as a single tool call. ashares_market_bars always returns the latest available SSE session and says so explicitly (date_note) if the requested date doesn't match, rather than silently substituting or fabricating rows. SZSE is not covered by this tool at all (no equivalent single-call bulk endpoint was found within the research budget) — flagged in the tool description and in the fleet task close note as an open gap, not silently dropped.ashares_market_bars and ashares_bulletins are SSE-only. No SZSE equivalent of the bulk board list or the bulletin API was found in the time available; SZSE bulletins live under a different disclosure system (www.szse.cn/disclosure/) not yet probed for this pack.Referer shown above.queryCompanyBulletinNew.do param name mismatch (productId not securityCode) is invisible from the metadata — the response happily echoes back whatever param name you send under securityCode in its JSON, even the wrong one, and still returns total: 0. Only productId actually filters.yunhq.sse.com.cn:32041 is HTTP-only from this environment; don't waste a retry loop on HTTPS.ssjjhq/getHistoryData field order is not documented anywhere public — re-verify with the low <= min(open,close) / high >= max(open,close) sanity check if SZSE ever changes their payload shape.Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):
tools/list at https://gateway.pipeworx.io/china-exchange-data/mcp returns the tools in the table
above plus the shared Pipeworx meta-tools — ask_pipeworx,
discover_tools, search_within, remember/recall and the rest of the
gateway-wide set. So the tool count you see is larger than this table: a
single-pack endpoint currently lists roughly 30 shared tools alongside the
pack's own. The connection's initialize response states its exact scope, and
is the authoritative answer for a given day.
This is deliberate, not multiplexing by accident. The meta-tools are what let a
scoped connection answer a question this pack does not cover — via
ask_pipeworx, which routes across the whole catalog — without you adding a
second MCP server. There is currently no way to mount a pack endpoint without
them; if the extra schemas cost you more context than the routing is worth,
connect to the full gateway once rather than to several pack endpoints.
Or connect to the full Pipeworx gateway to get every pack's tools listed directly, instead of just this one's:
Both URLs reach the same gateway and the same 1683+ data sources. The
only difference is which pack's tools are listed directly; ask_pipeworx
reaches all of them from either one.
No account needed for the first calls. Inspect any tool: GET https://gateway.pipeworx.io/v1/tools/ashares_sector_flows. Find one: POST https://gateway.pipeworx.io/v1/tools/search_packs with {"query":"..."}.
This package also runs as a local stdio MCP server — no Pipeworx account, no gateway round-trip:
Or run it directly to confirm it starts:
It speaks MCP over stdin/stdout and answers initialize/tools/list/tools/call
for only this pack's tools — none of the shared meta-tools the gateway
connection above adds. Same source, same tools, no ask_pipeworx routing.
No reviews yet — be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/china-exchange-data)<a href="https://allmcps.com/mcp/china-exchange-data"><img src="https://allmcps.com/api/badge/china-exchange-data?style=directory" alt="China Exchange Data on AllMCPs" /></a>