Skip to main content

bls-oews-mcp

MCP server for the BLS Occupational Employment and Wage Statistics (OEWS) API. Market wage data for IGCE development, price analysis, and labor market research.

Optional free API key for higher rate limits. Works without a key at reduced limits. MCP is an open standard: this server runs in any MCP client, not just Claude. Executed and verified on eleven platforms in August 2026 (see Configuration).

Tested and hardened through a 5-round retroactive live audit with a real BLS API key after the initial smoke test reported zero bugs. 60 regression tests covering 1 P0 usability-breaking bug (SOC format), 10 P1 silent-wrong-data bugs, 12 P1 response-shape crash paths, and 7 P2 validation gaps fixed. See TESTING.md for the full testing record.

What it does

Exposes the BLS OEWS API as 7 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 - Check if newer OEWS data has been released

Reference

  • list_common_soc_codes - SOC code mappings for federal IT/professional services
  • list_common_metros - Metro area MSA codes

Authentication (optional)

Without a key, the server uses BLS v1 API (25 queries/day). With a key, it uses v2 (500 queries/day). Register free at data.bls.gov/registrationEngine.

Installation

uvx bls-oews-mcp

Configuration

MCP is an open standard, and this config was executed and verified in August 2026 on eleven platforms: Claude Desktop, Claude Code, Codex Desktop and CLI, Gemini via Antigravity, GitHub Copilot CLI, DeepSeek Harness, Grok Build, Cursor, opencode, and LibreChat. Most clients take the same JSON block below and differ only in where the config file lives; the universal setup guide (PDF) has the exact file path and format for every platform, including the Codex TOML form.

Without key:

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

With key (recommended):

{
  "mcpServers": {
    "bls-oews": {
      "command": "uvx",
      "args": ["--refresh-package", "bls-oews-mcp", "--from", "bls-oews-mcp", "bls-oews-mcp"],
      "env": {
        "BLS_API_KEY": "your-api-key-here",
        "FEDERAL_API_MIN_INTERVAL_SECONDS": "3"
      }
    }
  }
}

The server defaults FEDERAL_API_MIN_INTERVAL_SECONDS to 3 for keyed and keyless requests. The explicit value above documents the intended policy and can be changed when you have a documented reason. Multiple local processes using the same key share the gate.

The --refresh-package flag tells uv to check PyPI for a newer release each time your client launches the server, so fixes 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.

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.

Data year

OEWS publishes about a year in arrears, and the BLS API serves ONLY the latest survey year. The server defaults to 2025 (May 2025 estimates, released April 2026), which is currently the only year that returns data: older years are withdrawn and raise a clear error here. Omit the year argument in normal use, and call detect_latest_year to confirm the newest 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.

Request pacing

Every upstream request uses a provisional 3-second cross-process anti-burst interval by default. This protects keyed and keyless traffic launched by multiple local clients; it does not increase BLS daily quota or coordinate the same key on another computer. Override with FEDERAL_API_MIN_INTERVAL_SECONDS, use 0 to deliberately disable it, and use FEDERAL_API_PACING_DIR to relocate local pacing state.

License

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bls_oews_mcp-1.0.4.tar.gz (109.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bls_oews_mcp-1.0.4-py3-none-any.whl (23.1 kB view details)

Uploaded Python 3

File details

Details for the file bls_oews_mcp-1.0.4.tar.gz.

File metadata

  • Download URL: bls_oews_mcp-1.0.4.tar.gz
  • Upload date:
  • Size: 109.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for bls_oews_mcp-1.0.4.tar.gz
Algorithm Hash digest
SHA256 23432afbf387e2a2212b3adc011c3b4edc9cd06d98d49dc1266a1135ac19e75b
MD5 742c17773dcd9ba80c558afb76ecbfaf
BLAKE2b-256 5fd0433f554ec942ea4f2e9586f5814e9cb7854f67c01237fc98501e17240ebd

See more details on using hashes here.

Provenance

The following attestation bundles were made for bls_oews_mcp-1.0.4.tar.gz:

Publisher: publish-pypi.yml on 1102tools-dev/federal-contracting-mcps

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file bls_oews_mcp-1.0.4-py3-none-any.whl.

File metadata

  • Download URL: bls_oews_mcp-1.0.4-py3-none-any.whl
  • Upload date:
  • Size: 23.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for bls_oews_mcp-1.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5f42987d17f3f72a98ce947e22e63f3b6ae1f9aad15764a2ec4ac96862cb292f
MD5 4fe1d0cf98316acae87bc0b53872ef4a
BLAKE2b-256 90d6d5d1f88dccbe555d0a48713364e9b97c2645992c28bd2f4be1e16b675f8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for bls_oews_mcp-1.0.4-py3-none-any.whl:

Publisher: publish-pypi.yml on 1102tools-dev/federal-contracting-mcps

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

1.0.9

2 files

1.0.8

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

This release

1.0.4 This release

2 files

1.0.3

2 files

1.0.2

2 files

1.0.1

2 files

1.0.0

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

0.2.1

2 files

0.2.0

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page