BLS OEWS

io.github.1102toolsPublished by GitHub account 1102toolsv0.2.7Updated Oct 24, 2026

BLS Occupational Employment and Wage Statistics market wages. 7 tools.

Overview

AI-generated overview

Answers U.S. occupational wage questions from a bundled BLS OEWS release, including metro comparisons and IGCE wage benchmarks.

What you can do
Serves BLS Occupational Employment and Wage Statistics from a read-only database bundled with the package, so answers are local and cite the release, publication date, retrieval date and source file. Tools cover wage data by SOC code at national, state or metro level, comparisons across metros or occupations, IGCE wage benchmarks with burdened-rate estimates, SOC and metro code lookups, and data status reporting. Where BLS publishes no number, the BLS footnote is kept and an alternative measure suggested.
When to use it
Useful for price analysis, IGCE development and labor market research where you want market wage figures for an occupation or location without querying BLS directly. Also handy for checking whether a proposed hourly rate is in line with published market data.
Requirements
Runs locally as a PyPI package (uvx bls-oews-mcp) inside a desktop MCP client; desktop only. No API key is required; the optional BLS_API_KEY environment variable is for the BLS v2 API. On first use it decompresses a roughly 50 MB database into the user cache directory, which can be relocated with BLS_OEWS_DATA_DIR. The suggested configuration uses a package refresh flag that adds network time at startup.
Before you install
Wage figures are employer-reported base wages and exclude fringe, overhead, G&A and profit, so burdened rates are estimates produced by applying a multiplier, not BLS data. Data is a bundled release about a year in arrears and does not update itself. Top-coded wages keep BLS's published lower bound. The optional BLS_API_KEY is a credential and should be supplied through the environment, not shared.

Installation

In SourceWeft

  1. Open BLS OEWS in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

bls-oews-mcp

[price: free] [license: MIT] [tools: 8] [regression tests]

Free, open-source MCP server for BLS Occupational Employment and Wage Statistics (OEWS) market wages. For IGCE development, price analysis, and labor market research.

Overview, demo video and hosted setup: https://1102tools.com/mcp/bls-oews

No API key and no daily limit. The package bundles the current OEWS release (May 2025 estimates, published by BLS on May 15, 2026) as a read-only database built from BLS's published flat files, so every answer is local and each result cites the BLS release, publication date, retrieval date, and source file. See Local or hosted.

When BLS publishes no number for a wage measure, answers keep the BLS footnote that explains why and suggest the published hourly or annual alternative. Top-coded wages keep BLS's published lower bound; the server does not invent an exact wage or annualize hourly-only occupations.

Regression tests, and realistic contracting wage questions checked against BLS source values before release. See testing.md.

Local or hosted

Local (desktop)Claude (hosted)ChatGPT (hosted)
Local setupInstallInstall
  • Local runs it on your computer, inside the Claude or ChatGPT desktop app or another AI app. Answers come from the bundled BLS database, with no government API calls or request limits. It doesn't update itself, so ask your AI to update it. You don't have to set it up by hand: give your AI this page's link and ask it to set it up or walk you through it.
  • Hosted is always up to date, needs no setup or keys, and works in Claude or ChatGPT anywhere.

Compare local and hosted · Matching prompts

What it does

Answers OEWS questions from the bundled release through 8 MCP tools:

Core

  • get_wage_data - Wage statistics for an occupation by SOC code (national, state, or metro)
  • compare_metros - Compare wages for one occupation across multiple metro areas
  • compare_occupations - Compare wages across multiple occupations in one location

Workflow

  • igce_wage_benchmark - Wage benchmarks with burdened rate estimates for IGCE development
  • detect_latest_year - Report the bundled OEWS data year and release

Reference

  • list_common_soc_codes - SOC code mappings for federal IT/professional services
  • list_common_metros - Metro area MSA codes
  • get_data_status - The bundled release, its BLS source files with SHA-256 and publication dates, and the retrieval date

Data source

The bundled database is built by scripts/build_oews_db.py from the BLS OEWS flat files at download.bls.gov/pub/time.series/oe/: national, state, metropolitan and nonmetropolitan area, and national industry estimates for every occupation and all 17 OEWS datatypes, including the relative standard errors. data/manifest.json records each source file's URL, size, SHA-256, and BLS publication date. A weekly check reports when BLS publishes a new release, which ships as a new package version.

BLS.gov cannot vouch for the data or analyses derived from these data after the data have been retrieved from BLS.gov.

Installation

bash
uvx --refresh-package bls-oews-mcp --from bls-oews-mcp bls-oews-mcp

Configuration

Use the configuration below as the server definition and adapt its placement to your compatible MCP client. For practical requests using this source, see the prompt library.

json
{  "mcpServers": {    "bls-oews": {      "command": "uvx",      "args": ["--refresh-package", "bls-oews-mcp", "--from", "bls-oews-mcp", "bls-oews-mcp"]    }  }}

The --refresh-package flag tells uv to check PyPI for a newer release each time your client launches the server, so fixes and new OEWS releases arrive automatically; without it, uv keeps serving whatever version it first cached. It adds a moment of network time at startup, so raise your platform's MCP startup timeout if it enforces a short one.

On first use the server decompresses the bundled database (about 50 MB) into your user cache directory; set BLS_OEWS_DATA_DIR to put it elsewhere.

Restart the client and the tools appear.

Example prompts

  • "What's the national median salary for Software Developers (SOC 151252)?"
  • "Compare Systems Analyst wages in DC, Seattle, and Baltimore."
  • "Build IGCE wage benchmarks for Program Manager, Software Developer, and Help Desk at the DC metro area with a 2.0x burden factor."
  • "Is $195/hr reasonable for a Senior Software Developer? Show me the BLS market data."
  • "What do Information Security Analysts earn in Virginia vs nationally?"

Important: base wages, not burdened rates

BLS OEWS data represents employer-reported base wages (no fringe, overhead, G&A, or profit). To estimate fully burdened hourly rates for an IGCE, apply a burden multiplier:

  • 1.5x-1.7x: lean contractor
  • 1.8x-2.2x: mid-range professional services
  • 2.0x-2.5x: large contractor with clearance overhead
  • 2.5x-3.0x: high-overhead (SCIF, deployed)

The igce_wage_benchmark tool applies the multiplier automatically. OEWS wages are estimates for the release's May reference month, so escalate them to the period of performance; the tool's wage_period and _escalation_note say which month.

Data year

OEWS publishes about a year in arrears. The server answers from the bundled release, 2025 (May 2025 estimates, published May 15, 2026); other years raise a clear error pointing to the historical tables at bls.gov/oes/tables.htm. Omit the year argument in normal use, and call detect_latest_year or get_data_status to see the bundled release.

Companion tools

Use alongside gsa-calc-mcp (GSA CALC+ ceiling rates) for complete pricing analysis. BLS provides what the market pays; CALC+ provides what GSA contractors charge. Together they form the IGCE pricing toolkit.

License

MIT

Source: servers/bls-oews-mcp/readme.md at commit 7ff19f1

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.2.7LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts