A keyless gateway to $4 trillion in federal procurement data spanning SAM.gov opportunities, USAspending awards, Federal Register notices, eCFR regulations, and Grants.gov listings. Ships 36 tools that let you search active solicitations by NAICS code, pull full RFP packages with contracting officer details, analyze agency spending by PSC category, and query regulations without touching vendor APIs or waiting for credentials. Built-in autocomplete guards prevent LLM hallucinations on agency names and codes. Zero configuration, MIT licensed, and tested daily against live federal endpoints. Reach for this when you're tracking bids, researching recipients, or need to answer questions about federal contracts without a GovWin subscription.
npm install away.The most comprehensive keyless-first MCP server for US federal contracting + spending + regulation + partner vetting. 134 tools across 44 federal data sources — keyless-first: only 4 sources (Census business-patterns, FRED, BEA, and DOL's data endpoint) need a free key; the other 40 sources need none. Works today, in any AI agent.
👤 user Find active SAM.gov solicitations under NAICS 541512 closing this month
🤖 Claude → sam_search_opportunities { ncode: "541512", limit: 5 }
✓ 47,478 active opportunities indexed
• 5ef3db5d… VA Bulk Oxygen Tank Rental closes 2026-05-15 ($1.05M)
• a000339c… Articulating Boom Lifts closes 2026-05-30 ($310K)
• be9c24ef… CMOP Hazardous Waste Removal closes 2026-06-12 ($2.7M)
👤 user Pull the SOW + contracting officer for the first one
🤖 Claude → sam_get_opportunity { noticeId: "5ef3db5d…" }
✓ Department of Veterans Affairs · Combined Synopsis/Solicitation
POC: Rebecca Gobble <rebecca.gobble@va.gov> +1-410-642-2411
Set-aside: Total Small Business
Attachments: 1 ↓ 36C24526Q0460_1.docx (172 KB)
SOW preview: "RFQ# 36C24526Q0460 — Bulk Oxygen Tank Rental, Fill, Telemetry…"
Zero API key. Zero registration. Zero signup. Just plug it in and ask.
| Status quo | With this MCP |
|---|---|
| GovWin: $30K-$100K/yr per seat | Free, MIT license |
| API key registration → wait 24h → quota tier shopping | npm install → working in 60s |
| 5+ separate vendor APIs / scrapers | 1 unified surface, 134 tools across 44 sources |
| LLMs hallucinate NAICS codes / agency names | Anti-hallucination autocomplete guards built-in |
| Brittle scraping breaks weekly | Daily live smoke test (badge above) |
| Procurement officer → IT ticket → 3-week wait | Claude Desktop double-click install |
The federal data this wraps is public domain. There is no good reason it should cost a five-figure subscription to query.
| Domain | What you can ask | Sources |
|---|---|---|
| 🔍 Opportunities & solicitations | "Find SAM.gov solicitations under NAICS 541512 closing this month" — read the SOW, POCs, attachments | SAM.gov, Grants.gov |
| 💰 Spending, awards & competition | "Show me Booz Allen wins at VA last fiscal year; top 10 PSC categories at DoD" | USAspending, FPDS, GAO |
| 🕵️ Entity & partner vetting | "Screen this firm: OFAC sanctions, SAM exclusions, single-audit findings, bank health, EPA compliance + toxics-release" | OFAC, SAM, FAC, FDIC, EPA ECHO, EPA Envirofacts |
| 🛒 Product safety & recalls | "Any FDA/NHTSA/CPSC recalls or enforcement against this supplier's products?" | openFDA, NHTSA, CPSC |
| ⚖️ Litigation & courts | "Any Court of Federal Claims bid protests or Federal Circuit opinions involving this contractor?" | CourtListener (Free Law Project) |
| 🏢 Nonprofit vendors | "Pull this nonprofit's IRS-990 financials before we subcontract to it" | IRS 990 (via ProPublica) |
| 🏥 Healthcare providers & facilities | "Medicare utilization & payments for this provider; hospital quality ratings; is this provider on the revocation list?" | CMS (data.cms.gov) |
| 📈 Financial disclosure (SEC) | "Pull this public company's revenue trend and latest 10-K filings" | SEC EDGAR |
| ⚖️ Regulatory & legislative | "What VA cybersecurity rules were published this quarter? Any open Regulations.gov dockets?" | Federal Register, Regulations.gov, eCFR, FAR/DFARS, Congress.gov, GovInfo |
| 💲 Pricing, labor & fiscal | "GSA CALC labor-rate band for a systems analyst; SCA wage determination for this county; CPI escalation; per-diem cap for a trip; regional GDP by industry; DOL wage-hour enforcement history" | GSA CALC, SAM WDs, BLS, US Census CBP, FRED, BEA, US Treasury, GSA per-diem, US DOL |
| 🏛 Lobbying & influence | "Who lobbies the VA on cybersecurity, and how much do they spend?" | US Senate LDA |
| 🏥 Health & research funding | "NIH/NSF grants on this topic; recruiting clinical trials; industry payments to this physician" | NIH RePORTER, NSF, ClinicalTrials.gov, CMS Open Payments, NPPES |
| 🛡 Cyber compliance | "Is this CVE on the CISA KEV must-patch list?" | NVD, CISA KEV |
| 🌐 Trade, geo & disaster | "HTS tariff for this product; Census tract for this address; FEMA declarations in this state" | USITC HTS, US Census, FEMA, Socrata, CKAN |
| 🎓 Grants & datasets | "Cybersecurity grants posted in the last 30 days; discover federal open datasets" | Grants.gov, data.gov |
134 tools across 44 federal data sources — keyless-first: only 4 sources (Census business-patterns, FRED, BEA, and DOL's data endpoint) need a free key; the other 40 sources need none. (An earlier 52-tool build measured roughly p50 ~0.25s / p95 ~0.8s against production federal APIs; latency varies by source and upstream load — treat it as fast, not a benchmarked guarantee.)
Best for non-developers. Just download a file and double-click.
mcp-sam-gov.mcpb from the latest release.That's it. No PowerShell, no npm, nothing.
Requires Claude Desktop ≥ 1.0 (which ships its own Node.js runtime).
If you already use Claude Code (the CLI):
/plugin install cliwant/mcp-sam-gov
This installs the MCP server plus a SKILL.md workflow guide that teaches Claude when + how to use each of the 134 tools.
For Codex CLI / Cursor / Continue / Gemini CLI / anything that speaks MCP:
gh repo clone cliwant/mcp-sam-gov
cd mcp-sam-gov
npm install --omit=dev
npm install -g .
After install, the binary mcp-sam-gov is on your PATH. Add this to your host config:
{
"mcpServers": {
"sam-gov": {
"command": "mcp-sam-gov"
}
}
}
Specific config locations per host: see Host configurations below.
Skip installation entirely:
gh repo clone cliwant/mcp-sam-gov
cd mcp-sam-gov
npm install --omit=dev # only runtime deps; dist/ is pre-built
Then point your host config at the absolute path:
{
"mcpServers": {
"sam-gov": {
"command": "node",
"args": ["C:\\Users\\you\\mcp-sam-gov\\dist\\server.js"]
}
}
}
%APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"sam-gov": { "command": "mcp-sam-gov" }
}
}
(Or skip this entirely — use Path 1's .mcpb and it auto-configures.)
Restart Claude Desktop fully (system tray quit on Windows / Quit menu on macOS), then look for the 🔨 icon. You should see "sam-gov (134 tools)".
Per-project .mcp.json:
{ "mcpServers": { "sam-gov": { "command": "mcp-sam-gov" } } }
Or globally:
claude mcp add sam-gov mcp-sam-gov
~/.codex/config.toml:
[mcp_servers.sam-gov]
command = "mcp-sam-gov"
args = []
Settings → MCP → Add new MCP server:
{ "mcpServers": { "sam-gov": { "command": "mcp-sam-gov" } } }
~/.continue/config.json:
{
"experimental": {
"modelContextProtocolServer": {
"transport": { "type": "stdio", "command": "mcp-sam-gov" }
}
}
}
~/.gemini/settings.json:
{ "mcpServers": { "sam-gov": { "command": "mcp-sam-gov" } } }
If your host speaks MCP over stdio, point it at mcp-sam-gov. No host-specific code.
Once installed, you can ask in natural language. The agent picks the right tool sequence automatically.
The MCP server runs keyless by default. For higher SAM.gov rate limits + the full archive (notices older than ~12 months), set SAM_GOV_API_KEY in your host's env block:
{
"mcpServers": {
"sam-gov": {
"command": "mcp-sam-gov",
"env": { "SAM_GOV_API_KEY": "your-key-here" }
}
}
}
Get a free key at sam.gov/SAM/pages/public/searchKeyData.jsf. The agent doesn't need to know — the key path is transparent.
DATA_GOV_API_KEY — the api.data.gov / api.gsa.gov familyA handful of sources ride the shared api.data.gov gateway — Congress.gov, GovInfo, Regulations.gov, FAC, NPPES, and the data.gov v4 dataset catalog. They work keyless out of the box via the public DEMO_KEY (a low shared hourly quota). Set DATA_GOV_API_KEY to raise those limits substantially:
{
"mcpServers": {
"sam-gov": {
"command": "mcp-sam-gov",
"env": { "DATA_GOV_API_KEY": "your-key-here" }
}
}
}
Get one free (instant, no wait) at api.data.gov/signup. The same key is accepted across all api.data.gov / api.gsa.gov sources. Like the SAM key, it is sent only on the wire (never logged); unset simply means DEMO_KEY. BLS sources similarly accept an optional free BLS_API_KEY to lift their daily quota.
Most tools are keyless. Four sources require a free key — Census (census_business_patterns), FRED (fred_search_series, fred_series_observations), BEA (bea_regional_data), and DOL's data endpoint (dol_get_dataset) — those sources have no keyless tier, so the tool throws without one. (DOL's catalog dol_list_datasets is keyless.) The other keys are optional: they only raise a rate limit or unlock a single filter. Every key below is free.
| Env var | Required? | What it unlocks | Free signup |
|---|---|---|---|
CENSUS_API_KEY | Required | census_business_patterns (no keyless tier — throws without it) | api.census.gov/data/key_signup.html |
FRED_API_KEY | Required | the 2 FRED tools (no keyless tier — throw without it) | fred.stlouisfed.org/docs/api/api_key.html |
BEA_API_KEY | Required | bea_regional_data (BEA Regional; no keyless tier — throws without it) | apps.bea.gov/API/signup |
DOL_API_KEY | Required for data | dol_get_dataset (DOL enforcement records via X-API-KEY; the dol_list_datasets catalog is keyless) | dol.gov/developer |
DATA_GOV_API_KEY | Optional | higher limits on all api.data.gov sources (Regulations.gov, FAC, NPPES, CMS, data.gov catalog, GSA per-diem) — lifts the shared DEMO_KEY cap | api.data.gov/signup |
SAM_GOV_API_KEY | Optional | authenticated SAM.gov v2 search + the organization-name filter | open.gsa.gov/api/get-opportunities-public-api |
LDA_API_KEY | Optional | higher rate limit on lda_search_filings (Senate LDA lobbying; keyless by default) | lda.senate.gov/api/register |
BLS_API_KEY | Optional | the BLS v2 tier (~500 queries/day vs keyless ~25/day) | data.bls.gov/registrationEngine |
NVD_API_KEY | Optional | a higher NVD rate limit (cve_lookup) | nvd.nist.gov/developers/request-an-api-key |
OPENFDA_API_KEY | Optional | higher openFDA rate limit (openfda_enforcement, openfda_device_clearances; both work keyless) | open.fda.gov/apis/authentication |
COURTLISTENER_API_TOKEN | Optional | higher CourtListener rate limit (courtlistener_search_opinions; works keyless) | courtlistener.com/help/api/rest |
SOCRATA_APP_TOKEN | Optional | higher Socrata throttling limits | evergreen.data.socrata.com/signup |
Two ways to set any key — pick one:
"env": { … } object shown in the examples above..env file in the server's working directory — configure your keys once:
CENSUS_API_KEY=your-key-here
FRED_API_KEY=your-key-here
# optional — raise limits / unlock filters
SAM_GOV_API_KEY=your-key-here
The server auto-loads .env at startup. A real environment variable always wins over .env (standard precedence), and .env is git-ignored so your keys never get committed.Ask the server which keys it needs. The keyless api_key_status tool lists every key, whether it's required or optional, the free signup URL + what it unlocks, and whether each is currently configured (a boolean — the key value is never shown). Creating the account at the signup URL is your one manual step; the server automates discovery (api_key_status) and configuration (.env). To confirm a key actually works, call that source's own tool.
Grouped by workflow. Keyless-first — most tools need no key; Census business-patterns, FRED, BEA, and DOL's data endpoint require a free key, and a handful of others gain higher limits from an optional free key (noted above). Descriptions are condensed — each tool's own inputSchema carries the full contract and honesty caveats.
sam_search_opportunities — keyless HAL search of active SAM.gov contracting opportunitiessam_search_shaping — pre-solicitation radar (Sources Sought / Presol / Special Notices before the RFP exists)sam_get_opportunity — full detail by 32-char hex noticeId (POCs + attachments + body)sam_fetch_description — full RFP body as plain textsam_fetch_attachment_text — extract attachment text (RFP / SOW / Q&A / wage tables) from PDF + DOCX + text/HTMLsam_attachment_url — build the public download URL for an attachment resourceIdsam_lookup_organization — federal-organization id → canonical fullParentPathNamesam_lookup_notice_fields — batch-fill nulled naics/set-aside/PoP/deadline for 1–100 noticeIds from the opt-in GSA daily CSVgrants_search — Grants.gov federal grant opportunities (financial assistance, distinct from SAM contracts)grants_get_opportunity — full detail for a single grant opportunity by idusas_search_awards — aggregate share-of-wallet at agency × NAICSusas_search_individual_awards — line-item federal contracts (returns generatedInternalId)usas_get_award_detail — full award detail: period of performance, options, set-aside, competitionusas_search_awards_by_recipient — every contract a recipient won in an agency × NAICS sliceusas_search_subawards — enumerate subcontracts on prime awards (supply chain / teaming)usas_search_recompetes — recompete radar (PoP ending in a window, soonest-first, no silent drops)usas_search_expiring_contracts — deprecated alias of usas_search_recompetes (legacy shape)usas_analyze_incumbent — per-award incumbent + public recompete-pressure hints (labels, not a score)usas_search_teaming_partners — small-business teaming discovery by cert × NAICS × agency, exclusion-screenedusas_spending_over_time — contract-spending time series (fiscal_year / quarter / month)usas_search_agency_spending — spending broken down by awarding agencyusas_search_subagency_spending — break a parent agency down by sub-agency / officeusas_search_psc_spending — spending by Product Service Code (PSC)usas_search_cfda_spending — spending by CFDA grant-program codeusas_search_state_spending — spending by state / territoryusas_search_federal_account_spending — spending by federal account / Treasury Account Symbol (TAS)usas_search_recipients — recipient list with parent/child hierarchyusas_get_recipient_profile — full recipient detail (UEI, alternate names, totals)usas_get_agency_profile — agency profile by toptier code (mission, abbreviation, website)usas_get_agency_awards_summary — award activity for a fiscal year (transaction count + obligations)usas_get_agency_budget_function — budget-function breakdown for an agency × fiscal yearusas_list_toptier_agencies — all toptier agencies + current-FY obligationsusas_lookup_agency — resolve 'VA' / 'DHS' → canonical toptier name + 4-digit codeusas_autocomplete_naics — anti-hallucination NAICS guardusas_autocomplete_recipient — anti-hallucination recipient guardusas_naics_hierarchy — navigate the NAICS tree (2→4→6) + active-contract count per codeusas_glossary — 151 federal-spending termsfpds_search_awards — FPDS-NG federal contract award actions (the authoritative award-action feed)gao_protest_lookup — recent GAO bid-protest decisions from the public Legal-Products RSS feed (recent window only)ofac_screen_entity — keyless OFAC denied-party / sanctions screeningsam_check_exclusions — keyless SAM debarment/exclusion screening by name and/or UEI/CAGEsam_integrity_lookup — one-call integrity screen (exclusion verdict + honest FAPIIS pointer)fac_search_audits — Single Audit summaries from the Federal Audit Clearinghousefac_get_findings — drill into the audit-RISK findings for an entityfdic_search_institutions — search the FDIC-insured-institution directoryfdic_institution_financials — quarterly financial time-series for one institution (by cert #)fdic_risk_ratios — counterparty risk ratios for one institutionfdic_institution_history — structural-change event log (mergers, charter changes)fdic_branch_deposits — branch-deposit footprintfdic_bank_failures — historical bank failures & assistance transactionsfdic_industry_summary — industry & state banking-sector annual aggregatesecho_search_facilities — search EPA-regulated facilities by state with compliance/enforcement screeningecho_facility_report — EPA ECHO Detailed Facility Report for one facility (by FRS RegistryID)epa_tri_facilities — EPA Envirofacts TRI (Toxics Release Inventory) facilities by state/industry (environmental / ESG vetting)openfda_enforcement — FDA drug / device / food recalls & enforcement actions (product-safety supplier vetting)openfda_device_clearances — FDA 510(k) medical-device clearances (device-maker capability check)nhtsa_recalls — NHTSA vehicle recalls by make / model / yearnhtsa_complaints — NHTSA vehicle safety complaints by make / model / yearcpsc_recalls — CPSC consumer-product recalls (product supplier vetting)courtlistener_search_opinions — US federal court opinions (COFC contract claims / bid protests, Federal Circuit) — data via CourtListener / Free Law Project (disclosed)nonprofit_search — IRS-990 nonprofit search by name / state / NTEE — via ProPublica Nonprofit Explorer (disclosed)nonprofit_financials — IRS-990 nonprofit financials by EIN — via ProPublica Nonprofit Explorer (disclosed)edgar_lookup_cik — resolve a company ticker or name to its 10-digit SEC CIKedgar_company_filings — a company's SEC filingsedgar_company_facts — curated XBRL financial facts for a fileredgar_company_concept — one filer × one XBRL concept × the complete reported time-seriesedgar_xbrl_frames — cross-filer XBRL cross-section (one concept across all filers for a period)edgar_full_text_search — full-text search across EDGAR filings, 2001–presentedgar_filing_index — bulk cross-filer filing index for a quarteredgar_daily_filing_index — per-day cross-filer filing indexfed_register_search_documents — search Federal Register documents by query / agency / type / datefed_register_get_document — full detail for a document by number (citation, body URL, CFR refs)fed_register_public_inspection — the Federal Register public-inspection desk (pre-publication)fed_register_list_agencies — Federal Register agency slugs referenceregulations_search_dockets — search Regulations.gov rulemaking docketsregulations_search_documents — search Regulations.gov rulemaking documents (rules, proposed rules, notices)regulations_search_comments — search public comments on rulemakingsregulations_get_docket — fetch one Regulations.gov docket by idecfr_search — full-text search across the entire CFR (titleNumber=48 for FAR)ecfr_list_titles — all 50 CFR titles + last-amended datesfar_clause_lookup — authoritative FAR/DFARS clause text + its prescription (exact clause number)far_search — FAR/DFARS-scoped search (excludes GSAM, collapses to current in-force version)far_compliance_matrix — cited-clause list → proposal-ready Section L/M compliance matrix (eligibility gates flagged)congress_search_bills — search Congress.gov bills / legislationcongress_get_bill — one bill by congress / type / numbergovinfo_search_packages — search GovInfo (GPO-authoritative) packages in a collectiongovinfo_get_package — one GovInfo package summary + download links (txt/xml/pdf/mods)govinfo_list_collections — the GovInfo collection cataloggsa_benchmark_labor_rates — GSA CALC awarded ceiling-rate market band for a labor category (a distribution, not one price)sam_search_wage_determinations — find SCA / Davis-Bacon wage determinations for a localitysam_get_wage_rates — prevailing-wage + fringe / H&W rate table parsed from a WD, plus the EO minimum-wage floorbls_timeseries — BLS time series (CPI-U / ECI escalation, PPI, employment) — the pricing/escalation layerbls_oews_wages — benchmark occupational wages & employment (BLS OEWS) by area × occupationbls_qcew — county × NAICS market size / wages / location quotient (competition density)treasury_debt_to_penny — daily total US public debt outstanding (Treasury Fiscal Data)treasury_avg_interest_rates — average interest rate the Treasury pays by security typetreasury_monthly_statement — Monthly Treasury Statement: receipts, outlays, deficit/surplus by monthtreasury_query_dataset — escape-hatch query over 5 confirmed Treasury Fiscal Data datasetsbea_regional_data — GDP / personal income by industry × geography (BEA Regional; requires free BEA_API_KEY)census_business_patterns — establishments / employment / annual payroll by NAICS × geography (Census CBP; requires free CENSUS_API_KEY)fred_search_series — search the FRED macroeconomic series catalog (GDP/CPI/rates/unemployment; requires free FRED_API_KEY)fred_series_observations — time-series observations for a FRED series (missing values → null; requires free FRED_API_KEY)gsa_perdiem_rates — federal travel per-diem: monthly lodging + M&IE meals caps by city+state or zip (keyless via DEMO_KEY)nih_reporter_search_projects — awarded NIH RePORTER research-grant projectsnsf_search_awards — awarded NSF research-grant awardsnsf_get_award — one NSF award by its numeric award idclinicaltrials_search_studies — federally-registered clinical studies with sponsor/funder enrichmentclinicaltrials_get_study — one clinical study by NCT id (incl. brief summary)clinicaltrials_facet_counts — exact per-value study-count distribution over the whole registrycms_search_datasets — discover CMS Open Payments (Sunshine Act) datasetscms_query_dataset — query a CMS Open Payments datastore distribution (industry→physician payments)nppes_lookup_provider — CMS/HHS NPPES NPI Registry provider lookupcms_medicare_provider_services — Medicare provider utilization & payments (healthcare market sizing)cms_hospital_compare — CMS Hospital Compare quality ratingscms_facility_directory — CMS nursing-home / home-health / hospice / dialysis facility directoriescms_dmepos_suppliers — CMS DMEPOS (durable medical equipment) supplier directory + Medicare spendcms_revoked_providers — CMS Medicare revocation / exclusion list (provider compliance vetting)cve_lookup — look up NIST NVD CVE recordscisa_kev_lookup — filter the CISA Known Exploited Vulnerabilities catalog (binding BOD 22-01 remediation due-dates)hts_lookup — US import-tariff classification + duty rates from the USITC Harmonized Tariff Schedulecensus_geocode_address — resolve a one-line US address → matched address + Census geographies (tract, CD, place)census_geographies_by_coordinates — resolve a longitude/latitude point → Census geographiesfema_disaster_declarations — FEMA disaster / emergency declarations by state, type, incident, yearfema_search_public_assistance — FEMA Public Assistance funded projectssocrata_discover_datasets — find Socrata dataset 4x4 ids by keywordsocrata_query — query rows from an allowlisted Socrata/SODA open-data portalckan_discover_datasets — find CKAN datastore resource ids by keywordckan_query — query rows from an allowlisted CKAN datastore resource (state/city spend/checkbook)datagov_search_datasets — search the data.gov v4 catalog for federal open datasets across all publishing agenciessba_size_standard — SBA small-business size standard for a 6-digit NAICS (set-aside eligibility gate)dol_list_datasets — browse DOL enforcement/compliance datasets (WHD, OFCCP, …) — keyless catalogdol_get_dataset — fetch DOL enforcement records (WHD wage-hour / OFCCP; requires free DOL_API_KEY)lda_search_filings — Senate lobbying filings: who lobbies which agency, on what issue, for how much (keyless)api_key_status — list which API keys the server can use, required vs optional, signup URLs, and whether each is currently set (value never shown)This server is built around one rule: honest failure over confident fabrication. Everything below is about availability of public data — none of it bypasses access controls.
Keyless-first, and a down source throws. Every source works with no API key. When a source is rate-limited, blocked, or down, the tool returns a typed error (rate_limited / upstream_unavailable / schema_drift / …) — it never invents rows and never reports a DOWN service as "0 results" or "not found". A genuine empty result and an outage are always distinguishable.
Offline snapshots (on by default). Some reference data changes slowly — the toptier-agency list, the top-level NAICS tree, the USAspending glossary, SBA size standards, the latest Treasury "Debt to the Penny." By default, when a live federal source is briefly unreachable from your egress, the server falls back to a public, weekly-refreshed snapshot of that slow-changing reference data, hosted at raw.githubusercontent.com/cliwant/mcp-sam-gov/snapshots. It only fetches on a live hard-failure (an outage / IP-reputation block), never during normal operation — public data, no telemetry. A served snapshot is never presented as live — the response carries _meta.dataPath: "snapshot" plus an asOf timestamp, and complete is forced off, so an AI agent (and you) always see the staleness. A rate limit (429) is always honored, never routed around onto the mirror.
Disable it (pure live-only): set SAMGOV_SNAPSHOT_BASE_URL=off. Then no snapshot path is ever added and behavior is byte-for-byte identical to a live-only client.
Point at your own mirror: set SAMGOV_SNAPSHOT_BASE_URL to your base URL to host the snapshots yourself instead of using the public default.
{ "mcpServers": { "sam-gov": { "command": "mcp-sam-gov",
"env": { "SAMGOV_SNAPSHOT_BASE_URL": "off" } } } }
Build the snapshots: run node scripts/build-snapshots.mjs from any clean, non-blocked egress (a laptop / home / clean CI runner). It self-diagnoses per-source reachability, prints a reachability table, and writes a manifest.json. On partial coverage it refreshes only the sources it can reach and leaves the last-good file in place for the rest (stale-but-honest, never blanked). It exits non-zero only when zero sources were reachable (a fully blocked egress — the signal to re-run from a cleaner one).
The honest boundary. This covers public-data availability only. The snapshot builder ingests only public, redistributable (public-domain / CC0) data, and the reader refuses to serve any envelope not marked accessLevel: "public". It honors rate limits (a 429 is never routed around), uses no proxies, no IP rotation, no auth/paywall/CAPTCHA bypass, and refuses off-host redirects. If a source is blocked, the honest remedy is to build from a cleaner egress — not to evade the block.
| Symptom | Fix |
|---|---|
Claude Desktop 🔨 menu doesn't show sam-gov | Fully quit Claude Desktop (system tray on Windows / Quit menu on macOS) and reopen. Check %APPDATA%\Claude\logs\mcp*.log |
command not found: mcp-sam-gov | Confirm npm install -g . succeeded; check that npm's global bin is on PATH (npm config get prefix) |
MODULE_NOT_FOUND ...dist/server.js after npm install -g github:... | npm bug with git-dep symlinks on Windows. Use the clone + npm install -g . recipe (Path 3) instead. |
EPERM: operation not permitted, rmdir during install | Previous failed install left dangling files. Run rmdir /s /q "%APPDATA%\npm\node_modules\@cliwant" (or @govicon if you installed an early version) then retry. |
npm install fails with "private repo" / 404 | The repo is now public — should not happen. If it does, try git clone https://github.com/cliwant/mcp-sam-gov.git directly. |
| Tools return empty results | SAM.gov rate-limits aggressive callers. Wait 1 minute. Or set SAM_GOV_API_KEY for the higher-rate authenticated path. |
| "Tool error: USAspending POST returned 400" | Usually means a field has a wrong type (e.g. fiscal year as string). Check the tool input schema in your host's tool browser. |
Beyond the MCP server, this package also exports the underlying federal-data clients as importable modules. Useful if you're building your own SaaS, AI agent, or CLI and want programmatic access without spawning an MCP server.
npm install @cliwant/mcp-sam-gov
// SAM.gov client
import { SamGovClient } from "@cliwant/mcp-sam-gov/sam-gov";
const sam = new SamGovClient(); // keyless
const result = await sam.searchOpportunities({ ncode: "541512", limit: 5 });
const opp = await sam.getOpportunity("5ef3db5daeb54099a96d487783a38bd0");
// USAspending wrappers
import * as usas from "@cliwant/mcp-sam-gov/usaspending";
const recompete = await usas.searchExpiringContracts({
agency: "Department of Veterans Affairs",
naics: "541512",
monthsUntilExpiry: 12,
});
const recipient = await usas.getRecipientProfile("ed02855e-60d7-2540-...-P");
// Federal Register / eCFR / Grants.gov
import * as fedreg from "@cliwant/mcp-sam-gov/federal-register";
import * as ecfr from "@cliwant/mcp-sam-gov/ecfr";
import * as grants from "@cliwant/mcp-sam-gov/grants";
const farResults = await ecfr.search({ query: "SDVOSB", titleNumber: 48 });
This is the canonical home for the Cliwant federal-data libraries — there
is no separate library package. Two earlier repos (govicon-sam-gov and
govicon-mcp-sam-gov) have been archived and consolidated here. All
client code lives in src/sam-gov/, src/usaspending.ts,
src/federal-register.ts, src/ecfr.ts, src/grants.ts.
MIT — see LICENSE.
This server uses publicly available federal API endpoints. It is not affiliated with the General Services Administration, SAM.gov, USAspending.gov, the Office of the Federal Register, the National Archives, Grants.gov, or any federal agency. Federal procurement, spending, and regulation data is in the public domain.
SAM_GOV_API_KEYsecretOptional. SAM.gov public API key. Leave unset for keyless mode (default). Set only for higher rate limits + archives older than 12 months.