mcpField
G
grantsgov-mcp-server

grantsgov-mcp-server

リモート
github.com/cyanheads法務・行政22 日前に更新
リポジトリ

grantsgov-mcp-server について

grantsgov-mcp-serverは、Grants.govに掲載された米国連邦政府の助成機会を扱います。APIキーなしで機会の検索、詳細情報の確認、フィルター用コードの参照ができます。

主な機能

  1. 01キーワードと条件による機会の検索
  2. 02応募資格、資金、日程、添付資料の確認
  3. 03機関とフィルター用コードの参照
  4. 04予告、公開中、終了、アーカイブ済みの公募の閲覧

活用シーン

  1. 01機関や申請者区分に合う助成機会の検索
  2. 02申請前の応募資格と助成内容の確認
  3. 03締切が近い公募の把握

MCP 対応

Grants.govの機会検索、詳細レコード取得、参照コード検索ツールをMCPクライアントに公開します。`grantsgov-guide`スキルもMCPリソースとして利用できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://grantsgov.caseyjhand.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

パッケージ
npm@cyanheads/grantsgov-mcp-server0.2.0

ツール

3
パラメーター型必須説明
sortenumいいえ結果の順序:relevance(キーワードの一致度順。キーワードが必要で、指定しない場合は順序不定)、open_date_desc/open_date_asc(掲載日)、close_date_asc/close_date_desc(締切日。昇順では締切日のない項目が最後)、opportunity_number_asc/_desc、agency_asc/_desc。デフォルト:キーワードがある場合は relevance、ない場合は open_date_desc。relevance | open_date_desc | open_date_asc | close_date_asc | close_date_desc | opportunity_number_asc | opportunity_number_desc | agency_asc | agency_desc
limitintegerいいえ1 ページあたりの行数(1~100)。
offsetintegerいいえページング用のゼロ始まりの行オフセットです。前のページの next_offset を使用してください。
keywordstringいいえタイトル、説明、機会番号、機関を対象に全文検索します。裸の語はすべて必須です(rural broadband = rural AND broadband)。選択肢は OR でつなぎ、フレーズは引用符で囲み("mental health")、NOT または -term で除外し、末尾に * を付けて前方一致検索します(broad*)。OR を AND または裸の語と混在させる場合は、括弧でグループ化する必要があります(例: (rural OR tribal) broadband)。グループ化されていない混在は拒否されます。内部にハイフンまたはピリオドを含む単語(COVID-19、K-12)はフレーズとして照合されます。フィールド接頭辞(agency:NSF、cfda:93.866)は拒否されます。代わりに agencies、assistance_listing、またはその他のフィルターを使用してください。grantsgov_list_reference の keyword_syntax トピックを参照してください。
agenciesarrayいいえgrantsgov_list_reference の agencies トピックにある機関コード(例:HHS、HHS-NIH11、NSF)。コードには下位機関も含まれます。大文字と小文字は区別されません。指定した機関のいずれかに一致します。
statusesarrayいいえ含めるライフサイクル状態:forecasted、posted、closed、archived。デフォルト:forecasted と posted。
eligibilitiesarrayいいえgrantsgov_list_reference の eligibilities トピックにある2桁の申請者タイプコード(例:12 = 501(c)(3) ステータスの非営利団体、07 = 連邦政府に認定された部族政府)。文字列または数値で指定できます。1桁の場合はゼロ埋めされます(7 = 07)。指定したタイプのいずれかに一致します。
include_facetsbooleanいいえ各フィルター値のファセット件数を含めます。ページング時は、容量を節約するため false に設定してください。
assistance_listingstringいいえ援助事業番号(ALN、旧称 CFDA)を1つ指定します(例:93.866、93866)。大文字と小文字は問いません。値は1つのみ指定できます。
funding_categoriesarrayいいえgrantsgov_list_reference の funding_categories トピックにある資金カテゴリーコード(例:HL = Health、ED = Education)。大文字と小文字は区別されません。指定したカテゴリーのいずれかに一致します。
opportunity_numberstringいいえ機関が割り当てた正確な機会番号(例:HRSA-27-005)を指定します。大文字と小文字を区別せずに照合し、前後を囲む二重引用符のペアは削除されます。機関間で番号が重複する場合があるため、複数行に一致することがあります。すべての状態を対象に番号を検索するには、grantsgov_get_opportunity で opportunity_numbers を指定することを推奨します。
posted_within_daysintegerいいえ過去 N 日間(1~3650日)に掲載された機会のみを対象にします。forecasted および posted 状態でのみ機能します。
closing_within_daysintegerいいえ米国東部時間の今日から N 日後までに締め切られる掲載済みの機会のみを対象にします(0~365、0 = 本日締切)。掲載済みの機会を締切日順に検索するため、status は posted、sort は close_date_asc のみ指定できます。
funding_instrumentsarrayいいえ資金提供手段:G(grant)、CA(cooperative agreement)、PC(procurement contract)、O(other)。指定した手段のいずれかに一致します。
include_unrestrictedbooleanいいえeligibilities を設定した場合、特定のコードでは対象にならない、すべての申請者タイプに開かれた機会(コード 99)も照合します。列挙したタイプを対象とする機会のみ表示するには false に設定してください。

詳細

@cyanheads/grantsgov-mcp-server

Grants.gov の連邦政府助成金の募集情報を検索し、詳細なレコード(応募資格、助成金、締切、添付ファイル)を読み取り、MCP 経由でフィルターコードを解読します。STDIO または Streamable HTTP に対応しています。

3 個のツール

Version License Docker MCP SDK npm TypeScript Bun

Install in Claude Desktop Install in Cursor Install in VS Code

Framework

公開ホストサーバー: https://grantsgov.caseyjhand.com/mcp


概要

Grants.gov に掲載された米国連邦政府の助成金募集情報を、各省庁の予告済み、公開中、終了済み、アーカイブ済みの告知まで網羅します。キーワード、機関、応募者の種類、助成金カテゴリ、支援プログラム一覧、または締切期間で検索し、助成金の範囲、応募資格、重要な日程、機関の連絡先、NOFO の添付ファイルなど、レコードの全内容を確認できます。API キーは不要です。

ツール
ツール説明
grantsgov_search_opportunitiesキーワードとフィルターで募集情報を検索します。各行には締切日と残り日数が先頭に表示され、絞り込みに利用できるファセット件数も確認できます
grantsgov_get_opportunity数値 ID または募集番号を指定して、最大 5 件の募集情報の詳細なレコードを読み取ります
grantsgov_list_reference検索フィルターで指定できるコード(機関、応募者の種類、助成金カテゴリ、支援手段)に加え、ステータス、並べ替えオプション、キーワード構文を一覧表示します

grantsgov-guide スキルでは、助成金候補の絞り込み、応募資格と締切の確認、申請要件について説明します。このスキルはパッケージとプラグインに含まれており、MCP 経由で skill://grantsgov-guide/SKILL.md として利用できます。

機能リファレンス

grantsgov_search_opportunities ツール
  • フィルター:keyword、statuses(デフォルトは forecasted と posted)、agencies(コードには下位機関も含まれます)、eligibilities、funding_categories、funding_instruments、assistance_listing(ALN を 1 つ指定)、opportunity_number(完全一致)、posted_within_days、closing_within_days
  • eligibilities は、include_unrestricted が false でない限り、あらゆる申請者タイプに開放されている機会(コード 99)にも一致します
  • キーワードの各語句はすべて必須です。選択肢は OR で結び、フレーズは引用符で囲み、NOT または -term で除外し、接頭辞には末尾に * を付けます。グループ化されていない AND/OR の混在やフィールド接頭辞(agency:NSF)は invalid_keyword エラーになります
  • closing_within_days(0~365)は締切日を基準に、掲載中の機会を検索します。このフィルターでは posted ステータスと close_date_asc ソートのみ使用できます。また、posted_within_days では closed と archived が拒否されます(filter_conflict)。total_count_kind は、スキャンが未完了の場合に、正確な件数と下限値を区別します。next_offset で取得できるのは、スキャン済みの残りの一致項目のみです
  • 1 ページあたり最大 100 行(デフォルトは 25 行)です。limit は 1~1,000 を受け付け、100 を超える値は通知とともに 100 に制限されます。オフセットページングには next_offset を使用します。effective_keyword と applied_filters には送信された値が反映されます。下位機関のファセットは、現在の上流クエリのもとで各階層の項目数を集計します。include_facets: false を指定すると、ファセットの件数は省略されます
  • 各行には close_date_kind(fixed、none_listed、placeholder)と days_until_close が含まれますが、助成金額は含まれません。不明なコードは unknown_agency、unknown_eligibility、unknown_funding_category のいずれかのエラーになります

grantsgov_get_opportunity ツール
  • 識別子リストごとに空白でない項目を最大 50 件、正規化後の一意な識別子を合計 50 件まで受け付けます。最初の 5 件の識別子を読み込み、番号より ID を優先します。残りのキューは、元のセクションオフセットとともに deferred_ids、deferred_numbers、および実行可能な continuation に格納されます。番号は 4 つすべてのステータスを対象に解決されます。選択されたエイリアスは、1 回の呼び出しで 1 件のレコードのみ取得します
  • 該当なし、または複数の機会で共有されている番号は、エラーではなく、not_found または ambiguous(candidates を含む)として unresolved[] に返されます
  • レコードには、締切日(予測の場合は推定値で、close_date_is_estimate で示されます)、助成金の上限額と下限額、資金総額、予定採択数、費用分担、適格性の説明とともに申請者タイプ、支援プログラム一覧、機関の連絡先が含まれます
  • 資金提供と適格性に関するフィールドは、doc_type に一致する概要または予測ブロックに由来し、money_source にその種類が示されます。予測には forecast_estimates が追加されます
  • 個別にページ分割される項目:説明は 12,000 文字、適格性の説明は 6,000 文字、資金カテゴリーの説明は 2,000 文字、添付ファイルは 30 件、申請パッケージは 10 件、関連する機会は 10 件です。6 つのゼロベース入力は description_offset、eligibility_offset、funding_category_explanation_offset、attachment_offset、application_package_offset、related_opportunity_offset です(デフォルトは 0)。各レコードの pages には全件数と、単一の機会に対する実行可能な継続情報が含まれます。部分的な説明には *_truncated が保持され、範囲外のページは空になります。添付ファイルには download_url と、掲載されている場合は変更されていない上流の created_date が含まれます
  • last_revision_note と last_revision_changed は、掲載されている場合、現在有効な概要または予測の最新の改訂内容を要約します。変更された名前は公開フィールドに対応付けられ、不明な名前には upstream: 接頭辞が保持されます。メタデータがないからといって、変更がなかったことを意味するわけではありません

grantsgov_list_reference ツール
  • topic:agencies、eligibilities、funding_categories、funding_instruments、statuses、sort_options、または keyword_syntax
  • コードは Grants.gov の最新スナップショットに基づいており、24 時間キャッシュされ、snapshot_date で日付が示されます。各コードには open_count(予測分と掲載済み分)と total_count が含まれます(statuses に含まれるのは total_count のみです)。sort_options と keyword_syntax は固定データです
  • 1 ページあたり最大 100 件(デフォルトは 50 件)です。limit に指定できる値は 1~1,000 で、100 を超える値は通知付きで 100 に制限されます。ページングの前にフィルターが適用されます。continuation は次の呼び出しに必要な引数をすべて保持します
  • 更新に失敗した場合、期限切れのデータを返すことがあります。その際は reference_cache で、古いデータであること、失敗理由、再試行時刻が開示されます。その語彙を使った検索でも、同じ問題とスナップショットのタイムスタンプが開示されます
  • agencies はデフォルトで最上位の機関を一覧表示します。parent_code を指定すると、1 つの機関配下のすべてのコードが一覧表示されます。name_contains はすべてのトピックのラベルとコードに一致します(agencies の場合はすべての階層が対象です)
  • 別のトピックで parent_code を指定すると filter_not_applicable エラーになります。不明なコードを指定すると unknown_parent_code エラーになります

機能

@cyanheads/mcp-ts-core を基盤とし、stdio と Streamable HTTP のトランスポート、差し替え可能な認証(none/jwt/oauth)、交換可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレース機能を備えた構造化ログを提供します。

Grants.gov 固有の機能:

  • リスト形式の入力には、単一の文字列または配列を指定できます。空の値や配列要素は未設定として扱われます。文字列がカンマ、スペース、改行で分割されることはありません
  • Grants.gov REST API(search2、fetchOpportunity)用の API キー不要のクライアントを備え、リトライに対応し、プロセスあたりの同時接続数を最大 4 件に制限します
  • 入力は Grants.gov が意図どおりに解釈する形式に変換されます。キーワード単体は AND で結合され、ハイフン付きトークン(COVID-19、K-12)はフレーズとして照合され、機関コードは下位機関のツリーに展開され、案件番号は文字列どおりに照合され、フィルターコードは最新の語彙と照合されます
  • 締切日は Grants.gov が公開している米国東部時間における今日からの日数で計算されます。はるか先の仮の終了日は締切日として報告せず、placeholder として示されます
  • 人間が読むフィールドの HTML5 エンティティはデコードされます。説明文の HTML は、表のセルと行の境界を保持したままプレーンテキストに変換されます。content[] では、機関の文章はそのままのテキストとして表示され、識別子にはコードの書式が保持され、複数行のフィールドは引用ブロックとして表示され、インラインテキストは 1 行にまとめられます

エージェント向けの出力:

  • 実行内容を示す effective_keyword と applied_filters を返します。デフォルトのステータス、展開された機関フィルター、追加されたコード 99 も含まれます
  • 識別可能なフィールドとして close_date_kind、doc_type、money_source、unresolved[].outcome があり、呼び出し側で条件分岐できます
  • 次の呼び出しを示す空結果とページングの通知を返します。たとえば、デフォルトのステータスで該当がなかった場合は、終了済みおよびアーカイブ済みの一致件数を示し、締切期間内に該当がなかった場合は次の締切日を示します
  • 復旧方法のヒント付きで、型付きの失敗理由を返します。Grants.gov の障害を示す理由には upstream_unavailable、rate_limited、upstream_route_unavailable があります

はじめに

インストール不要のホスト済みインスタンスに接続します。

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

または、ローカルで実行します。

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

その他のクライアントでは、これを MCP 設定ファイルに追加します。

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

API キーは不要です。Docker またはソースからのビルドについては、サーバーの実行をご覧ください。

設定

サーバー独自の設定はありません。Grants.gov API はキー不要で、エンドポイントも固定されています。以下のフレームワーク変数でトランスポート、認証、ログを制御します。

変数説明デフォルト
MCP_TRANSPORT_TYPEトランスポート:stdio または http。stdio
MCP_HTTP_PORTHTTP サーバーのポート。3010
MCP_SESSION_MODEHTTP セッションモード:stateless、stateful、または auto。サーバーは stateless を宣言しています。これを上書きする場合にのみ設定してください。stateless
MCP_AUTH_MODE認証:none、jwt、または oauth。none
MCP_LOG_LEVELログレベル(debug、info、warning、error など)。info
LOGS_DIRログファイルの保存先ディレクトリ(Node.js のみ)。<app-root>/logs
STORAGE_PROVIDER_TYPEストレージバックエンド:in-memory、filesystem、supabase、cloudflare-kv/r2/d1。in-memory
OTEL_ENABLEDOpenTelemetry を有効にします。false

オプションの上書き設定の全一覧は .env.example を参照してください。

サーバーの実行

ローカル開発

Bun v1.4.0 以降(または Node.js v24 以降)と、api.grants.gov へのネットワークアクセスが必要です。

  • クローンとインストール:

    git clone https://github.com/cyanheads/grantsgov-mcp-server.git
    cd grantsgov-mcp-server && bun install
    cp .env.example .env   # optional framework overrides
    
  • 本番バージョンのビルドと実行:

    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:http
    # or
    bun run start:stdio
    
  • チェックとテストの実行:

    bun run devcheck  # Lints, formats, type-checks, and more
    bun run test      # Runs the test suite
    
Docker
docker run --rm -p 3010:3010 ghcr.io/cyanheads/grantsgov-mcp-server:latest

イメージはデフォルトで HTTP トランスポート、ステートレスセッションモードを使用し、/var/log/grantsgov-mcp-server にログを出力します。MCP クライアントから stdio 経由で実行するには、"command": "docker" と "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/grantsgov-mcp-server:latest"] を使用してください。ローカルでビルドするには、docker build -t grantsgov-mcp-server . を実行します。OpenTelemetry のピア依存関係はデフォルトでインストールされます。これらを省略するには、--build-arg OTEL_ENABLED=false を指定してビルドしてください。

プロジェクト構成

ディレクトリ目的
src/index.tscreateApp() のエントリーポイントです。ツールと公開済みスキルを登録し、Grants.gov サービスを開始・破棄します。
src/mcp-server/tools/definitionsツール定義(*.tool.ts)。
src/mcp-server/tools共通入力スキーマ(input-schemas.ts)と format() の描画ヘルパー(render.ts)。
src/services/grants-govGrants.gov API クライアント、キーワードコンパイラー、参照スナップショット、日付と金額の正規化、HTML からテキストへの変換。
tests/src/ に対応する単体テストとツールテスト、および必要最小限の Grants.gov レスポンスフィクスチャ。
skills/連邦政府の資金提供機会を審査するエージェント向けに公開されたガイダンス。
docs/design.md設計メモ:調査した API の動作と、ツール構成に関する判断。

開発ガイド

開発ガイドラインとアーキテクチャ上のルールについては、CLAUDE.md を参照してください。要点は次のとおりです。

  • ハンドラーは例外をスローし、フレームワークが捕捉します。ツールのロジック内で try/catch を使用しないでください
  • ログには ctx.log を使用し、エラーにはツールで宣言されたエラー理由とともに ctx.fail を使用してください
  • 新しいツールは src/mcp-server/tools/definitions/index.ts に登録してください
  • 外部 API 呼び出しはラップしてください。生データを検証 → ドメイン型に正規化 → 出力スキーマを返す、という順序にし、不足しているフィールドを捏造しないでください

貢献

課題の報告を歓迎します。提出前にチェックとテストを実行してください。

bun run devcheck
bun run test

データソース

募集機会のデータは、連邦政府機関が資金提供の機会を掲載する Grants.gov から取得しています。記録は米国政府の著作物です。このプロジェクトは Grants.gov またはいかなる連邦政府機関とも提携しておらず、承認も受けていません。

ライセンス

このプロジェクトは Apache 2.0 License の下でライセンスされています。詳細については LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。