npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@cliwant/mcp-sam-gov

v1.16.0

Published

Most comprehensive keyless-first MCP server for US federal + state/local (SLED) contracting + spending + regulation: SAM.gov, USAspending, Federal Register, eCFR, Grants.gov, plus SLED procurement bids (OpenGov, Bonfire, ArcGIS, Socrata 53 hosts). 152 too

Readme

@cliwant/mcp-sam-gov

$4 trillion of public federal data, one npm install away.

The most comprehensive keyless-first MCP server for US federal and state/local (SLED) contracting + spending + regulation + partner vetting. 152 tools across 54 data sources — keyless-first: only 4 sources (Census business-patterns, FRED, BEA, and DOL's data endpoint) need a free key; the other 50 need none. Works today, in any AI agent.

Independent project — not affiliated with, endorsed by, or sponsored by SAM.gov, the U.S. General Services Administration (GSA), or any government agency.

npm mcp-registry Glama score License: MIT Daily smoke Install in VS Code Add to Kiro

English · 한국어 · 日本語


See it in action

👤  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:           Contracting Officer  <[email protected]>  +1-XXX-XXX-XXXX             
   Set-aside:     Total Small Business                                                    
   Attachments:   1   ↓ 36C24526Q0460_1.docx (172 KB)                                     
   SOW preview:   "RFQ# 36C24526Q0460 — Bulk Oxygen Tank Rental, Fill, Telemetry…"        

No API key, registration or signup for 147 of the 152 tools. Just plug it in and ask.


Why this exists

| 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, 152 tools across 54 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.


What this gives Claude (and other AI agents)

| 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 | | 🏙 State/local procurement bids (SLED) | "What's open on this city's/county's procurement portal right now? Their checkbook, awarded contracts, vendor payments; state DOT bid/award registers" | OpenGov Procurement (525+ govs), Bonfire, ArcGIS (feature + Hub), Socrata (54 hosts), one Tableau Server Guest view (Montana), one Socrata Open Expenditures checkbook (South Dakota) | | 🎓 Grants & datasets | "Cybersecurity grants posted in the last 30 days; discover federal open datasets" | Grants.gov, data.gov |

152 tools across 54 data sources — keyless-first: only 4 sources (Census business-patterns, FRED, BEA, and DOL's data endpoint) need a free key; the other 50 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.)


How do I install it? Pick the path that matches you.

🟢 Path 1 — Claude Desktop, one-click (no terminal needed)

Best for non-developers. Just download a file and double-click.

  1. Download mcp-sam-gov.mcpb from the latest release.
  2. Double-click the file. Claude Desktop opens with an "Install Extension" dialog.
  3. Click Install.
  4. Done. Start a new conversation and ask "Find active SAM.gov opportunities under NAICS 541512".

That's it. No PowerShell, no npm, nothing.

Requires Claude Desktop ≥ 1.0 (which ships its own Node.js runtime).

🟡 Path 2 — Claude Code, one command

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 152 tools.

🔵 Path 3 — Manual install for any MCP host (Codex, Cursor, Continue, Gemini)

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.

No global install? Every host config below also has an npx variant (npx -y @cliwant/mcp-sam-gov) that skips the clone and npm install -g. It only needs Node.js.

⚪ Path 4 — Direct path (zero install, just point at the file)

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"]
    }
  }
}

Host configurations

Each host below shows two variants. Use one of them:

  • Global install: "command": "mcp-sam-gov". This works only after npm install -g (Path 3) has put the mcp-sam-gov binary on your PATH.
  • No global install (npx): "command": "npx", "args": ["-y", "@cliwant/mcp-sam-gov"]. This needs only Node.js. npx downloads the package from npm on first run and caches it.

Package name: the npm package is scoped: @cliwant/mcp-sam-gov. mcp-sam-gov is only the name of the binary that a global install puts on your PATH. No unscoped mcp-sam-gov package exists on npm, so npx -y mcp-sam-gov fails with a 404. Use npx -y @cliwant/mcp-sam-gov.

Claude Desktop

%APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

Global install:

{
  "mcpServers": {
    "sam-gov": { "command": "mcp-sam-gov" }
  }
}

No global install (npx):

{
  "mcpServers": {
    "sam-gov": { "command": "npx", "args": ["-y", "@cliwant/mcp-sam-gov"] }
  }
}

On Windows, if the server fails to start with spawn npx ENOENT in %APPDATA%\Claude\logs\mcp*.log, wrap npx in cmd /c:

{
  "mcpServers": {
    "sam-gov": { "command": "cmd", "args": ["/c", "npx", "-y", "@cliwant/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 (152 tools)".

Claude Code

Per-project .mcp.json, global install:

{ "mcpServers": { "sam-gov": { "command": "mcp-sam-gov" } } }

No global install (npx):

{ "mcpServers": { "sam-gov": { "command": "npx", "args": ["-y", "@cliwant/mcp-sam-gov"] } } }

Or with the CLI:

# global install
claude mcp add sam-gov mcp-sam-gov

# no global install (npx)
claude mcp add sam-gov -- npx -y @cliwant/mcp-sam-gov

Codex CLI

~/.codex/config.toml:

Global install:

[mcp_servers.sam-gov]
command = "mcp-sam-gov"
args = []

No global install (npx):

[mcp_servers.sam-gov]
command = "npx"
args = ["-y", "@cliwant/mcp-sam-gov"]

Cursor

Settings → MCP → Add new MCP server. Global install:

{ "mcpServers": { "sam-gov": { "command": "mcp-sam-gov" } } }

No global install (npx):

{ "mcpServers": { "sam-gov": { "command": "npx", "args": ["-y", "@cliwant/mcp-sam-gov"] } } }

Continue

~/.continue/config.json, global install:

{
  "experimental": {
    "modelContextProtocolServer": {
      "transport": { "type": "stdio", "command": "mcp-sam-gov" }
    }
  }
}

No global install (npx):

{
  "experimental": {
    "modelContextProtocolServer": {
      "transport": { "type": "stdio", "command": "npx", "args": ["-y", "@cliwant/mcp-sam-gov"] }
    }
  }
}

Gemini CLI

~/.gemini/settings.json, global install:

{ "mcpServers": { "sam-gov": { "command": "mcp-sam-gov" } } }

No global install (npx):

{ "mcpServers": { "sam-gov": { "command": "npx", "args": ["-y", "@cliwant/mcp-sam-gov"] } } }

VS Code

Add a .vscode/mcp.json at your project root (VS Code uses "servers", not "mcpServers"):

{
  "servers": {
    "sam-gov": {
      "command": "npx",
      "args": ["-y", "@cliwant/mcp-sam-gov"]
    }
  }
}

Or use the one-click badge at the top of this page to install directly from your browser.

Kiro

Use the one-click badge at the top of this page to add the server. Kiro opens an install dialog pre-filled with the npx command.

Anything else

If your host speaks MCP over stdio, point it at mcp-sam-gov (global install) or at npx -y @cliwant/mcp-sam-gov (no global install). No host-specific code.


What questions can I ask?

Once installed, you can ask in natural language. The agent picks the right tool sequence automatically.

Discovery

  • "NAICS 541512 의 메릴랜드 입찰 중 30일 안에 마감되는 것 찾아줘"
  • "Find active SAM.gov solicitations under NAICS 541512, MD only, closing in 30 days"
  • "What's the canonical NAICS code for 'computer systems design'?"

RFP analysis

  • "Pull noticeId 5ef3db5daeb54099a96d487783a38bd0 — give me the SOW, contracting officer, and attachments"
  • "Show me the full RFP body for that notice"

Competitive landscape

  • "Top 5 recipients of VA contracts in NAICS 541519 last fiscal year"
  • "Show me Booz Allen's individual awards at DISA"
  • "Who are the sub-contractors on Leidos' VA contracts?"
  • "What's CMS in USAspending? (resolve the abbreviation)"

Trends & aggregation

  • "How has VA 541512 spending trended over the last 5 fiscal years?"
  • "Top 10 states by federal contracting spend in 541512"
  • "Top PSC categories at DoD by spending"
  • "Federal grant programs in cybersecurity by total $"

Agency intelligence (capture brief)

  • "Give me a capture brief on VA: mission, FY26 budget breakdown, top sub-agencies"
  • "What's VA's transaction volume for FY25?"

Recompete radar

  • "VA 541512 contracts expiring in next 12 months over $1M"
  • "Pull period of performance for award CONT_AWD_..."

Regulatory & legislative

  • "Find FAR sections about SDVOSB set-aside requirements"
  • "Turn this RFP's cited FAR/DFARS clause list into a Section L/M compliance matrix"
  • "What new VA cybersecurity rules were published this quarter?"
  • "Any Federal Register documents on the public-inspection desk from DoD today?"
  • "Search Regulations.gov dockets on 'contractor cybersecurity' and pull the public comments"
  • "Discover federal open datasets about 'wildfire' on data.gov"
  • "Is there a Federal Register doc number 2026-08333? Pull the citation."

Partner & entity vetting

  • "Screen 'Acme Defense LLC' against the OFAC sanctions list and SAM exclusions"
  • "Look up NPI 1234567890 in NPPES — is this provider active?"
  • "Does this subcontractor have adverse Single Audit findings in the Federal Audit Clearinghouse?"
  • "How healthy is the bank on cert #3510 — risk ratios and quarterly financials?"
  • "Pull this public company's revenue trend and latest 10-K from SEC EDGAR"
  • "Any EPA compliance/enforcement flags for this facility?"

Compliance & eligibility

  • "What's the SBA small-business size standard for NAICS 541512?"
  • "Search the eCFR for the exact text of a rule"
  • "What's the US import duty rate (HTS) for lithium-ion batteries?"

Pricing, labor & fiscal

  • "GSA CALC ceiling-rate band for a senior systems analyst"
  • "Find the SCA wage determination for Baltimore County, MD and give me the fringe rates"
  • "How much has CPI-U risen over the last 3 years for an escalation clause?"
  • "What's the current total US public debt (Debt to the Penny)?"

Cyber

  • "Is CVE-2021-44228 (Log4Shell) on the CISA KEV must-patch list, and what's the due date?"

Health & research funding

  • "NIH RePORTER projects on mRNA vaccines funded last year"
  • "Recruiting clinical trials for diabetes sponsored by industry"
  • "Industry payments to physicians in CA from the CMS Open Payments Research dataset"

Grants

  • "Cybersecurity grants posted in the last 30 days"
  • "Pull grant id 361238"

Optional — higher rate limits + archives

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 family

A handful of sources ride the shared api.data.gov gateway — Congress.gov, GovInfo, Regulations.gov, FAC, GSA per-diem, 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.

Keys & higher limits — the full inventory

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, Congress.gov, GovInfo, FAC, 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:

  1. Host env block — the "env": { … } object shown in the examples above.
  2. A .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.


Choosing toolsets (smaller context)

By default all 152 tools load — about 74k tokens per session. Clients that pay the full context cost (Claude Desktop, Cursor, raw API) can cut that significantly by loading only the toolsets relevant to the task.

Set the MCP_SAM_GOV_TOOLSETS environment variable to a comma-separated list of toolset names (case-insensitive). Leave it blank (or set it to all) to restore all tools.

Token counts are approximate, measured as the compact JSON character count of each tools/list entry divided by 4. feedback and api_key_status are always loaded in every profile (they help agents report problems and check key health regardless of which toolset is active).

| Toolset | Tools | Approx tokens | What it covers | |---|---|---|---| | core | 60 | ~17k | SAM.gov discovery/attachments/wage-determinations/exclusions/integrity; Grants.gov; all USAspending; FPDS; GAO; FAR/eCFR/Federal Register; SBA; OFAC screening; GSA labor-rate benchmarks; api_key_status; feedback (always loaded) | | sled | 13 | ~7k | State/local (SLED) procurement: OpenGov, Bonfire, ArcGIS, Socrata, data.gov/CKAN, Tableau, Open Checkbook, search.gov domains | | vetting | 16 | ~10k | Partner due-diligence: FAC, FDIC, EPA ECHO/TRI, CourtListener, nonprofit (IRS 990), Senate LDA lobbying | | disclosure | 8 | ~5k | SEC EDGAR financial filings and XBRL frames | | regulatory | 9 | ~4k | Regulations.gov, Congress.gov, GovInfo | | pricing | 15 | ~9k | GSA per-diem, BLS, Treasury, BEA, Census business-patterns, FRED, DOL, USITC HTS | | health | 17 | ~12k | CMS, NPPES, NIH, NSF, ClinicalTrials.gov, openFDA | | safety | 3 | ~2k | NHTSA vehicle recalls, CPSC consumer-product recalls | | geo | 8 | ~5k | Census geocode, FEMA disasters, NWS alerts, CBP border wait times, data.gov catalog | | cyber | 3 | ~2k | NVD CVE, CISA KEV, NIST SP 800-53 | | all | 152 | ~74k | Everything (default) |

Config examples:

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "sam-gov": {
      "command": "npx",
      "args": ["-y", "@cliwant/mcp-sam-gov"],
      "env": { "MCP_SAM_GOV_TOOLSETS": "core,sled" }
    }
  }
}

Claude Code (command line):

claude mcp add sam-gov -e MCP_SAM_GOV_TOOLSETS=core,sled -- npx -y @cliwant/mcp-sam-gov

Claude Desktop bundle (.mcpb / manifest user_config): set the Toolsets field in the extension settings dialog (blank = all).

If you call a tool that belongs to an unloaded toolset, the server returns a structured tool_not_loaded error naming the toolset and the exact env var to set. The suggested value is the union of your current loaded sets plus the needed set (e.g. MCP_SAM_GOV_TOOLSETS=core,vetting when you have core loaded and call a vetting tool) so your existing profile is not silently dropped. It never silently returns an empty result.


Staying up to date

npm doesn't notify installed users of new versions, so the server does — minimally. On startup it makes one anonymous request to the public npm registry for its own latest version and, only if a newer one exists, prints a single line to stderr (e.g. a newer version is available: 1.7.0 → 1.8.0). It sends no usage data (a version check, not telemetry), never touches the protocol's stdout, is non-blocking, and stays silent when you're current.

  • Update: npm i -g @cliwant/mcp-sam-gov@latest — or just restart if your config uses npx @cliwant/mcp-sam-gov@latest.
  • Opt out: set MCP_SAM_GOV_NO_UPDATE_CHECK=1 (or NO_UPDATE_NOTIFIER=1).
  • What changed: the releases page + CHANGELOG.

Found a bug? Want a feature? Report it in one step

This server is built to improve from real usage. Because an AI agent (not a human) calls the tools, the feedback path runs through the agent:

  • On the two "something may be broken" errors — schema_drift (a federal API changed shape) and upstream_unavailable (an outage) — the error envelope carries a report field: a prefilled GitHub issue link your agent can offer you.
  • Or just tell your agent "report a bug" / "this result looks wrong" / "I wish it could do X" — it calls the feedback tool, which returns a prefilled issue link for you to open and submit.

Nothing is ever posted automatically. The server has no token and no account — it only builds the link; you open and submit it. Prefilled links carry only the tool name, error kind, and server version — never your query values. The repo is public, so redact anything sensitive first.

You can also open one directly: New issue — bug / feature / wrong-output templates.

Tool catalog (152 tools)

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 opportunities
  • sam_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 text
  • sam_fetch_attachment_text — extract attachment text (RFP / SOW / Q&A / wage tables) from PDF + DOCX + text/HTML
  • sam_attachment_url — build the public download URL for an attachment resourceId
  • sam_lookup_organization — federal-organization id → canonical fullParentPathName
  • sam_lookup_notice_fields — batch-fill nulled naics/set-aside/PoP/deadline for 1–100 noticeIds from the opt-in GSA daily CSV
  • grants_search — Grants.gov federal grant opportunities (financial assistance, distinct from SAM contracts)
  • grants_get_opportunity — full detail for a single grant opportunity by id
  • usas_search_awards — aggregate share-of-wallet at agency × NAICS
  • usas_search_individual_awards — line-item federal contracts (returns generatedInternalId)
  • usas_get_award_detail — full award detail: period of performance, options, set-aside, competition
  • usas_search_awards_by_recipient — every contract a recipient won in an agency × NAICS slice
  • usas_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-screened
  • usas_spending_over_time — contract-spending time series (fiscal_year / quarter / month)
  • usas_search_agency_spending — spending broken down by awarding agency
  • usas_search_subagency_spending — break a parent agency down by sub-agency / office
  • usas_search_psc_spending — spending by Product Service Code (PSC)
  • usas_search_cfda_spending — spending by CFDA grant-program code
  • usas_search_state_spending — spending by state / territory
  • usas_search_federal_account_spending — spending by federal account / Treasury Account Symbol (TAS)
  • usas_search_recipients — recipient list with parent/child hierarchy
  • usas_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 year
  • usas_list_toptier_agencies — all toptier agencies + current-FY obligations
  • usas_lookup_agency — resolve 'VA' / 'DHS' → canonical toptier name + 4-digit code
  • usas_autocomplete_naics — anti-hallucination NAICS guard
  • usas_autocomplete_recipient — anti-hallucination recipient guard
  • usas_naics_hierarchy — navigate the NAICS tree (2→4→6) + active-contract count per code
  • usas_glossary — 151 federal-spending terms
  • usas_list_disaster_codes — list Disaster Emergency Fund Codes (DEFC): COVID-19, IIJA/infrastructure, and other emergency-appropriation tags
  • usas_disaster_spending — disaster/emergency-fund spending BY GEOGRAPHY for given DEFCs (which state/county/district captured COVID/IIJA relief money)
  • fpds_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 screening
  • sam_check_exclusions — keyless SAM debarment/exclusion screening by name and/or UEI/CAGE
  • sam_integrity_lookup — one-call integrity screen (exclusion verdict + honest FAPIIS pointer)
  • fac_search_audits — Single Audit summaries from the Federal Audit Clearinghouse
  • fac_get_findings — drill into the audit-RISK findings for an entity
  • fdic_search_institutions — search the FDIC-insured-institution directory
  • fdic_institution_financials — quarterly financial time-series for one institution (by cert #)
  • fdic_risk_ratios — counterparty risk ratios for one institution
  • fdic_institution_history — structural-change event log (mergers, charter changes)
  • fdic_branch_deposits — branch-deposit footprint
  • fdic_bank_failures — historical bank failures & assistance transactions
  • fdic_industry_summary — industry & state banking-sector annual aggregates
  • echo_search_facilities — search EPA-regulated facilities by state with compliance/enforcement screening
  • echo_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)
  • openfda_drug_approvals — openFDA Drugs@FDA drug-approval applications (sponsor, approved products, submission/approval history)
  • nhtsa_recalls — NHTSA vehicle recalls by make / model / year
  • nhtsa_complaints — NHTSA vehicle safety complaints by make / model / year
  • cpsc_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 CIK
  • edgar_company_filings — a company's SEC filings
  • edgar_company_facts — curated XBRL financial facts for a filer
  • edgar_company_concept — one filer × one XBRL concept × the complete reported time-series
  • edgar_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–present
  • edgar_filing_index — bulk cross-filer filing index for a quarter
  • edgar_daily_filing_index — per-day cross-filer filing index
  • fed_register_search_documents — search Federal Register documents by query / agency / type / date
  • fed_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 reference
  • regulations_search_dockets — search Regulations.gov rulemaking dockets
  • regulations_search_documents — search Regulations.gov rulemaking documents (rules, proposed rules, notices)
  • regulations_search_comments — search public comments on rulemakings
  • regulations_get_docket — fetch one Regulations.gov docket by id
  • ecfr_search — full-text search across the entire CFR (titleNumber=48 for FAR); returns ranked snippets + ecfrUrl
  • ecfr_get_section — the FULL text of one CFR section by citation (any title; for FAR/DFARS prefer far_clause_lookup)
  • ecfr_list_titles — all 50 CFR titles + last-amended dates
  • far_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 / legislation
  • congress_get_bill — one bill by congress / type / number
  • govinfo_search_packages — search GovInfo (GPO-authoritative) packages in a collection
  • govinfo_get_package — one GovInfo package summary + download links (txt/xml/pdf/mods)
  • govinfo_list_collections — the GovInfo collection catalog
  • gsa_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 locality
  • sam_get_wage_rates — prevailing-wage + fringe / H&W rate table parsed from a WD, plus the EO minimum-wage floor
  • bls_timeseries — BLS time series (CPI-U / ECI escalation, PPI, employment) — the pricing/escalation layer
  • bls_oews_wages — benchmark occupational wages & employment (BLS OEWS) by area × occupation
  • bls_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 type
  • treasury_monthly_statement — Monthly Treasury Statement: receipts, outlays, deficit/surplus by month
  • treasury_query_dataset — escape-hatch query over 7 confirmed Treasury Fiscal Data datasets
  • bea_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 projects
  • nsf_search_awards — awarded NSF research-grant awards
  • nsf_get_award — one NSF award by its numeric award id
  • clinicaltrials_search_studies — federally-registered clinical studies with sponsor/funder enrichment
  • clinicaltrials_get_study — one clinical study by NCT id (incl. brief summary)
  • clinicaltrials_facet_counts — exact per-value study-count distribution over the whole registry
  • cms_search_datasets — discover CMS Open Payments (Sunshine Act) datasets
  • cms_query_dataset — query a CMS Open Payments datastore distribution (industry→physician payments)
  • nppes_lookup_provider — CMS/HHS NPPES NPI Registry provider lookup
  • cms_medicare_provider_services — Medicare provider utilization & payments (healthcare market sizing)
  • cms_hospital_compare — CMS Hospital Compare quality ratings
  • cms_facility_directory — CMS nursing-home / home-health / hospice / dialysis facility directories
  • cms_dmepos_suppliers — CMS DMEPOS (durable medical equipment) supplier directory + Medicare spend
  • cms_revoked_providers — CMS Medicare revocation / exclusion list (provider compliance vetting)
  • cve_lookup — look up NIST NVD CVE records
  • cisa_kev_lookup — filter the CISA Known Exploited Vulnerabilities catalog (binding BOD 22-01 remediation due-dates)
  • nist_800_53_controls — NIST SP 800-53 Rev 5 security & privacy controls lookup (FedRAMP/CMMC/RMF requirement text by controlId/family/keyword)
  • hts_lookup — US import-tariff classification + duty rates from the USITC Harmonized Tariff Schedule
  • cbp_border_wait_times — live CBP land-border commercial-vehicle wait times (Canadian + Mexican ports; freight/logistics)
  • census_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 geographies
  • fema_disaster_declarations — FEMA disaster / emergency declarations by state, type, incident, year
  • fema_search_public_assistance — FEMA Public Assistance funded projects
  • fema_search_hazard_mitigation — FEMA Hazard Mitigation Assistance projects (HMGP/FMA/PDM/BRIC mitigation grants to state/local/tribal subrecipients; disaster-resilience, distinct from Public Assistance recovery)
  • nws_active_alerts — currently-active NWS weather alerts (watches/warnings/advisories; disaster/climate readiness, pairs with the FEMA tools)
  • socrata_discover_datasets — find Socrata dataset 4x4 ids by keyword
  • socrata_query — query rows from an allowlisted Socrata/SODA open-data portal (54 curated state/county/city + federal hosts — checkbook, contracts, vendor payments, live solicitations across the SLED tier)
  • ckan_discover_datasets — find CKAN datastore resource ids by keyword
  • ckan_query — query rows from an allowlisted CKAN datastore resource (state/city spend/checkbook)
  • opengov_list_governments — directory of 525+ US state/local governments on OpenGov Procurement (filter by state/query)
  • opengov_search_solicitations — a government's live public solicitations (title, status [open = accepting], deadline, portal link) — keyless anonymous endpoints
  • bonfire_list_organizations — curated live-verified 187-org US seed directory of governments on Bonfire (Euna)
  • bonfire_search_opportunities — an org's currently-open opportunities via keyless RSS (referenceNumber, name, closeDate, link); the RSS is the complete open set (exact total)
  • arcgis_hub_discover_datasets — discover ArcGIS Hub datasets by keyword (the SLED GIS/infrastructure/permits/procurement layer Socrata & CKAN don't cover; a discovery aid with publisher surfaced for vetting)
  • arcgis_feature_query — query rows from a curated allowlist of 29 US-gov ArcGIS REST feature layers: DC OCP PASS live solicitations; local-gov checkbooks/contracts; county CIP pipelines (Hennepin County MN, Charlotte-Mecklenburg NC — capital-project pipelines, not solicitation registers); state DOT bid/award registers (TX / AK / IA / OK); 4 North Dakota DOT federal flex-funding award layers (NDDOT funding awards to local public agencies such as counties, townships and cities, not vendor contracts or winning bids; a proxy because ND's statewide checkbook and procurement portal aren't keyless-reachable)
  • tableau_view_csv — fetch a curated US-gov Tableau Server Guest view's complete CSV export (keyless) and page over it; one view today: Montana DOA Contracts Awarded (~4,554 award records; freshness is set by the publisher and can lag)
  • open_checkbook_search — row-level vendor-payment search over a curated Socrata Open Expenditures checkbook portal (keyless; exact-match year/vendor/department/expense-category filters); two portals today: South Dakota (~740,980 payments, only the ~3 most recent fiscal years) and Alaska (41,751 payments, FY2026 only — any other year returns count:0, meaning "not published", not zero spending); freshness is set by the publisher and can lag, so sort by payment_date desc to see the newest date)

State open-data map — also available as an MCP resource (samgov://data-map/state-local, readable by any MCP client via resources/read) and in skills/sam-gov/SKILL.md. Largest verified keyless datasets: Texas DIR cooperative purchase lines 10.7M rows + TxDOT live lettings 412 projects (socrata_query data.texas.gov), Massachusetts CTHRU vendor payments ~49M rows, Virginia eVA PO line items 1.69M rows (ckan_query data.virginia.gov), New Jersey YourMoney 660k rows, Washington contracts + master-contract-sales 325k rows combined. These are state open-data mirrors, not the states' live bid portals (TX TxDOT lettings being the first live solicitation feed). CA, OH, NC, MI, and non-TxDOT TX portals are login/WAF-gated; FL and GA have no state open-data portals (NXDOMAIN); PA's portal carries no procurement datasets.

  • datagov_search_datasets — search the data.gov v4 catalog for federal open datasets across all publishing agencies
  • search_gov_domains — CISA get.gov authoritative .gov domain registry (resolve which org owns a .gov domain; enumerate federal agencies + map SLED entities)
  • sba_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 catalog
  • dol_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)
  • feedback — returns a prefilled GitHub issue link for a bug report or feature request; you open and submit it yourself (the tool never posts anything)

Reliability & offline snapshots

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. 50 of the 54 sources (147 of the 152 tools) work with no API key; Census business-patterns, FRED, BEA and DOL's data endpoint need a free one. 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.


Troubleshooting

| 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) | | spawn npx ENOENT (Windows, npx config) | The host started npx without a shell, so Windows can't find npx.cmd. Use "command": "cmd", "args": ["/c", "npx", "-y", "@cliwant/mcp-sam-gov"]. | | 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. |


Use as a TypeScript / JavaScript library (no MCP)

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.

Privacy Policy

This server runs locally and collects nothing — no telemetry, no analytics, no accounts. Your prompts and results are processed in memory on your machine and are never sent to Cliwant. Each tool calls the relevant official government API directly over HTTPS; optional API keys stay in your local environment and are sent only to that source. See the full Privacy Policy (contact: [email protected]).

License

MIT — see LICENSE.

Disclaimer

This is an independent open-source project. It is not affiliated with, endorsed by, or sponsored by the General Services Administration, SAM.gov, USAspending.gov, the Office of the Federal Register, the National Archives, Grants.gov, or any federal, state, or local government agency. It uses only publicly available government open-data endpoints; federal procurement, spending, and regulation data is in the public domain.