Bls Labor MCP Server logo

Bls Labor MCP Server

Fetch, search, and analyze U.S. Bureau of Labor Statistics data through MCP tools and optional DuckDB dataframes.

Install Bls Labor MCP Server

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "bls-labor-mcp-server": {
      "command": "bunx",
      "args": [
        "@cyanheads/bls-labor-mcp-server@latest"
      ],
      "env": {
        "BLS_API_KEY": "YOUR_VALUE_HERE",
        "CANVAS_PROVIDER_TYPE": "YOUR_VALUE_HERE",
        "BLS_DATAFRAME_DROP_ENABLED": "YOUR_VALUE_HERE",
        "BLS_CATALOG_INCLUDE_OES": "YOUR_VALUE_HERE"
      }
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Values are written into the snippet above so you can paste it as is. They never leave your browser.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window — this can mean a slow first-time install rather than a real problem.

bunx @cyanheads/bls-labor-mcp-server@latest

Process exited before answering initialize.

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 7d ago.

Overview

The bls-labor-mcp-server MCP server connects AI agents to the U.S. Bureau of Labor Statistics API v2 and LABSTAT catalog. It can discover surveys, resolve human descriptions to SeriesIDs, retrieve historical observations or latest values, and calculate supported period-over-period changes. Optional DuckDB DataCanvas support adds SQL queries over registered results. Reach for it when an agent needs CPI, employment, wage, JOLTS, or other BLS labor statistics through stdio or Streamable HTTP.

Use cases

  • Find BLS SeriesIDs from natural-language economic questions
  • Fetch CPI, unemployment, wage, or JOLTS time series
  • Retrieve the latest value for multiple labor indicators
  • Run SQL analysis across registered BLS result dataframes

Key features

  • BLS survey and series catalog search
  • Historical retrieval for up to 50 series
  • Latest-observation lookup with partial failure reporting
  • Server-side period-over-period calculations
  • Optional DuckDB dataframe storage and SQL queries
  • Stdio and Streamable HTTP transports

Tools7

What Bls Labor MCP Server lets your agent do. Expand a tool for its parameters.

Self-reported~261 tokens of context

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 2d ago

Recent health check succeeded.

5/5 checks healthy over the last 27d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 5d ago via OSV.dev · @cyanheads/bls-labor-mcp-server@latest (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars1Stargazers on the source repository.
npm downloads1.5kPackage downloads in the last 30 days.
Last commit9d agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.
Tools exposed7Callable tools this server registers over MCP.
Directory activity1 viewsConfig copies, upvotes, and views on AllMCPs.

How Bls Labor MCP Server works

What bls-labor-mcp-server does

The bls-labor-mcp-server MCP server exposes U.S. Bureau of Labor Statistics data to MCP clients. It covers survey programs such as CPI, CPS, CES, JOLTS, PPI, and OEWS. Agents can inspect available surveys, search the BLS catalog for series, retrieve historical observations, or request the newest observation for one or more series.

Series discovery uses an offline LABSTAT index, so searching for a description, survey, area, keyword, or existing SeriesID does not consume BLS API quota. The search response includes decoded identifiers, titles, frequency, pagination information, and catalog metadata. OE/OEWS catalog indexing is optional, while unindexed series can still be fetched when their SeriesIDs are known.

How it works

The server supports stdio and Streamable HTTP transports, including a hosted Streamable HTTP endpoint documented by the project. Its BLS client uses API v2 for data retrieval. A bls_get_series request can contain 1–50 SeriesIDs, an optional year window of up to 20 years, calculation options, and annual-average handling. BLS-supported calculations are applied server-side; support varies by survey.

bls_get_latest retrieves one current observation per requested series. It reports successful and failed items separately, which lets an agent continue when only some identifiers are invalid or unavailable. Missing BLS values remain distinguishable through the returned availability fields.

With DuckDB DataCanvas enabled, larger results can be registered as dataframes. Agents can inspect their schemas and provenance, then run read-only SELECT statements using joins, aggregates, window functions, and common table expressions. Query results may be registered again for chained analysis, and dataframe entries have a time-to-live.

Setup and configuration

The package can run as a local process or Streamable HTTP service. The repository also documents Docker and npm distribution, plus installation links for Claude Desktop, Cursor, and VS Code. A BLS API key is supplied through BLS_API_KEY in the documented client configuration.

Set CANVAS_PROVIDER_TYPE=duckdb to enable dataframe inspection and SQL tools. Set BLS_DATAFRAME_DROP_ENABLED=true only if explicit dataframe deletion should be available; otherwise, TTL-based cleanup remains the default. BLS_CATALOG_INCLUDE_OES controls whether the large OE/OEWS wage catalog is included in the offline search index.

Tools and capabilities

The default BLS workflow uses four tools:

  • bls_list_surveys lists survey codes, descriptions, and calculation-support flags.
  • bls_search_series resolves natural-language descriptions and filters into SeriesIDs.
  • bls_get_series retrieves batched historical data and optional calculations.
  • bls_get_latest returns the newest observation for up to 50 SeriesIDs.

DuckDB adds bls_dataframe_describe and bls_dataframe_query. bls_dataframe_drop is an additional opt-in tool. SQL queries are limited to SELECT statements, cannot read external files or system catalogs, and return at most 10,000 rows, with a default limit of 1,000.

Limitations and notes

The bls-labor-mcp-server MCP server depends on BLS series identifiers and the BLS API's availability and quota rules. A latest-value request makes one API query per SeriesID, so batched historical retrieval is more efficient for multiple series. bls_get_series accepts at most 50 series per call and a year range of up to 20 years.

Calculation behavior is survey-dependent: the documented CPI and PPI support includes percent changes, while other calculations may not be available. Large responses require DuckDB DataCanvas; without it, the server asks for a narrower window when results cannot be returned directly. Dataframe entries expire, and dataframe column types outside the supported canvas set may be represented as VARCHAR.

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Bls Labor MCP Server

bls-labor-mcp-server is an MCP server that connects AI clients to the U.S. Bureau of Labor Statistics API and LABSTAT catalog. Its main tools list surveys, search SeriesIDs, fetch historical series, retrieve latest observations, and optionally query registered results with DuckDB SQL.

Install it as a local npm-based MCP process or use the repository's documented Docker and Streamable HTTP options. The README provides setup links for Claude Desktop, Cursor, and VS Code, and shows `BLS_API_KEY` in client configuration.

Yes, `bls_search_series` searches the offline LABSTAT catalog using natural language, survey, area, keywords, or an existing SeriesID. It returns matching identifiers and metadata without using BLS API quota.

Enable DuckDB with `CANVAS_PROVIDER_TYPE=duckdb`, retrieve or register data, and use `bls_dataframe_query` for a read-only SELECT. The tool supports joins, aggregates, window functions, and CTEs, with a default 1,000-row limit and a 10,000-row maximum.

Yes, the README provides a Cursor installation link and configuration example. The documented setup passes the package command and `BLS_API_KEY` to Cursor as an MCP server.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewBls Labor MCP Server AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/bls-labor-mcp-server?style=directory)](https://allmcps.com/mcp/bls-labor-mcp-server)
HTML Embed
<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>