# BLS OEWS MCP server

> Look up BLS Occupational Employment and Wage Statistics by occupation and location, with IGCE wage benchmarks and burdened rates.

- Listing: https://mcp.tc/i/bls-oews
- Connect: use the server's own URL `https://bls-oews.1102tools.com/mcp` (no sign-in); clients connect to it directly. The listing link is a page, not an MCP endpoint.
- Type: remote (Streamable HTTP)
- Auth: none
- Category: [Data & Analytics](https://mcp.tc/c/analytics)
- Vendor: 1102tools
- Homepage: <https://1102tools.com>
- Repository: <https://github.com/1102tools-dev/federal-contracting-mcps/tree/HEAD/servers/bls-oews-mcp>
- Package: pypi `bls-oews-mcp`

## About

Answers wage questions from the bundled BLS OEWS release (May 2025 estimates). You can pull wage statistics for an occupation by SOC code at national, state or metro level, compare metros or occupations, and build wage benchmarks with burdened hourly rate estimates for independent government cost estimates (IGCEs).

Runs as a hosted streamable HTTP endpoint or as a local Python package started with uvx. No sign-in or API key is needed, and there is no daily limit. The local package unpacks a database of about 50 MB into the user cache on first use.

## What it can do

- Get wage statistics for an occupation by SOC code
- Scope lookups to national, state or metro areas
- Compare one occupation across up to 50 metros
- Compare up to 50 occupations in one location
- Build IGCE wage benchmarks with percentiles and burden multipliers
- List common SOC codes and metro MSA codes
- Check the bundled data year and BLS source files

## Tools (8)

- `compare_metros`: Compare wages for one occupation across up to 50 metro areas by MSA code. (read-only)
- `compare_occupations`: Compare wages across up to 50 occupations in one location. (read-only)
- `detect_latest_year`: Report the OEWS data year the server answers from. (read-only)
- `get_data_status`: Report the bundled OEWS release, BLS source files, hashes and row counts. (read-only)
- `get_wage_data`: Get wage statistics for an occupation by SOC code at national, state or metro scope. (read-only)
- `igce_wage_benchmark`: Get percentile wages and burdened hourly rates formatted for IGCE development. (read-only)
- `list_common_metros`: List common metro area MSA codes for wage lookups. (read-only)
- `list_common_soc_codes`: List common SOC code mappings for federal IT and professional services. (read-only)

## 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 a Program Manager in the DC metro with a 2.0x burden."
- "What do Information Security Analysts earn in Virginia vs nationally?"

## Install

### Claude Code

1. Run this in a terminal, in your project folder:

```bash
claude mcp add --transport http bls-oews https://bls-oews.1102tools.com/mcp
```

2. Start Claude Code and type `/mcp`. **bls-oews** should show as connected.

Add `--scope user` to make it available in every project, not just this one.

### Claude Desktop

1. Open **Customize → Connectors**, click **+ Add**, then **Add custom connector**.

2. Name it **BLS OEWS** and paste this URL:

```url
https://bls-oews.1102tools.com/mcp
```

3. Click **Add**. Its tools appear in the chat’s tools menu.

Claude Desktop’s JSON config file only starts local servers. Remote servers go through Connectors, and connectors you add on claude.ai show up here too.

### claude.ai

1. Open the connector form on claude.ai. This button fills in the name and URL for you:

[Add to claude.ai](<https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=BLS%20OEWS&connectorUrl=https%3A%2F%2Fbls-oews.1102tools.com%2Fmcp>) (opens connector settings)

2. Check that the URL reads `https://bls-oews.1102tools.com/mcp` and click **Add**.

3. Turn it on in a chat from the tools menu.

Free plans allow one custom connector. On Team and Enterprise plans an owner adds it under **Organization settings → Connectors**.

### ChatGPT

1. On chatgpt.com, go to **Plugins**, select **+**, then **Add custom MCP server**.

2. Enter a name for the server.

3. Under **Connection**, paste `https://bls-oews.1102tools.com/mcp` as the server URL, then for authentication choose **No authentication**.

4. Check **I understand and want to continue**, then select **Create as a plugin**.

Whether you can add a custom MCP server depends on your ChatGPT plan and your workspace permissions (in Business workspaces, admins and owners can).

### Cursor

[Add to Cursor](<https://cursor.com/install-mcp?name=bls-oews&config=eyJ1cmwiOiJodHRwczovL2Jscy1vZXdzLjExMDJ0b29scy5jb20vbWNwIn0%3D>) (opens Cursor)

Or add it by hand to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project):

`mcp.json`:

```json
{
  "mcpServers": {
    "bls-oews": {
      "url": "https://bls-oews.1102tools.com/mcp"
    }
  }
}
```

### VS Code

[Install in VS Code](<https://vscode.dev/redirect/mcp/install?name=bls-oews&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fbls-oews.1102tools.com%2Fmcp%22%7D>) (opens VS Code)

Or from a terminal:

```bash
code --add-mcp '{"name":"bls-oews","type":"http","url":"https://bls-oews.1102tools.com/mcp"}'
```

Or commit it to the repo in `.vscode/mcp.json`:

`.vscode/mcp.json`:

```json
{
  "servers": {
    "bls-oews": {
      "type": "http",
      "url": "https://bls-oews.1102tools.com/mcp"
    }
  }
}
```

### Devin Desktop

1. Add it to `~/.config/devin/mcp_config.json` (macOS and Linux) or `%APPDATA%\devin\mcp_config.json` (Windows):

`mcp_config.json`:

```json
{
  "mcpServers": {
    "bls-oews": {
      "serverUrl": "https://bls-oews.1102tools.com/mcp"
    }
  }
}
```

2. Refresh the MCP server list in Cascade.

Devin Desktop is the new name for Windsurf. It reads `serverUrl` (or `url`) for remote servers.

### Codex

```bash
codex mcp add bls-oews --url https://bls-oews.1102tools.com/mcp
```

Or edit `~/.codex/config.toml` directly:

`config.toml`:

```toml
[mcp_servers.bls-oews]
url = "https://bls-oews.1102tools.com/mcp"
```

### Gemini CLI

```bash
gemini mcp add --transport http bls-oews https://bls-oews.1102tools.com/mcp
```

This adds it to the current project. Add `-s user` to use it everywhere.

### Any client

Most clients accept this shape. Some name the URL field differently: `serverUrl` in Devin Desktop, `httpUrl` in Gemini CLI’s settings file.

```json
{
  "mcpServers": {
    "bls-oews": {
      "type": "http",
      "url": "https://bls-oews.1102tools.com/mcp"
    }
  }
}
```

Zed puts servers under `context_servers` in its settings. Cline needs `"type": "streamableHttp"`, or it assumes SSE.

Client only starts local servers? Bridge it with `npx -y mcp-remote https://bls-oews.1102tools.com/mcp`.

## Recent changes

- 2026-11-01 05:22 UTC: Tracking started: 8 tools read. Source: automatic check.

More on the History tab, with descriptions before and after for the newest entries: https://mcp.tc/i/bls-oews#history (Atom feed: https://mcp.tc/i/bls-oews/history.xml). It records what mcp.tc's anonymous checks saw, every 3 hours where the tool list can be read without sign-in; it is not a security review.

## Details

- Server version: 1.1.6
- MCP protocol version: 2026-07-28
- Last checked: 2026-11-06 (reachable)
- Listed: 2026-11-01
- Updated: 2026-11-01

---
Source: https://mcp.tc/i/bls-oews (mcp.tc is an independent directory, not affiliated with this server's publisher). Corrections: https://mcp.tc/report
