cn-futures
by pipeworx-io
README.md
# @pipeworx/cn-futures
Daily settlement prices, volume and open interest for China commodity futures (rebar, cotton, gold, silver, crude, lithium carbonate and more) from SHFE, INE, ZCE and GFEX, plus SHFE warehouse-receipt stocks.
Part of [Pipeworx](https://pipeworx.io) — an MCP gateway connecting AI agents to 1875+ live data sources. This is an independent, unofficial integration — not affiliated with, endorsed by, or published by the upstream provider.
## Tools
- `cn_futures_daily(product, exchange?, date?)` — every contract of one product for one trading day: open, high, low, close, settlement, prior settlement, volume (lots), open interest, turnover, with a main contract (highest open interest). A listed-but-dormant product such as ZCE wheat returns `status: "no_listed_activity"` and an explanation instead of an empty list.
- `cn_futures_products(exchange, date?)` — every product in one exchange's daily report, ranked by open interest, so a caller can find product codes.
- `cn_futures_warehouse_stocks(product?, date?)` — SHFE warehouse-receipt (warrant) stocks per product with day-over-day change and per-warehouse breakdown; gold and silver in kilograms, the rest in tonnes.
Prices are CNY. `date` is YYYY-MM-DD or YYYYMMDD and defaults to the latest published trading day. A weekend or exchange holiday returns an explicit error naming the date, never an empty result.
## Auth
Keyless.
## Data sources
- Shanghai Futures Exchange (SHFE), daily trading data and daily warehouse-receipt report. Also carries the INE products (crude oil, low-sulphur fuel oil, No. 20 rubber, international copper).
- Zhengzhou Commodity Exchange (ZCE), daily trading data.
- Guangzhou Futures Exchange (GFEX), daily trading data.
Each call reads the exchange's published end-of-day report live; nothing is stored. Reports appear after the close (about 15:30 China time); before 16:00 China time the default date steps back to the previous trading day.
Notes:
- Dalian Commodity Exchange (DCE) is not covered: its site answers automated requests with a browser challenge, and this pack does not work around bot checks. DCE product codes return an explicit error.
- The exchanges do not designate a main contract. `main_contract` is derived here as the contract with the highest open interest.
- Warehouse figures are the quantity made into registered warrants, not total physical inventory.
- Contract-month codes are normalised to four digits (ZCE publishes three: CF701 is returned as CF2701).
- Spot prices (for example East China HRB400 rebar or wheat purchase prices) are not exchange data and are not covered.
## Quick Start
Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):
```json
{
"mcpServers": {
"cn-futures": {
"url": "https://gateway.pipeworx.io/cn-futures/mcp"
}
}
}
```
### What this endpoint actually serves
`tools/list` at `https://gateway.pipeworx.io/cn-futures/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:
```json
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
```
Both URLs reach the same gateway and the same 1875+ data sources. The
only difference is which pack's tools are listed **directly**; `ask_pipeworx`
reaches all of them from either one.
## No MCP client? Call it over HTTP
```bash
curl -X POST https://gateway.pipeworx.io/v1/tools/cn_futures_daily \
-H 'Content-Type: application/json' \
-d '{"product":"rb","exchange":"SHFE","date":"2026-11-06"}'
```
No account needed for the first calls. Inspect any tool: `GET https://gateway.pipeworx.io/v1/tools/cn_futures_daily`. Find one: `POST https://gateway.pipeworx.io/v1/tools/search_packs` with `{"query":"..."}`.
## Run it from npm
`@pipeworx/mcp-cn-futures` is a local stdio bridge to the Pipeworx gateway: your MCP client
starts it with `npx`, and it forwards every call to the same
`https://gateway.pipeworx.io/cn-futures/mcp` endpoint shown above. It needs network access;
there is no offline mode.
```json
{
"mcpServers": {
"cn-futures": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-cn-futures"]
}
}
}
```
Without a key it calls anonymously, capped at 50 calls a day. A free account
raises that to 200 a day: get a key at https://pipeworx.io/signup and add
`"env": { "PIPEWORX_API_KEY": "<your key>" }` to the server entry.
The key is sent as a Bearer token, the same way a hosted connection sends it,
so calls are metered and billed exactly as they are there.
It lists **only** this pack's tools by default. Set `PIPEWORX_META_TOOLS=1` to
also list `ask_pipeworx` and the other gateway-wide tools.
Behind an HTTPS proxy: Node's built-in `fetch` does not read `HTTPS_PROXY` by
default. Newer Node releases honour it when `NODE_USE_ENV_PROXY=1` is set; check
your Node version's documentation.
## Using with ask_pipeworx
Instead of calling tools directly, you can ask questions in plain English —
this works on the pack endpoint above as well as on the full gateway:
```
ask_pipeworx({ question: "your question about Cn Futures data" })
```
The gateway picks the right tool and fills the arguments automatically.
## More
- [Docs and guides](https://pipeworx.io/docs)
- [pipeworx.io](https://pipeworx.io)
## License
MIT
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo recent community issues