Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

Grantsgov MCP Server

by cyanheadsversion 0.2.0i★ –iComputer or cloud
Registry nameio.github.cyanheads/grantsgov-mcp-server

Install

Overview

Description from the maker (original English)

Search Grants.gov funding opportunities and read full records: eligibility, awards, deadlines.

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

Install

Pick the AI app you use, then copy the settings.

Before you install

You need

  • Runs in the cloudNothing to install; it connects over the internet
  • npmNode.js installed (for the npx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Works in Claude on the web, desktop and mobile:

  1. Open Settings → Connectors
  2. Press Add custom connector
  3. Paste the address below and press Add
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Add2https://…3
https://grantsgov.caseyjhand.com/mcp

Or run it on your computer

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "grantsgov": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/grantsgov-mcp-server"
      ],
      "env": {
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Run this in your terminal

claude mcp add --transport http grantsgov https://grantsgov.caseyjhand.com/mcp

Or run it on your computer

claude mcp add grantsgov --env MCP_LOG_LEVEL=your-value -- npx -y @cyanheads/grantsgov-mcp-server

Fill in the empty values before running it.

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "grantsgov": {
      "url": "https://grantsgov.caseyjhand.com/mcp"
    }
  }
}

Or run it on your computer

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "grantsgov": {
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/grantsgov-mcp-server"
      ],
      "env": {
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "grantsgov": {
      "type": "http",
      "url": "https://grantsgov.caseyjhand.com/mcp"
    }
  }
}

Or run it on your computer

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "grantsgov": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@cyanheads/grantsgov-mcp-server"
      ],
      "env": {
        "MCP_LOG_LEVEL": "your-value"
      }
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

ChatGPT connects only to servers on the internet:

  1. Open ChatGPT on the web → Settings → Connectors (Apps)
  2. Press Create or Add (some plans need Developer mode under Advanced first)
  3. Paste the address below, give it a name and save
  4. If it asks you to sign in, sign in with the maker
SettingsConnectors1+ Create2https://…3
https://grantsgov.caseyjhand.com/mcp

Menu names can differ slightly by plan and over time.

Your choice stays on this device in a cookie; no account needed.

Values you fill in

  • MCP_LOG_LEVEL env
    Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Tool names and descriptions exactly as the server reported them on Nov 7, 2026. The maker wrote them, not us; we show them as plain text.

  • grantsgov_search_opportunities

    Search federal funding opportunities on Grants.gov by keyword, agency, applicant eligibility, funding category, funding instrument, assistance listing, opportunity number, posting window (posted_within_days), or closing window (closing_within_days). Returns forecasted and posted

  • grantsgov_get_opportunity

    Read the Grants.gov record for up to 5 opportunities, given numeric opportunity ids or opportunity numbers: deadline, funding, eligibility, description, assistance listings, contact, attachments, packages, and latest revision metadata. Lists and narratives are bounded independent

  • grantsgov_list_reference

    List the codes Grants.gov search filters accept, with labels and live opportunity counts: agencies (top level, or one agency's sub-agencies via parent_code, or matched by name via name_contains), applicant eligibility types, funding categories, funding instruments, statuses, sort

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 10, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account cyanheads, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • ✓ Pass

    Endpoint responds

    Responded in 535 ms (HTTP 200)

  • – Not applicable

    Sign-in with OAuth

    No sign-in needed

  • ✓ Pass

    No hidden instructions in tool descriptions

    Read 3 tool descriptions and found no hidden instructions to the AI

Compared with others in Search & AI memoryi

  • More stars than 0% of the other 5832 servers in this category
  • Published to the registry more recently than 72% of the other 5832 servers in this category
  • Basic checks equal to or better than 100% of the other 5832 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is Grantsgov MCP Server safe?

It passed 3 of 3 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

Either way works: install it on your computer or connect to the cloud version.

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.2.0) reached the registry 14 days ago.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.

What can I use instead?

In the same category: Context7, Codebase Memory, Exa

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Context7

Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.

by upstashWidely used↓ 972.7K/wk★ 64.2KUpdated today

Computer or cloud

Codebase Memory

Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.

by DeusDataWidely used↓ 18K/wk★ 48.1KUpdated 23 days ago

Runs on your computer

Exa

Connect AI agents to Exa for web search, content fetching, and multi-step research.

by exa-labsWidely used★ 5.2KUpdated 2 months ago

Runs in the cloud✓ exa.ai

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

@cyanheads/grantsgov-mcp-server Search Grants.gov federal funding opportunities, read full records (eligibility, awards, deadlines, attachments), and decode filter codes via MCP. STDIO or Streamable HTTP. 3 Tools

Public Hosted Server: https://grantsgov.caseyjhand.com/mcp


Overview

US federal funding opportunities from Grants.gov, covering every agency's forecasted, posted, closed, and archived notices. Search by keyword, agency, applicant type, funding category, assistance listing, or deadline window, then read a full record: award range, eligibility, key dates, agency contact, and NOFO attachments. No API key required.

Tools
ToolDescription
grantsgov_search_opportunitiesSearch opportunities by keyword and filters; each row leads with its close date and days left, plus facet counts for narrowing
grantsgov_get_opportunityRead full records for up to 5 opportunities by numeric id or opportunity number
grantsgov_list_referenceList the codes the search filters take (agencies, applicant types, funding categories and instruments), plus statuses, sort options, and keyword syntax

The grantsgov-guide skill covers funding shortlists, eligibility and deadline review, and application requirements. It ships with the package and plugins and is available over MCP as skill://grantsgov-guide/SKILL.md.

Capability reference

grantsgov_search_opportunities tool
  • Filters: keyword, statuses (default forecasted and posted), agencies (a code includes its sub-agencies), eligibilities, funding_categories, funding_instruments, assistance_listing (one ALN), opportunity_number (exact match), posted_within_days, closing_within_days
  • eligibilities also matches opportunities open to any applicant type (code 99) unless include_unrestricted is false
  • Keyword terms are all required; join alternatives with OR, quote phrases, exclude with NOT or -term, and use a trailing * for prefixes. An ungrouped AND/OR mix or a field prefix (agency:NSF) fails as invalid_keyword
  • closing_within_days (0–365) scans posted opportunities by close date; it allows only the posted status and the close_date_asc sort, and posted_within_days rejects closed and archived (filter_conflict). total_count_kind distinguishes exact counts from lower bounds when the scan is incomplete; next_offset reaches only remaining scanned matches
  • Up to 100 rows per page (default 25); limit accepts 1–1,000 and values above 100 are capped with a notice. Offset paging uses next_offset; effective_keyword and applied_filters echo what was sent. Sub-agency facets count each subtree under the current upstream query; include_facets: false drops the facet counts
  • Rows carry close_date_kind (fixed, none_listed, placeholder) and days_until_close, but no award amounts. Unknown codes fail as unknown_agency, unknown_eligibility, or unknown_funding_category

grantsgov_get_opportunity tool
  • Accept up to 50 nonblank entries per identifier list and 50 normalized unique identifiers combined. Read the first 5 identifiers, ids before numbers; deferred_ids, deferred_numbers, and an executable continuation carry the remaining queue with the original section offsets. Numbers resolve across all four statuses; selected aliases fetch a record once per call
  • A miss or a number shared by several opportunities comes back in unresolved[] as not_found or ambiguous (with candidates), not as an error
  • Records carry the close date (an estimate on forecasts, flagged by close_date_is_estimate), award ceiling and floor, total funding, expected awards, cost sharing, applicant types with the eligibility narrative, assistance listings, and the agency contact
  • Funding and eligibility fields come from the synopsis or forecast block matching doc_type, named in money_source; forecasts add forecast_estimates
  • Independent pages: description 12,000 characters, eligibility narrative 6,000, funding-category explanation 2,000, attachments 30, application packages 10, and related opportunities 10. The six zero-based inputs are description_offset, eligibility_offset, funding_category_explanation_offset, attachment_offset, application_package_offset, and related_opportunity_offset (default 0). Each record's pages supplies full totals and executable single-opportunity continuations; partial narratives retain *_truncated, and past-end pages are empty. Attachments include download_url and the unchanged upstream created_date when listed
  • last_revision_note and last_revision_changed summarize the active synopsis or forecast's latest revision when listed. Changed names map to public fields; unknown names keep an upstream: prefix. Missing metadata does not mean nothing changed

grantsgov_list_reference tool
  • topic: agencies, eligibilities, funding_categories, funding_instruments, statuses, sort_options, or keyword_syntax
  • Codes come from a live Grants.gov snapshot, cached for 24 hours and dated by snapshot_date, with open_count (forecasted and posted) and total_count per code (statuses carries total_count only); sort_options and keyword_syntax are static
  • Up to 100 entries per page (default 50); limit accepts 1–1,000 and values above 100 are capped with a notice. Filters apply before paging; continuation preserves the complete next-call arguments
  • A failed refresh can serve expired data with reference_cache disclosing stale status, the failure reason, and retry time. Searches using that vocabulary disclose the same degradation and snapshot timestamp
  • agencies lists the top level by default; parent_code lists every code under one agency, and name_contains matches labels and codes on any topic (for agencies, at every level)
  • parent_code with another topic fails as filter_not_applicable; an unknown code fails as unknown_parent_code

Features

Built on @cyanheads/mcp-ts-core: stdio and Streamable HTTP transports, pluggable auth (none / jwt / oauth), swappable storage (in-memory, filesystem, Supabase, Cloudflare KV/R2/D1), structured logging with optional OpenTelemetry tracing.

Grants.gov-specific:

  • List inputs accept one whole string or an array; blank values and members read as unset. Strings are never split on commas, spaces, or line breaks
  • Keyless client for the Grants.gov REST API (search2, fetchOpportunity), with retries and at most 4 concurrent upstream requests per process
  • Inputs mapped to the form Grants.gov reads as intended: bare keyword terms joined with AND, hyphenated tokens (COVID-19, K-12) matched as phrases, agency codes expanded to their sub-agency subtree, opportunity numbers matched literally, and filter codes checked against the live vocabulary
  • Deadlines counted from today in US Eastern Time, the zone Grants.gov publishes in; far-future stand-in close dates are flagged placeholder rather than reported as deadlines
  • HTML5 entities decoded in human-readable fields; narrative HTML converted to plain text with table cell and row boundaries preserved. In content[], agency prose renders as literal text, identifiers retain code styling, multi-line fields render as blockquotes, and inline text is flattened to one line

Agent-friendly output:

  • Echo of what ran: effective_keyword and applied_filters, including defaulted statuses, the expanded agency filter, and the added code 99
  • Discriminated fields: close_date_kind, doc_type, money_source, and unresolved[].outcome let callers branch on data
  • Empty-result and paging notices that name the next call, such as counts of closed and archived matches when the default statuses found nothing, or the next close date when a closing window is empty
  • Typed failure reasons with recovery hints, including upstream_unavailable, rate_limited, and upstream_route_unavailable for Grants.gov outages

Getting started

Connect to the hosted instance, no install:

claude mcp add --transport http grantsgov-mcp-server https://grantsgov.caseyjhand.com/mcp

Or run it locally:

claude mcp add grantsgov-mcp-server -- npx -y @cyanheads/grantsgov-mcp-server

For other clients, add this to the MCP config file:

{

"mcpServers": { "grantsgov-mcp-server": { "command": "npx", "args": ["-y", "@cyanheads/grantsgov-mcp-server"] } } }

No API key is required. For Docker or a source build, see Running the server.

Configuration

The server reads no configuration of its own: the Grants.gov API is keyless and its endpoints are fixed. These framework variables control transport, auth, and logging.

VariableDescriptionDefault
MCP_TRANSPORT_TYPETransport: stdio or http.stdio
MCP_HTTP_PORTHTTP server port.3010
MCP_SESSION_MODEHTTP session mode: stateless, stateful, or auto. The server declares stateless; set this only to override it.stateless
MCP_AUTH_MODEAuthentication: none, jwt, or oauth.none
MCP_LOG_LEVELLog level (debug, info, warning, error, etc.).info
LOGS_DIRDirectory for log files (Node.js only). /logs
STORAGE_PROVIDER_TYPEStorage backend: in-memory, filesystem, supabase, cloudflare-kv/r2/d1.in-memory
OTEL_ENABLEDEnable OpenTelemetry.false

See .env.example for the full list of optional overrides.

Running the server

Local development

Requires Bun v1.4.0 or higher (or Nod

Only the beginning is shown; read the rest in the repo

Ask PopNx