Fetch US Bureau of Labor Statistics data β CPI, unemployment, wages, JOLTS, and more via MCP.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Fetch US Bureau of Labor Statistics data β CPI, unemployment, wages, JOLTS, and more via MCP. STDIO or Streamable HTTP.
Public Hosted Server: https://bls-labor.caseyjhand.com/mcp
Four BLS data tools are always available. Setting CANVAS_PROVIDER_TYPE=duckdb adds two DataCanvas SQL tools; setting BLS_DATAFRAME_DROP_ENABLED=true as well adds the seventh, destructive cleanup tool.
| Tool | Description |
|---|---|
bls_list_surveys | List BLS survey programs (CPI, CPS, CES, JOLTS, PPI, OEWS, β¦) with codes, descriptions, and calculation-support flags. |
bls_search_series | Search the BLS series catalog by natural language, survey, area, or keywords to resolve cryptic SeriesIDs. |
bls_get_series | Fetch time-series data for 1β50 BLS series by SeriesID, with optional year range and period-over-period calculations. |
bls_get_latest | Return the single most recent observation for one or more BLS series. |
bls_dataframe_describe | List canvas dataframes registered by bls_get_series β provenance, TTL, row count, column schema. Available when CANVAS_PROVIDER_TYPE=duckdb. |
bls_dataframe_query | Run a SELECT against canvas dataframes registered by bls_get_series. Supports JOINs, aggregates, window functions, CTEs. Available when CANVAS_PROVIDER_TYPE=duckdb. |
bls_dataframe_drop | Drop a canvas dataframe by name. Available when CANVAS_PROVIDER_TYPE=duckdb and BLS_DATAFRAME_DROP_ENABLED=true; TTL handles cleanup by default. |
bls_list_surveysList available BLS survey programs and their metadata.
category filter (prices, employment, wages, productivity, injuries, time_use)allowsNetChange, allowsPercentChange, hasAnnualAverages)bls_search_seriesThe entry point for most BLS workflows. Resolves human concepts to BLS SeriesIDs.
LNS14000000 and CES0000000001 encode survey + area + item + seasonal flag in opaque positional codes β this tool decodes thembls_get_series or bls_get_latest when you have a concept but not a SeriesIDbls_get_seriesFetch historical time-series data for one or more BLS series.
start_year / end_year window (BLS caps history at 20 years per request)calculations: true for BLS-server-side net change and percent change β a survey returns whichever it supports (CPI/PPI return percent change only); check bls_list_surveys for per-survey supportannual_average: true adds each year's annual-average row (period M13, Q05 or S03) β the mean of that year's real periods, not an additional one. enrichment.annualAverageRows reports how many were addedavailable; BLS's raw - missing-value sentinel is preserved but excluded from availableObservationCount and called out in the noticeCANVAS_PROVIDER_TYPE=duckdb, spills to a DataCanvas dataframe when the observation count exceeds the inline context budget. Rows preserve raw value and add available plus nullable numeric value_numeric for safe SQL arithmetic. Call bls_dataframe_describe with the returned dataset.name to inspect column_schema, then use that table name in bls_dataframe_query SQL. Without DataCanvas, narrow oversized requests with start_year / end_year.bls_get_latestGet the current value for one or more BLS series.
bls_get_series with a narrow year window is more quota-efficient (one API query regardless of series count)failed[] array alongside successful resultsavailable; a BLS - value renders explicitly as unavailable with its footnote reasonbls_dataframe_describeInspect canvas dataframes registered by bls_get_series.
Available only when CANVAS_PROVIDER_TYPE=duckdb.
bls_dataframe_queryRun SQL against canvas dataframes registered by bls_get_series.
Available only when CANVAS_PROVIDER_TYPE=duckdb.
register_as persists the query result as a new named dataframe with a fresh TTL β useful for chaining analyses without re-consuming BLS API quotaregister_as is setbls_dataframe_dropDrop a canvas dataframe by name. Idempotent β returns dropped: false when nothing matched.
CANVAS_PROVIDER_TYPE=duckdb and must be explicitly enabled via BLS_DATAFRAME_DROP_ENABLED=true (TTL handles cleanup by default)Built on @cyanheads/mcp-ts-core:
none, jwt, oauth)in-memory, filesystem, Supabase, Cloudflare KV/R2/D1BLS-specific:
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/bls-labor-mcp-server)<a href="https://allmcps.com/mcp/bls-labor-mcp-server"><img src="https://allmcps.com/api/badge/bls-labor-mcp-server?style=directory" alt="Bls Labor MCP Server on AllMCPs" /></a>