sam-gov-mcp
Free, open-source MCP server for SAM.gov entity registration, exclusion/debarment, contract opportunity, contract award, federal hierarchy, and FFATA subaward data.
Two editions: hosted, with 6 keyless tools for contract opportunities, public entity registrations, and exclusions, and local, the full 20 tools with a free SAM.gov key. See Local or hosted.
Regression tests, including live checks against the SAM.gov APIs. The October 2026 releases were also checked with realistic contracting questions against official SAM.gov records. See testing.md.
Local or hosted
SAM.gov comes in two editions. Hosted is the only one with no key.
| Local (full edition) | Hosted | |
|---|---|---|
| Install | On your computer. Give your AI this page's link and ask it to set it up, or start at Installation | Add from the Claude directory (ChatGPT coming soon) |
| API key | Free SAM.gov key, which expires every 90 days | None |
| Tools | 20 | 6 |
| Covers | Opportunities plus entity registrations, SBA certifications, exclusions, reps and certs, integrity records, contract award records, the federal hierarchy, and subawards | Contract opportunities, award notices, justifications, public entity registrations and business/SBA certification codes, and exclusions |
| Data | Live SAM.gov APIs, within your key's daily limit | SAM.gov's public files: opportunities and exclusions daily, entity registrations monthly; source file names and dates accompany results |
| Works in | Claude or ChatGPT desktop apps and other AI apps, on a desktop or laptop | Claude or ChatGPT on web, desktop, and phone |
| Updates | Manual. Local installs don't update themselves. Ask your AI to update them | Automatic. Always runs the latest release |
| Local (desktop) | Claude (hosted) | ChatGPT (hosted) |
|---|---|---|
| Local setup | Install | Coming soon |
Compare local and hosted · Matching prompts
Hosted edition: 6 tools, no key
The hosted edition finds and reads contract opportunities, public entity registrations, and exclusions. It serves copies of the files that SAM.gov publishes for public download, so it needs no API key and no local setup. Opportunities and exclusions are published daily; public entity registrations are published monthly. The service checks opportunities every two hours and public entity and exclusion files every four hours, with an extra check after the usual exclusions publication time. Refreshes remain subject to the existing operating budgets; unchanged files write no rows. The date shown in each result identifies the file actually loaded; publication does not guarantee an immediate refresh. During an unfinished refresh, the affected public tool reports that data is refreshing and asks you to retry.
| Tool | What it does |
|---|---|
search_opportunities |
Search notices by keyword (titles and full descriptions), NAICS, PSC, set-aside, notice type, agency, state, and posted or response dates. Award notices and justifications are notice types. |
get_opportunity |
The full notice: description, contacts, award details, and the sam.gov link |
summarize_opportunities |
Counts by agency, NAICS, set-aside, or notice type |
search_entities |
Look up a public registration by UEI or CAGE, or search by name, NAICS, state, business type / SBA certification code, and active registration status |
search_exclusions |
Check public exclusions by UEI, CAGE, or name |
get_data_status |
Source file names and dates, load times, and row counts for opportunities, entities, and exclusions |
Older notices can appear when they remain active, including notices posted in earlier fiscal years. This is not a complete historical archive; archived notices and attachments are not included (results link to the notice on sam.gov). Pair it with the USAspending MCP for broader award history.
Every entity and exclusion answer includes its source file name and date. Entities that opted out of public display are not included in the hosted public mirror; a missing result does not establish that an entity is unregistered. Confirm current registration status on SAM.gov before relying on a registration result. Exclusion results are a dated public-file check; verify material findings on SAM.gov.
An active registration does not establish current SBA certification. Public 8(a) codes can remain after the recorded certification exit date; check certificationExitDate and confirm current certification with SBA.
Local full edition: when you need more
The full edition has everything in hosted, plus contract awards, subawards, reps and certs, and past terminations and legal proceedings.
The full edition is local only. Give your AI this page's link and ask it to set it up, or start at Installation. It needs your own free SAM.gov key, and that key's daily limit applies; see Authentication.
What it does
Exposes seven SAM.gov REST APIs plus a credential-readiness check as 20 MCP tools:
Entity Management (v3)
lookup_entity_by_uei- Single UEI lookup with configurable response sectionslookup_entity_by_cage- CAGE code lookupsearch_entities- Flexible entity search (NAICS, PSC, business type, state, name, etc.)get_entity_reps_and_certs- FAR/DFARS reps and certs (must be requested explicitly)get_entity_integrity_info- FAPIIS proceedings data
Exclusions (v4)
check_exclusion_by_uei- Single-UEI debarment checksearch_exclusions- Broader exclusion search by name, classification, program, agency, date
Contract Opportunities (v2)
search_opportunities- Search contract opportunities with full working filter setget_opportunity_description- Fetch the HTML description by notice ID
Contract Awards (v1) -- FPDS replacement
search_contract_awards- Search contract award records (vendor, agency, NAICS, dates, dollars, set-aside, etc.)lookup_award_by_piid- Look up all modifications for a single PIIDsearch_deleted_awards- Search deleted award records for audit trails
Federal Hierarchy (v1)
search_federal_organizations- Search the FH for departments, agencies, sub-agencies, offices (filter by FH org id, name, type, status, agency code, CGAC)get_organization_hierarchy- Walk the children of a federal organization
Acquisition Subaward Reporting (FFATA subcontracts)
search_acquisition_subawards- Search FFATA subcontract reports (prime/sub relationships, agency, dates, status)
Assistance Subaward Reporting (FFATA grant subawards)
search_assistance_subawards- Search FFATA grant subaward reports (FAIN, prime award key, agency, dates)
PSC Lookup
lookup_psc_code- Resolve a PSC code to its full recordsearch_psc_free_text- Free-text PSC discovery
Composite workflow
vendor_responsibility_check- One-shot FAR 9.104-1 check (entity + exclusions in a single tool call)
Authentication
Requires a SAM.gov API key set via the SAM_API_KEY environment variable.
Get a free personal API key by signing in and following the Public API Key instructions at SAM.gov Help.
| Account Type | Daily Limit |
|---|---|
| Non-federal, no SAM role | 10/day |
| Non-federal with SAM role | 1,000/day |
| Federal personal | 1,000/day |
| Federal system account | 10,000/day |
Important: SAM.gov API keys expire every 90 days. Use SAM.gov Help to verify or regenerate the key and update your env var. This server returns a clear actionable error on 401/403 with regeneration instructions.
Installation
Via uvx
uvx sam-gov-mcp
Via pip
pip install sam-gov-mcp
From source
git clone https://github.com/1102tools-dev/federal-contracting-mcps.git
cd federal-contracting-mcps/servers/sam-gov-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": {
"sam-gov": {
"command": "uvx",
"args": ["--refresh-package", "sam-gov-mcp", "--from", "sam-gov-mcp", "sam-gov-mcp"],
"env": {
"SAM_API_KEY": "SAM-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}
}
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
Once configured, these examples illustrate the server's advanced standalone use. The maintained MCP-oriented request library contains the broader collection:
- "Run a vendor responsibility check on [UEI] for registration status and exclusions, then pull FAPIIS integrity records separately; the one-pass check does not include those."
- "Pull [COMPANY]'s registration status, socioeconomic categories, and any exclusions. If SAM returns multiple registrations for one UEI, say so and list them before picking one."
- "Get [COMPANY]'s FAR 52.212-3 and DFARS 252.204-7016 answers from their reps and certs (summary mode), and flag anything a contracting officer would want to read in full text."
- "How far back does [COMPANY]'s federal award history actually go? Check contract awards decade by decade, FY1970 forward; volumes thin out before 1980, so read single-digit years as archival traces, not gaps."
- "Find active 8(a)-certified firms (SBA-certified, not self-designated) in [STATE] under NAICS [NAICS]."
- "Search sources sought notices from the last 30 days under NAICS [NAICS], response deadlines sorted soonest first."
- "Show me SDVOSB set-aside solicitations for IT services posted this quarter."
- "Get the full description of notice ID [paste ID] and summarize the SOW."
- "Search exclusions for [NAME]: give me classification (Firm, Individual, Vessel), excluding agency, and whether each record is active."
- "Search contract awards for [COMPANY] in fiscal year 2026, then look up all modifications for the biggest PIID you find."
- "Show me deleted contract award records for Department of Defense this fiscal year."
- "Find the Federal Hierarchy ID for the Department of the Treasury and walk one level of children."
- "Show me FFATA subcontracts on prime PIID [PIID], and total the subaward amounts."
- "Pull all subawards reported under grant FAIN [FAIN]."
- "List the agency-level orgs in CGAC 075 (HHS)."
Design notes
- Authentication via env var only.
SAM_API_KEYis read from the environment on every call. The key never enters the model's conversation context. - 90-day expiration awareness. 401/403 errors are translated into an actionable regeneration message with the current SAM.gov Help link.
- API quirks baked in as safety rails.
- Entity Management hard cap of size=10 is enforced client-side with a clear error
- Exclusions uses
sizenotlimit(different from other SAM endpoints) - Country codes are validated as 3-character ISO alpha-3 (2-char codes return 0 silently)
- No
Accept: application/jsonheader is set (Exclusions returns 406 if present) - Bracket/tilde/exclamation characters are preserved in query strings for multi-value params
- Post-filtering for broken parameters. The Opportunities API silently ignores
deptnameandsubtierfilters.search_opportunitiesexposes anagency_keywordparameter that post-filters results by matchingfullParentPathNamesubstring. - includeSections defaults. Entity lookups default to
entityRegistration,coreData. Always includeentityRegistrationalongside any other section or the response has no identification.repsAndCertsandintegrityInformationrequire explicit tool calls (get_entity_reps_and_certs,get_entity_integrity_info) because evenincludeSections=Alldoesn't include them. - Contract Awards response normalization. The Contract Awards API returns different JSON wrapper shapes for populated vs. empty results. All tools normalize this to a consistent
{"awardSummary": [...], "totalRecords": int}shape. Error responses are plain text (not JSON), detected and raised as actionable errors. - Contract Awards pagination. Uses
limit/offset(NOTpage/sizelike Entity Management). Max limit is 100. Dates must be MM/dd/yyyy format with bracket ranges[MM/dd/yyyy,MM/dd/yyyy]. - Composite workflow.
vendor_responsibility_checkcollapses a typical FAR 9.104-1 check (entity registration + exclusion lookup) into one tool call, returning a structured flags list for downstream reasoning. - Federal Hierarchy quirks baked in.
- Lowercase
totalrecordsandorglistkeys (rest of SAM.gov uses camelCase); normalizer preserves both - Default response is ACTIVE-only; passing
status=ACTIVEis a no-op vs. the unfiltered call. PassINACTIVEto expand to retired orgs - Real
fhorgtypevalues look likeDepartment/Ind. Agency, but the API also accepts shorthand (DEPARTMENT, AGENCY) with case-insensitive matching
- Lowercase
- Subaward Reporting quirks baked in.
- Dates use ISO
yyyy-MM-dd(NOTMM/dd/yyyylike Contract Awards). Mixing them raises a clear pre-network validation error - Pagination uses
pageNumber/pageSize(NOTpage/sizeorlimit/offset) - Live audit (April 2026) found three documented parameter casings are silently ignored:
PIIDis dropped (use lowercasepiid),referencedIdvPIIDis dropped (usereferencedIDVPIID), andreferencedIDVAgencyIDis dropped (usereferencedIDVAgencyId). Wire-level names are now correct in the server
- Dates use ISO
Part of
federal-contracting-mcps: monorepo of 9 MCP servers for federal contracting data. Pair these sources with the MCP prompt library.
License
MIT
Metadata
Release files for sam-gov-mcp 1.0.15
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sam_gov_mcp-1.0.15.tar.gz | 190.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| sam_gov_mcp-1.0.15-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 230.2 kB
Release files / sam_gov_mcp-1.0.15.tar.gz
| Download URL | sam_gov_mcp-1.0.15.tar.gz |
|---|---|
| Size | 190.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
68a7d29da82a56dcf222a053f40e089fc3c86310c523affde3f36481bb0c3897
|
|
BLAKE2b-256 checksum How to use checksums |
70fae3411526f20282f27f9a1396b37cc8c4b9f734f9e2d6f785bfc237668d69
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency logRelease files / sam_gov_mcp-1.0.15-py3-none-any.whl
| Download URL | sam_gov_mcp-1.0.15-py3-none-any.whl |
|---|---|
| Size | 39.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ea637e918097034b3600ab2cda95cedbccafbb254bc0471fd7f4e5906ee1a531
|
|
BLAKE2b-256 checksum How to use checksums |
3d9d59a4a34c6501338a3dbcd0924fba1bc57acde126e80ddcb5b03743ea83f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 15, 2026.
Transparency log