Skip to main content

gsa-calc-mcp

MCP server for the GSA CALC+ Labor Ceiling Rates API. Query awarded GSA MAS schedule hourly rates for IGCE development, price reasonableness analysis, and market research.

No authentication required. Connect through the published ChatGPT plugin below, or use the installation and configuration instructions for another compatible MCP client.

Tested and hardened through six audit rounds against the GSA CALC+ API. 352 regression tests (247 offline, 105 live-gated) covering 49 P1 bugs (19 crashes, 30 silent-wrong-data), 19 P2 validation gaps, 12 retroactive deep-audit findings, and the round-6 differential-count fixes (dead worksite filter, experience-range semantics, rate-card paging). See testing.md for the full testing record.

Available in ChatGPT

Install GSA CALC+ in ChatGPT

This MCP is also available as a published plugin in the ChatGPT directory. Open the listing to install and connect it; no user API key or local Python setup is required. Then try a matching prompt. Prompts that combine sources require every listed MCP to be connected.

The installation and configuration sections below cover direct setup in other compatible MCP clients.

What it does

Exposes the GSA CALC+ API as 8 MCP tools:

Core search

  • keyword_search - Wildcard search across labor categories, vendors, and contract numbers
  • exact_search - Exact field match (use suggest_contains to discover values first)
  • suggest_contains - Autocomplete/discovery for field values (2-char minimum)
  • filtered_browse - Browse with filters only (no keyword)

Workflow tools

  • igce_benchmark - Rate statistics for IGCE development (min/max/avg/median/percentiles)
  • price_reasonableness_check - Evaluate a proposed rate against market distribution
  • vendor_rate_card - All rates for a vendor (auto-discovers exact name)
  • sin_analysis - Rate distribution for a GSA SIN

No authentication required

The GSA CALC+ API is public. GSA does not publish a numeric limit for this endpoint. The MCP applies a provisional 3-second cross-process anti-burst interval by default.

Installation

uvx gsa-calc-mcp

Or from source:

git clone https://github.com/1102tools-dev/federal-contracting-mcps.git
cd federal-contracting-mcps/servers/gsa-calc-mcp
pip install -e .

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.

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

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 are the GSA ceiling rates for Senior Software Developer with a BA and 10+ years experience?"
  • "Is $195/hr reasonable for a Cybersecurity Analyst? Check against CALC+ rates."
  • "Pull the full rate card for Booz Allen Hamilton from GSA CALC+."
  • "What does the IT Professional Services SIN (54151S) rate distribution look like?"
  • "Build IGCE benchmarks for these 5 labor categories: Program Manager, Systems Engineer, Software Developer, Help Desk Specialist, Network Administrator."
  • "Find all small business ceiling rates for project management between $100-$200/hr."

Important: ceiling rates, not prices paid

CALC+ data represents the maximum hourly rate a contractor can charge under their GSA MAS contract. Actual task order rates should be lower per FAR 8.405-2(d). These rates are:

  • Fully burdened (includes fringe, overhead, G&A, profit)
  • Worldwide (no geographic adjustment)
  • Master contract-level (not task order-specific)
  • From vendor Price Proposal Tables (self-reported by contractors)

Always note sample size and remind users these are ceiling rates when presenting analysis.

Request pacing

The default safeguard allows up to 500 upstream request attempts per rolling hour, with starts spaced at least 0.6 seconds apart and at most two requests in flight. This is a 1102tools policy tested against GSA CALC+, not a published provider quota or a guaranteed tool-call rate. All eight current tools make at most one upstream request. Upstream latency can reduce throughput.

Local processes sharing FEDERAL_API_PACING_DIR share the budget. The hosted service has an additional persistent budget of 500 tool requests per rolling hour, shared by its users. Every current CALC+ tool makes at most one upstream request; failed or invalid hosted tool requests still consume an admission. Protocol-only requests do not consume this hourly budget. The hosted counter and observed provider cooldowns live in Durable Object SQLite storage, so they survive container sleep and replacement.

The separate HTTP entrance limit is 120 requests per minute per IP and Cloudflare location, including protocol requests. Other MCP services have separate budgets. X-1102tools-Hourly-Remaining reports the hosted admission balance; it is not an agency quota header.

Exhausting the hourly safety budget returns an error with a retry time instead of holding a connection open. Provider cooldowns longer than 30 seconds also return promptly with the remaining wait. Attempts remain counted on failure or cancellation, and Retry-After extends a shared cooldown. Set FEDERAL_API_MIN_INTERVAL_SECONDS above 0.6 to slow requests; positive values below 0.6 are clamped. Explicit 0 disables pacing for offline tests or externally managed clients. Hosted deployments use 0.6. Local pacing history does not survive deletion of its directory. Hosted Python pacing history is ephemeral, with the durable admission budget and provider cooldown above preserving the outer safeguards across restarts. Do not run old and new local pacing implementations against the same directory concurrently.

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

gsa_calc_mcp-1.0.8.tar.gz (148.2 kB view details)

Uploaded Source

Built Distribution

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

gsa_calc_mcp-1.0.8-py3-none-any.whl (27.6 kB view details)

Uploaded Python 3

File details

Details for the file gsa_calc_mcp-1.0.8.tar.gz.

File metadata

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

File hashes

Hashes for gsa_calc_mcp-1.0.8.tar.gz
Algorithm Hash digest
SHA256 8adf7094f65616cb4317b1a4c7a6d0aa0bc84999829830a1d4733327acc87a70
MD5 e13686bfcdd253e942f83d38961a2b7c
BLAKE2b-256 f1ae5f5ad51db707e75c57f0a353694b3c85fb3c3ad648fbcfd1d3fe64615f21

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsa_calc_mcp-1.0.8.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 gsa_calc_mcp-1.0.8-py3-none-any.whl.

File metadata

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

File hashes

Hashes for gsa_calc_mcp-1.0.8-py3-none-any.whl
Algorithm Hash digest
SHA256 c2d35e4364e4de233cf2025b83520e2a4355fc96bc3d1fd769d27d14df33557a
MD5 aa250b798b4f5c43591a3647aa67f678
BLAKE2b-256 d6c164d3e51631992db99ff2de0d85ba5d717d3670daaff5fa4f36cabc750486

See more details on using hashes here.

Provenance

The following attestation bundles were made for gsa_calc_mcp-1.0.8-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

This release

1.0.8 This release

2 files

1.0.7

2 files

1.0.6

2 files

1.0.5

2 files

1.0.4

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