search_grants
Search Grants.gov for funding opportunities.
limitagencystatuskeywordamount_maxamount_min
io.github.bch1212Published by GitHub account bch1212v1.0.3Updated Oct 24, 2026
Search US grants + federal contracts (Grants.gov + SAM.gov) from any LLM.
The publisher's own server: GrantIQ
Remote MCP server that lets an assistant search US federal grants (Grants.gov) and contracts (SAM.gov), match them to an organization, and track deadlines.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.bch1212%2Fmcp-grantiq/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Add this to your client's mcpServers config.
{
"mcpServers": {
"grantiq": {
"type": "http",
"url": "https://mcp.grantiq.us/mcp/",
"headers": {
"X-API-Key": "<YOUR_API_KEY>"
}
}
}
}A paid MCP server that gives AI agents instant, structured access to every open US federal grant and contract opportunity. Backed by Grants.gov + SAM.gov, with 24-hour SQLite caching, per-key daily limits, and a Stripe-friendly upgrade hook.
https://mcp.grantiq.us/mcp/
Title: GrantIQ MCP — US Federal Grants & Contracts for AI Agents
Subtitle: Search, match, and monitor every open SAM.gov and Grants.gov opportunity from any LLM, in one tool call.
GrantIQ MCP turns the messy world of US government funding into a clean, agent-ready API. Eight typed tools cover everything from broad keyword search and NAICS-coded contract discovery to deadline radar and historical award lookups. Responses are normalized across both data sources, returned as plain JSON, and cached for 24 hours so repeat queries don't burn rate limit on the upstream agencies.
Built for procurement copilots, grant-finder agents, and B2G sales tools, GrantIQ MCP ships with a free tier (50 calls/day) that any developer can drop into Claude or Cursor in 15 seconds. Upgrade to Pro for $19/mo for unlimited calls, or pay $0.02 per call for bursty workloads — billing flips a key from free to pro via a single webhook, with no app rewrites required.
Then add the API key Claude should use:
There is no shared public key. Mint one with the admin endpoint below (free tier is 50 calls/day) and store it in the client config or an environment variable.
Every tool returns either:
or, on failure:
When the daily limit is hit, the HTTP layer returns 429 with body:
The MCP endpoint speaks the JSON-RPC streamable-HTTP protocol and is best used through an MCP client. For convenience, every tool also has a REST mirror at /tools/<tool>.
Mint a fresh key (free or pro):
Promote a free key to pro (called from the Stripe checkout success webhook):
The repo includes nixpacks.toml. After railway init, just railway up. The start command is python server.py (not uvicorn ...) because Railway exec's [start].cmd without a shell — server.py reads $PORT via os.getenv and starts uvicorn programmatically.
Set these on the Railway service:
SAM_API_KEY — your SAM.gov key (contract tools fail closed without it)GRANTIQ_ADMIN_TOKEN — long random string, required at startupGRANTIQ_DB_PATH — /data/grantiq.db if you mount a Volume (recommended so cache + keys survive deploys)A ready-to-run deploy.sh is in this directory.
ptype=a (Award Notice). For deeper award analytics (CFDA-level totals, recipient rollups), USAspending.gov is more appropriate and would be a v2 add./admin/keys to mint a key that bypasses cache (not yet exposed — see TODO)./billing/upgrade). The MCP server doesn't host the checkout page itself — that lives on the marketing site.Source: README.md at commit 6dfd8f3
Search Grants.gov for funding opportunities.
limitagencystatuskeywordamount_maxamount_minFetch the full grant record for a Grants.gov opportunity id.
opportunity_idrequiredSearch SAM.gov for federal contract opportunities.
limitagencykeywordset_asidenaics_codeFetch the full SAM.gov contract record for a notice id.
notice_idrequiredReturn the top ~10 grants + contracts matched to an org profile.
org_typefocus_areasorg_descriptionrequiredList agencies with currently-open opportunities.
typeReturn grants whose response deadline is within `days_ahead` days.
days_aheadSearch past SAM.gov contract awards.
yearagencyrecipient_name90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare a license in the repository or the registry entry.
claude mcp add grantiq-mcp --url https://mcp.grantiq.us/mcp/claude mcp env grantiq-mcp X-API-Key=your-api-key{ "success": true, "cached": false, "data": { ... } }{ "success": false, "error": "..." }{ "error": "Limit reached. Upgrade at mcpize.com/grantiq-mcp" }# Search grantscurl -s https://mcp.grantiq.us/tools/search_grants \ -H 'Content-Type: application/json' \ -H 'X-API-Key: your-api-key' \ -d '{"keyword":"renewable energy","limit":5}'
# Get grant detailscurl -s https://mcp.grantiq.us/tools/get_grant_details \ -H 'Content-Type: application/json' \ -H 'X-API-Key: your-api-key' \ -d '{"opportunity_id":"345678"}'
# Search SAM.gov contracts (cyber, small-business set-aside)curl -s https://mcp.grantiq.us/tools/search_contracts \ -H 'Content-Type: application/json' \ -H 'X-API-Key: your-api-key' \ -d '{"keyword":"cybersecurity","set_aside":"SBA","limit":5}'
# Get contract detailscurl -s https://mcp.grantiq.us/tools/get_contract_details \ -H 'Content-Type: application/json' \ -H 'X-API-Key: your-api-key' \ -d '{"notice_id":"abc123"}'
# Match opportunities to an org profilecurl -s https://mcp.grantiq.us/tools/match_opportunities \ -H 'Content-Type: application/json' \ -H 'X-API-Key: your-api-key' \ -d '{"org_description":"Battery storage R&D startup","org_type":"for-profit","focus_areas":["energy","battery","storage"]}'
# Top agencies right nowcurl -s https://mcp.grantiq.us/tools/get_agencies \ -H 'Content-Type: application/json' \ -H 'X-API-Key: your-api-key' \ -d '{"type":"both"}'
# Deadlines in the next 14 dayscurl -s https://mcp.grantiq.us/tools/get_deadlines \ -H 'Content-Type: application/json' \ -H 'X-API-Key: your-api-key' \ -d '{"days_ahead":14}'
# Past award historycurl -s https://mcp.grantiq.us/tools/search_awards \ -H 'Content-Type: application/json' \ -H 'X-API-Key: your-api-key' \ -d '{"recipient_name":"Acme Corp","year":2025}'curl -s https://mcp.grantiq.us/admin/keys \ -H 'X-Admin-Token: $GRANTIQ_ADMIN_TOKEN' \ -H 'Content-Type: application/json' \ -d '{"tier":"free","daily_limit":50}'curl -s https://mcp.grantiq.us/billing/upgrade \ -H 'X-Admin-Token: $GRANTIQ_ADMIN_TOKEN' \ -H 'Content-Type: application/json' \ -d '{"key":"grantiq_xxxxx"}'python -m venv .venv && source .venv/bin/activatepip install -r requirements.txtcp .env.example .env# Replace the placeholders, then export them. The process refuses to start# until GRANTIQ_ADMIN_TOKEN is a real value (not the example placeholder).set -a && source .env && set +apython server.py # http://localhost:8000pytest -v # 31 tests, hermetic with respx mocks