How to query 1.7B macroeconomic time-series from 80+ providers via @pipeworx/mcp-dbnomics
The @pipeworx/mcp-dbnomics pack wraps DBnomics (db.nomics.world), the largest open macroeconomic data aggregator with 1.7 billion series from 80+ statistical offices (ECB, IMF, OECD, BLS, Eurostat, etc). Accessible via Pipeworx remote gateway, no API key. How do you search for datasets, discover providers, browse series, and fetch actual time-series observations?
Recipe: Query macroeconomic data from 80+ providers via @pipeworx/mcp-dbnomics
Surface: @pipeworx/mcp-dbnomics — remote gateway at https://gateway.pipeworx.io/dbnomics/mcp (streamable-http, JSON-RPC 2.0, SSE responses). No API key. 100 req/day anonymous cap shared across all Pipeworx packs per IP.
Package note: TypeScript source only (src/index.ts, no dist/). Cannot run locally via npx. Use the remote gateway exclusively.
Important: The gateway also exposes additional Pipeworx platform tools (askpipeworx, deepresearch, polymarket_*, etc.) alongside the 5 DBnomics-native tools listed below. This recipe covers the DBnomics data tools only.
Tools (5 DBnomics-native)
| Tool | Purpose | Key params |
|---|---|---|
list_providers | List all 80+ statistical offices | (none) |
search | Full-text search across all datasets | query, limit?, offset? |
list_datasets | Browse datasets for a provider | provider (e.g. "ECB", "BLS", "OECD"), limit?, offset? |
get_series | Fetch a specific series with observations | provider, dataset, series_code, observations? (default true) |
find_series | Browse series in a dataset | provider, dataset, dimensions? (object), limit?, observations? |
Scale
- 80+ providers (ECB, IMF, OECD, BLS, Eurostat, World Bank, BIS, BOE, BOJ, etc.)
- 44,151 datasets
- 1,717,738,984 series (1.7 billion)
Key providers
| Code | Name | Region |
|---|---|---|
| ECB | European Central Bank | EU |
| IMF | International Monetary Fund | World |
| OECD | Organisation for Economic Co-operation and Development | World |
| BLS | U.S. Bureau of Labor Statistics | US |
| EUROSTAT | Eurostat | EU |
| BEA | U.S. Bureau of Economic Analysis | US |
| WB | World Bank | World |
| BIS | Bank for International Settlements | World |
| BOE | Bank of England | GB |
| BOJ | Bank of Japan | JP |
Calling pattern
POST https://gateway.pipeworx.io/dbnomics/mcp
Content-Type: application/json
Accept: application/json, text/event-stream
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_series","arguments":{"provider":"ECB","dataset":"EXR","series_code":"A.USD.EUR.SP00.A"}}}Response is SSE: parse lines starting with data: , extract result.content[0].text (JSON string).
Data shape
get_series returns: dataset metadata (dimensionscodesorder, dimensionslabels, dimensionsvalueslabels) + series docs with `seriescode, series_name, period[], value[]`. Example: ECB EUR/USD annual exchange rate returns 26 periods (1999-2024), values like 1.0530 (2022), 1.0812 (2023).
list_datasets returns a category_tree for the provider — hierarchical groupings of datasets with codes and names.
find_series returns matching series with their dimension values. Without filters: ECB/EXR returns 3,927 series.
search returns dataset matches across all providers with descriptions, nbseries, nbmatching_series.
Verified traces (8 calls, 100% success on valid params)
list_providers({})→ 80+ providers, 44K datasets, 1.7B series ✅search({query:"inflation",limit:3})→ OECD inflation-adjusted regional economic stats ✅list_datasets({provider:"ECB"})→ ECB category tree: EXR, BSP, BLS, SPF, etc. ✅get_series({provider:"ECB",dataset:"EXR",series_code:"A.USD.EUR.SP00.A"})→ EUR/USD annual spot rate, 26 periods (1999-2024), last value 1.082 ✅find_series({provider:"ECB",dataset:"EXR",limit:3})→ 3,927 series found, returned 3 with dimension metadata ✅find_series({provider:"ECB",dataset:"EXR",dimensions:{CURRENCY:"USD"},limit:3})→ 0 results (dimension filtering limitation, see gotchas) ⚠️
Gotchas
- No local execution: package has no compiled dist, only TS source. Must use remote gateway.
- 100 req/day cap: shared across ALL Pipeworx packs per IP.
- Parameter names matter: use
providernotprovider_code,series_codenotseries. Errors return he
{ "tool": "get_series", "arguments": { "provider": "ECB", "dataset": "EXR", "series_code": "A.USD.EUR.SP00.A" }, "result_summary": "EUR/USD annual spot exchange rate, 26 periods (1999-2024). Series name: 'Annual – US dollar – Euro – Spot – Average'. Last values: 1.0530 (2022), 1.0812 (2023), 1.0824 (2024). Includes full dimension metadata.", "gateway": "https://gateway.pipeworx.io/dbnomics/mcp", "protocol": "streamable-http" }