Back to Directory/Developer Tools

io.github.itcustomsolution/sam-gov-mcp

Search SAM.gov contract opportunities (read-only). Bring your own free SAM.gov API key.

Developer ToolsTypeScriptv0.1.3

sam-gov-mcp

An MCP server that lets AI assistants (Claude Desktop, Cursor, and other MCP clients) search SAM.gov contract opportunities through the public SAM.gov Get Opportunities API.

  • Read-only. It only searches and reads public notices.
  • Bring your own key. You supply a free SAM.gov API key in SAM_API_KEY. The key is never logged and is redacted from errors and returned links.
  • No ranking or scoring. It returns what SAM.gov returns, summarized.

Quickstart

  1. Get a free API key: sign in at sam.gov → Account Details → API Key.

  2. Install. Claude Code:

    claude mcp add sam-gov -e SAM_API_KEY=your-key-here -- npx -y @itcustomsolution/sam-gov-mcp
    

    Or run it directly: SAM_API_KEY=your-key-here npx -y @itcustomsolution/sam-gov-mcp

  3. Add it to your MCP client. Claude Desktop (claude_desktop_config.json):

    {
      "mcpServers": {
        "sam-gov": {
          "command": "npx",
          "args": ["-y", "@itcustomsolution/sam-gov-mcp"],
          "env": { "SAM_API_KEY": "your-key-here" }
        }
      }
    }
    
  4. Ask: "Find small-business set-aside opportunities for NAICS 541512 posted in the last 30 days in Maryland."

Tools

ToolWhat it doesInputs
search_opportunitiesSearch noticesposted_from, posted_to (optional, default last 30 days; YYYY-MM-DD or MM/DD/YYYY, max 1-year range), keywords (title), naics, set_aside, state, limit (1–100, default 10), offset
get_opportunityFull JSON for one noticenotice_id (looks back 1 year)
list_set_aside_codesSet-aside codes and meaningsnone

Search results are summarized to: noticeId, title, solicitationNumber, agency, postedDate, responseDeadline, type, setAside, naics, state, uiLink.

Scope and limits

  • SAM.gov requires a posted-date range of 1 year or less on every search; the server validates this before calling the API.
  • Public API keys have daily rate limits set by GSA. Errors from SAM.gov are passed back as tool errors (with the key redacted).
  • Out of scope: entity/UEI lookup, award data, attachments download, bid/no-bid scoring.

Security notes

  • SAM.gov requires the key as an api_key query parameter, so it travels in the request URL to api.sam.gov over HTTPS. The server redacts it from errors, links, and returned JSON, but anything that logs full URLs (an HTTP proxy, for example) would see it.
  • Notice titles and descriptions are third-party text. Treat them as data, not instructions (prompt injection).
  • Responses over 5 MB are refused and requests time out after 30 s.

Development

npm install
npm test        # vitest, HTTP fully mocked, no key needed
npm run build

Never commit a real key. .env is git-ignored.

License

MIT © IT Custom Solution

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y @itcustomsolution/sam-gov-mcp

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-itcustomsolution-sam-gov-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@itcustomsolution/sam-gov-mcp"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

@itcustomsolution/sam-gov-mcpnpm

Compatible MCP Clients

io.github.itcustomsolution/sam-gov-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More