GovContractScout MCP Server

Model Context Protocol (MCP) server exposing the GovContractScout US state & local government contracts API to AI agents. Search live contracts, pull details, look up NAICS codes, list states, and score contract fit โ without raw HTTP.
AI agent (Claude, Cursor, etc.) โ MCP โ GovContractScout /v1 API โ 50-state procurement data
| Tool | Description |
|---|
search_contracts | Search active government contracts by state, NAICS, keyword (returns title, agency, due date, match signals) |
get_contract | Fetch one contract's full record by ID (includes the original solicitation link + documents) |
search_naics | Look up NAICS codes by keyword |
get_states | List the states we index + live contract counts |
score_contract | Score a contract's fit for a business profile (uses /v1/match) |
win_likelihood | Estimate win probability vs the historical award archetype โ derived data, paid |
archetypes | List winning-business archetypes โ who wins what โ derived data, paid |
All tools hit the same /v1 API as the public REST endpoint โ same data, same auth, same rate limits. Live data from state procurement portals, updated daily.
Requirements
- Node.js 18+
- A GovContractScout API key (
gcs_live_...) โ free tier works (100 calls/month); paid tiers for production. Get one at scout.govbidportals.com/api-keys โ instant, no card.
Quickstart
Claude Code
claude mcp add govcontractscout \
--env GCS_API_KEY=gcs_live_YOUR_KEY \
-- npx -y govcontractscout-mcp
Any MCP client (mcp.json / mcp.settings)
{
"mcpServers": {
"govcontractscout": {
"command": "npx",
"args": ["-y", "govcontractscout-mcp"],
"env": {
"GCS_API_KEY": "gcs_live_YOUR_KEY"
}
}
}
}
Manual (from source)
npm install && npm run build
GCS_API_KEY=gcs_live_YOUR_KEY node dist/index.js
Configuration
| Variable | Required | Default | Description |
|---|
GCS_API_KEY | โ
| โ | Your API key from the dashboard |
GOVCONTRACTSCOUT_API_BASE | โ | https://scout.govbidportals.com | API base URL override (self-hosting) |
Example
Ask your agent:
"Find open IT services contracts in California due this month, then score the top one for a 10-person consulting firm with T&M experience."
The agent calls search_contracts (state=CA, naics=IT services), then score_contract โ no HTTP knowledge required from the agent.
Design notes
- Idempotent scoring โ
score_contract sends a deterministic Idempotency-Key, so retries never double-burn quota.
- Same moat as the API โ list/search results deliberately exclude source URLs and raw
source_portal fields (that's the aggregation moat); get_contract detail includes the original solicitation link, exactly as the API does. The MCP exposes what the API exposes.
- Honest coverage โ contracts carry a
data_quality field (level + which fields are populated). Some states have richer data than others; the API tells you exactly what you're getting.
API / pricing
- Free: 100 calls/month, no card
- Starter $99/mo ยท Growth $199/mo ยท annual = 17% off
win_likelihood and archetypes are paid-tier (Starter+) โ the derived-data layer
- Full API docs: scout.govbidportals.com/docs/api
Development
npm run dev
npm run build
npm start
The server is a thin wrapper over the public REST API (/v1/contracts, /v1/contracts/:id, /v1/naics, /v1/states, /v1/match) โ see the API docs for schemas.
License
MIT