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. 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 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.
What it does
Exposes the GSA CALC+ API as 8 MCP tools:
Core search
keyword_search- Wildcard search across labor categories, vendors, and contract numbersexact_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 distributionvendor_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
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.
{
"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
Every upstream request uses a provisional 3-second cross-process anti-burst
interval by default. GSA does not publish a numeric CALC+ limit, so this is a
1102tools safeguard rather than a provider requirement. 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gsa_calc_mcp-1.0.3.tar.gz.
File metadata
- Download URL: gsa_calc_mcp-1.0.3.tar.gz
- Upload date:
- Size: 138.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e91cfe924c53354183f24d6ec163f03ed8cd187bc5751bc934794faf82fa8a33
|
|
| MD5 |
75bf64d71cd935846aee3f3ae4242904
|
|
| BLAKE2b-256 |
207e437c17d20c8352d70452a5a4c1f37c897b1300fa181b68ffdc3c85546f93
|
Provenance
The following attestation bundles were made for gsa_calc_mcp-1.0.3.tar.gz:
Publisher:
publish-pypi.yml on 1102tools-dev/federal-contracting-mcps
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gsa_calc_mcp-1.0.3.tar.gz -
Subject digest:
e91cfe924c53354183f24d6ec163f03ed8cd187bc5751bc934794faf82fa8a33 - Sigstore transparency entry: 2555720432
- Sigstore integration time:
-
Permalink:
1102tools-dev/federal-contracting-mcps@8c0fb8a7aa09abc4c59f03570b183e31ff83cef6 -
Branch / Tag:
refs/tags/v1.0.9 - Owner: https://github.com/1102tools-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@8c0fb8a7aa09abc4c59f03570b183e31ff83cef6 -
Trigger Event:
push
-
Statement type:
File details
Details for the file gsa_calc_mcp-1.0.3-py3-none-any.whl.
File metadata
- Download URL: gsa_calc_mcp-1.0.3-py3-none-any.whl
- Upload date:
- Size: 22.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc4f3ab999d7ac6d1bca76262e8b5dab409479799783de3365e869e8d334cc88
|
|
| MD5 |
5f078883495da00f70548cbbaadf1ba2
|
|
| BLAKE2b-256 |
6b9800d796bbc43b121eb15c00f09ad2a269eac02dd0678f9592c46cb4bf1dbf
|
Provenance
The following attestation bundles were made for gsa_calc_mcp-1.0.3-py3-none-any.whl:
Publisher:
publish-pypi.yml on 1102tools-dev/federal-contracting-mcps
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
gsa_calc_mcp-1.0.3-py3-none-any.whl -
Subject digest:
cc4f3ab999d7ac6d1bca76262e8b5dab409479799783de3365e869e8d334cc88 - Sigstore transparency entry: 2555720728
- Sigstore integration time:
-
Permalink:
1102tools-dev/federal-contracting-mcps@8c0fb8a7aa09abc4c59f03570b183e31ff83cef6 -
Branch / Tag:
refs/tags/v1.0.9 - Owner: https://github.com/1102tools-dev
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@8c0fb8a7aa09abc4c59f03570b183e31ff83cef6 -
Trigger Event:
push
-
Statement type: