reliefweb-mcp-server について
reliefweb-mcp-serverは、人道支援の研究者や対応担当者向けに、OCHAのReliefWebから報告書、災害、国別プロフィール、求人、研修情報を提供します。検索に加えて詳細取得や危機ブリーフィング用プロンプトを利用できます。
主な機能
- 01報告書と災害の検索
- 02国・災害プロフィールの取得
- 03人道支援の求人と研修の検索
- 04情報提供組織の閲覧
- 05全記録と添付ファイルの取得
活用シーン
- 01国や災害のブリーフィング作成
- 02募集中の人道支援求人の検索
- 03場所や形式別の研修比較
- 04報告書の全文とファイルの取得
MCP 対応
STDIOまたはStreamable HTTP経由で、MCPクライアントに11個のツール、3個のリソース、1個のプロンプト、付属スキルを公開します。公開ホストサーバーも利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://reliefweb.caseyjhand.com/mcpclaude mcp add --transport http cyanheads-reliefweb https://reliefweb.caseyjhand.com/mcp{"mcpServers":{"cyanheads-reliefweb":{"type":"http","url":"https://reliefweb.caseyjhand.com/mcp"}}}Cursor で開く{"servers":{"cyanheads-reliefweb":{"type":"http","url":"https://reliefweb.caseyjhand.com/mcp"}}}VS Code で開く{"mcpServers":{"cyanheads-reliefweb":{"type":"http","url":"https://reliefweb.caseyjhand.com/mcp"}}}{"mcpServers":{"cyanheads-reliefweb":{"serverUrl":"https://reliefweb.caseyjhand.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
11| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| sort | string | いいえ | 並べ替え順。新しい順は date.original:desc(デフォルト)、古い順は date.original:asc、関連度順は score:desc を使用します。 |
| text | string | いいえ | 全文検索クエリ。タイトル、本文、主要なメタデータフィールドを対象に検索します。自然言語またはキーワードを使用します。 |
| limit | integer | いいえ | 返す結果の数(1~1000、デフォルトは 10)。対象を絞った検索には小さい値を、まとめて調査する場合は大きい値を指定します。各呼び出しは 1 日あたり 1,000 回の上限にカウントされます。 |
| theme | string | いいえ | セクターまたは分野横断的なテーマ(例:Health、Food and Nutrition、Shelter and Non-Food Items、Protection)。自由入力で、ReliefWeb の表記どおりの theme.name に一致します。 |
| filter | object | いいえ | 名前付きパラメーターで指定できない複合条件に使う、ReliefWeb の生フィルターオブジェクト。例:{"operator": "AND", "conditions": [{"field": "format.name", "value": "Map"}, {"field": "language.code", "value": "fr"}]}。 |
| format | string | いいえ | コンテンツ形式のフィルター。指定可能な値:News and Press Release、Situation Report、Map、Infographic、Analysis、Other、Assessment、Manual and Guideline、Appeal、UN Document、Evaluation and Lessons Learned。大文字・小文字、空白、句読点は無視されます。それ以外の値は有効な値の一覧とともに拒否されます。 |
| offset | integer | いいえ | 0 始まりのページネーションオフセット。limit および補足フィールド totalCount と併用して、大きな結果セットをページ単位で取得します。 |
| source | string | いいえ | 組織の略称(例:UNHCR、OCHA、WFP)。source.shortname で絞り込みます。 |
| country | string | いいえ | ISO 3166-1 alpha-3 の国コード(例:SYR、AFG、UKR)。この国がタグ付けされたコンテンツに絞り込みます。 |
| date_to | any | いいえ | 公開日の上限。date_from と組み合わせて日付範囲を指定します。日付のみの場合は UTC の当日末として解釈され、その日全体が範囲に含まれます。オフセット付きの日時は UTC に変換されます。 |
| language | string | いいえ | ISO 639-1 の言語コード(例:en、fr、es、ar)。language.code で絞り込みます。 |
| date_from | any | いいえ | 公開日の下限。date.original(発行元の公開日)で絞り込みます。2024-01-15 のような日付のみの値を受け付け、UTC の当日開始として解釈します。オフセット付きの日時は UTC に変換されます。 |
| disaster_id | integer | いいえ | ReliefWeb の数値災害 ID。特定の災害に関連付けられたレポートに絞り込みます。ID は reliefweb_search_disasters で取得します。 |
| include_archived | boolean | いいえ | レポートには影響しません。レポートにはアーカイブ区分がなく、この設定にかかわらずすべてのレポートが対象です。このパラメーターを渡す既存の呼び出しを引き続き機能させるために残されています。reliefweb_search_jobs、reliefweb_search_training、reliefweb_search_disasters では有効です。 |
詳細
翻訳後に原文が更新されています。最新の内容は原文をご確認ください。
@cyanheads/reliefweb-mcp-server
MCP を介して、ReliefWeb の人道支援レポート、災害、求人、研修、国別プロフィールを検索できます。STDIO または Streamable HTTP に対応しています。
公開ホストサーバー: https://reliefweb.caseyjhand.com/mcp
概要
危機対応に関するOCHAの情報ハブであるReliefWebから、人道支援レポート、災害、求人、研修機会、国別プロフィールを取得できます。任意のMCPクライアントから、ReliefWebの6種類すべてのコンテンツを検索、取得し、ページを移動できます。stdioプロセス、ローカルのStreamable HTTPサーバー、または上記の公開ホストエンドポイントとして実行できます。
ツール
| ツール | 説明 |
|---|---|
reliefweb_search_reports | 国、災害、形式、テーマ、言語、情報源、日付で絞り込んで人道支援レポートを検索します |
reliefweb_get_report | 数値 ID を指定して単一のレポートを取得します。本文全体とメタデータが含まれます |
reliefweb_search_disasters | 種類、国、ステータス、GLIDE 番号、期間で災害を検索します |
reliefweb_get_disaster | プロファイル、主要なコンテンツへのリンク、支援要請、対応計画を含む災害記録を取得します |
reliefweb_get_country | ISO3 コードを指定して国のプロファイルを取得します。概要、支援要請、厳選されたリンクが含まれます |
reliefweb_list_countries | ReliefWeb が追跡するすべての国を一覧表示します。現在、人道危機が発生している国に絞り込めます |
reliefweb_search_jobs | 国、組織、職種カテゴリ、経験レベルで人道支援関連の求人を検索します |
reliefweb_get_job | 数値 ID を指定して求人情報を取得します。募集内容全体と応募方法が含まれます |
reliefweb_search_training | 形式、国、職種カテゴリ、日付で研修・学習機会を検索します。デフォルトでは、開始予定の機会が対象です |
reliefweb_get_training | 数値 ID を指定して研修情報を取得します。説明全体、登録方法、費用の詳細が含まれます |
reliefweb_list_sources | 名前と種類で情報提供組織を参照します |
リソース
| リソース | 説明 |
|---|---|
reliefweb://reports/{id} | 数値 ID でレポート記録全体を取得します。メタデータ、本文、ファイル URL が含まれます。ID 部分には数字のみを指定してください |
reliefweb://disasters/{id} | 数値 ID で災害記録を取得します。種類、ステータス、GLIDE、説明、コンテンツへのリンクが含まれます。ID 部分には数字のみを指定してください |
reliefweb://countries/{iso3} | ISO3 コードで国のプロファイルを取得します。概要、状況の要約、進行中の対応計画が含まれます |
プロンプト
| プロンプト | 説明 |
|---|---|
reliefweb_crisis_briefing | 国または災害について、構造化された人道支援ブリーフィングを生成します |
機能リファレンス
reliefweb_search_reports tool
- 全文検索クエリとフィルターに対応します。国(ISO3)、災害 ID、形式、テーマ、言語(ISO 639-1)、情報源の略称で絞り込めます
- 情報源の公開日(
date_from/date_to)で期間を指定できます。完全な ISO 8601 形式に加え、2024-01-15のような日付だけの形式も使用できます - 形式は固定の選択肢です:
News and Press Release、Situation Report、Map、Infographic、Analysis、Other、Assessment、Manual and Guideline、Appeal、UN Document、Evaluation and Lessons Learned— 大文字・小文字、空白、句読点を区別せずに照合します。それ以外の値は選択肢の一覧とともに拒否されます - 名前付きパラメーターでは指定できない複合条件には、生の
filterオブジェクトを使用できます offset/limitによるページネーションに対応し、1 回の呼び出しで最大 1,000 件まで取得できます(デフォルトは 10 件)- レポートにはアーカイブ区分がないため、
include_archivedは効果がありません。すべてのレポートがすでに検索対象です
reliefweb_get_report tool
- 本文の HTML 全体、すべてのメタデータ、添付ファイルの URL を取得します
- コンテンツを取得するには
reliefweb_search_reportsの後に使用してください。本文のサイズは 10~100KB です - 応答の予算を超える場合は、代わりにセクションの概要を返します。本文のみを取得するには
sections: ["body"]を指定します - ID が存在しない場合は、構造化された
not_foundを返します
reliefweb_search_disasters tool
- 災害の種類、国、ステータス、GLIDE 番号で絞り込み、システム間の相関を確認できます
- 災害の作成日(
date_from/date_to)で期間を指定できます。完全な ISO 8601 形式に加え、2024-01-15のような日付だけの形式も使用できます - ステータスは固定の選択肢です:
alert、ongoing、past、alert-archive。複数の値はカンマ区切りで指定でき、大文字・小文字、空白、句読点を区別せずに照合します alert-archiveを取得するにはinclude_archived=trueが必要です。デフォルトのプリセットでは除外されますoffset/limitによるページネーションに対応し、1 回の呼び出しで最大 1,000 件まで取得できます(デフォルトは 10 件)reliefweb_get_disasterで使用する ID と、reliefweb_search_reportsのdisaster_idフィルターに使用する ID を返します
reliefweb_get_disaster ツール
- 詳細な説明、プロフィールの概要、被災国、GLIDE 番号
- 厳選された 3 つのリスト —
keyContent、appealsResponsePlans、usefulLinks— は、それぞれ現在有効な項目のみを返します。アーカイブ済みの項目はarchive: { list: <name> }でページングできます - 大規模な災害の情報量は数十 KB に達します。レスポンスの予算を超える場合、レコードはセクションの概要に切り替わります。
sections: ["description"]または["profileOverview"]を指定すると、説明を一度に 1 つずつ取得できます sectionsとarchiveは相互に排他的なモードです。両方を指定した呼び出しは拒否されます- ID が存在しない場合、構造化された
not_foundを返します
reliefweb_get_country ツール
- OCHA の編集者がまとめた状況の概要テキスト
- 厳選された 3 つのリスト —
keyContent、appealsResponsePlans、usefulLinks— は、それぞれ現在有効な項目のみを返します。アーカイブ済みの項目(長期化した危機では数千件に及ぶ場合があります)は、archive: { list: <name> }でページングできます sectionsとarchiveは相互に排他的なモードです。両方を指定した呼び出しは拒否されます- 他の詳細ツールと同じセクション概要の動作を備えていますが、有効な項目のみを含むプロフィールは小さいため、予算に達することはほとんどありません
- 有効な ISO3 コードを確認するには、
reliefweb_list_countriesを使用します - 不明な ISO3 コードに対して、構造化された
not_foundを返します
reliefweb_list_countries ツール
- 有効な人道的状況(ステータスが ongoing)のみに絞り込むには、任意で
crisis_only=trueを指定します - ISO3 コード、ステータス、正式な URL を返します。
reliefweb_get_countryでは ISO3 コードを使用します - 1 回の呼び出しで最大 1,000 件までページングできます(デフォルトは 100 件)
reliefweb_search_jobs ツール
- 国、組織の短縮名、職種カテゴリー、テーマ、経験レベルで絞り込めます
- デフォルトでは現在募集中の求人を返します。
include_archived=trueを指定すると、募集中の求人よりはるかに件数の多い、募集終了済みのアーカイブも検索できます - 新しい求人順(
date.created:desc、デフォルト)または締切が近い順(date.closing:asc)で並べ替えられます offset/limitでページングできます。1 回の呼び出しで最大 1,000 件まで指定できます(デフォルトは 10 件)reliefweb_get_job用の ID を返します
reliefweb_get_job ツール
- 求人の詳細な説明と応募方法を返します。どちらも検索結果には含まれません
- 募集状況、掲載日/締切日/最終更新日、採用組織、対象国、職種カテゴリー、経験レベル、雇用形態
- 正式な URL を両方返します(読みやすいエイリアスとノード URL)
- 募集中の求人だけでなく、期限切れの求人も取得できます
- レスポンスの予算を超える場合、セクションの概要を返します。
sections: ["howToApply"]を指定すると、説明全体を取得せずに応募方法を取得できます reliefweb_search_jobsを参照する構造化されたnot_foundを返します
reliefweb_search_training ツール
- 国、情報源、形式(
on-siteまたはonline)、職種カテゴリー、言語で絞り込めます - 研修開始日の期間(
date_start_from/date_start_to)で絞り込めます。2024-06-01のような日付だけの形式は、完全な ISO 8601 形式と併用できます - どちらの日付境界も指定しない場合は、現在以降に開始する研修が対象です。明示的な期間を指定するには、過去の期間を含め、いずれか一方の日付境界を指定します
include_archived=trueを指定すると、終了済みの研修も検索対象になり、開始日を現在以降に限定するデフォルトも解除されます。そのため、他に条件を指定しない検索では全レコードが対象になります- デフォルトでは開始日が早い順(
date.start:asc。レポートの日付フィールドとは異なります)に並びます。sortで変更できます reliefweb_get_training用の ID を返します
reliefweb_get_training ツール
- 完全な説明と登録手順を返します。どちらも検索結果には含まれません
- 費用区分、主催者の料金詳細、主催者独自のイベント URL
- 掲載状況、開始日/終了日/登録日/インデックス登録日、開催都市、形式、種類、掲載言語と提供言語、主催者の情報源、両方の正規 URL
- 終了した掲載情報と現在の掲載情報の両方を対象にします
- 応答の予算を超える場合はセクションの概要を返します。実用的な情報だけを取得するには、
sections: ["cost", "feeInformation", "howToRegister"]を指定します reliefweb_search_trainingを参照する構造化されたnot_foundを返します
reliefweb_list_sources ツール
- 名前のテキストまたは組織の
typeで任意に絞り込めます:Government、International Organization、Non-governmental Organization、Academic and Research Institution、Media、Red Cross/Red Crescent Movement、Other - 短縮名、種類、組織の URL、ホームページ URL を返します
offset/limitでページネーションできます。1 回の呼び出しあたり最大 1,000 件です(既定値は 10 件)reliefweb_search_reports、reliefweb_search_jobs、reliefweb_search_trainingのsourceフィルターにはshortnameを使用します
reliefweb://reports/{id} リソース
application/json形式のレポート全レコード。メタデータ、本文テキスト、ファイル URL を含みますidは数字のみで、検索結果に返された値と完全に一致する必要があります- 常にレコード全体を返します。セクションの選択はできません。サイズの大きいレポートには
reliefweb_get_reportを使用してください
reliefweb://disasters/{id} リソース
application/json形式の災害レコード。種類、状況、GLIDE、説明、キュレーションされたコンテンツへのリンクを含みますidは数字のみで、検索結果に返された値と完全に一致する必要があります- 常にレコード全体を返します。セクションの選択はできません。サイズの大きい災害情報やアーカイブのページネーションには
reliefweb_get_disasterを使用してください
reliefweb://countries/{iso3} リソース
application/json形式の国別プロフィール。概要、状況の要約、進行中の対応計画を含みますreliefweb_get_countryの呼び出しと同等ですiso3は 3 文字の ISO 3166-1 alpha-3 コードである必要があります
reliefweb_crisis_briefing プロンプト
- 引数:
country_or_disasterは必須(名称、ISO3 コード、または GLIDE 番号)、focusは任意 —situation、jobs、またはfull(既定値) - ReliefWeb ツールでデータを収集した後、レポートのタイトルと日付を引用してブリーフィングをまとめるようエージェントに指示するユーザーメッセージを 1 つ返します
機能
@cyanheads/mcp-ts-core を基盤として構築されています。stdio および Streamable HTTP トランスポート、切り替え可能な認証(none/jwt/oauth)、切り替え可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレースに対応した構造化ログを備えています。
ReliefWeb 固有の機能:
- ReliefWeb の 6 種類すべてのコンテンツ(レポート、災害、国、求人、トレーニング、情報源)を網羅
- ReliefWeb API v2 用の、ネストされた AND/OR 条件に対応した複合フィルタービルダー
formatおよびstatusフィルターの語彙照合では、ReliefWeb の表記との完全一致を要求せず、大文字・小文字、空白、句読点を正規化しますRELIEFWEB_APP_NAMEは起動時に検証されます。2025 年 11 月以降、API で必須です- API の 1 日あたり 1,000 回の呼び出し上限を、各検索ツールおよび一覧表示ツールの上流エラー復旧メッセージで通知します
エージェントに適した出力:
- 検索結果には設計上、本文テキストを含めません。エージェントはコンテキストの予算を管理するため、対応する
reliefweb_get_*ツールで明示的に取得します - サイズの大きいレコードは切り詰めずに概要を返し、必要な情報だけを取得するセクションセレクターを備えています
- キュレーションされたプロフィールのアーカイブは省略せずページ分割し、正確な合計件数と、続きがある場合は次のオフセットを返します
- 型付きの
not_foundエラー契約と、適用したフィルターを表示し条件を広げる方法を提案する空の結果通知
はじめに
前提条件
- Bun v1.3.2 以降。
- 事前承認済みの ReliefWeb appname — ReliefWeb API に登録し、
RELIEFWEB_APP_NAMEを設定してください。API では 2025 年 11 月以降、事前承認済みの appname が必須です。appname を指定しないリクエストは拒否されます。
公開ホストインスタンス
https://reliefweb.caseyjhand.com/mcp で公開インスタンスを利用できます。インストールは不要です。Streamable HTTP を介して、任意の MCP クライアントを接続してください。
{
"mcpServers": {
"reliefweb-mcp-server": {
"type": "streamable-http",
"url": "https://reliefweb.caseyjhand.com/mcp"
}
}
}
セルフホスト/ローカル
MCP クライアントの設定ファイルに以下を追加してください。
{
"mcpServers": {
"reliefweb-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/reliefweb-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info",
"RELIEFWEB_APP_NAME": "your-app-name"
}
}
}
}
または npx を使用します(Bun は不要です)。
{
"mcpServers": {
"reliefweb-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/reliefweb-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info",
"RELIEFWEB_APP_NAME": "your-app-name"
}
}
}
}
または Docker を使用します。
{
"mcpServers": {
"reliefweb-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "MCP_TRANSPORT_TYPE=stdio",
"-e", "RELIEFWEB_APP_NAME=your-app-name",
"ghcr.io/cyanheads/reliefweb-mcp-server:latest"
]
}
}
}
Streamable HTTP を使用する場合は、トランスポートを設定してサーバーを起動してください。
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 RELIEFWEB_APP_NAME=your-app-name bun run start:http
# Server listens at http://localhost:3010/mcp
インストール
- リポジトリをクローンします。
git clone https://github.com/cyanheads/reliefweb-mcp-server.git
- ディレクトリに移動します。
cd reliefweb-mcp-server
- 依存関係をインストールします。
bun install
- 環境を設定します。
cp .env.example .env
# edit .env and set RELIEFWEB_APP_NAME
設定
| 変数 | 説明 | デフォルト |
|---|---|---|
RELIEFWEB_APP_NAME | 必須。 ReliefWeb API v2 用の事前承認済み appname です。reliefweb.int/help/api で登録してください。 | — |
MCP_TRANSPORT_TYPE | トランスポート:stdio または http | stdio |
MCP_HTTP_PORT | HTTP サーバーのポート | 3010 |
MCP_HTTP_ENDPOINT_PATH | MCP サーバーがマウントされる HTTP エンドポイントのパス | /mcp |
MCP_PUBLIC_URL | TLS を終端するリバースプロキシ環境でのパブリックオリジンの上書き値 | なし |
MCP_AUTH_MODE | 認証:none、jwt、または oauth | none |
MCP_SESSION_MODE | HTTP セッションの処理:stateless、stateful、または auto(stateful に解決されます)。サーバーは src/index.ts で stateless を宣言しています。ハンドラーでセッションは不要なため、上書きする場合にのみ設定してください。 | stateless |
MCP_LOG_LEVEL | ログレベル(debug、info、warning、error など) | info |
MCP_GC_PRESSURE_INTERVAL_MS | Bun 専用の強制 GC 負荷ループをオプトインで有効にする間隔(ミリ秒)。持続的な HTTP 負荷のもとでヒープの増加が見られる場合は、60000 を試してください。 | 0(無効) |
LOGS_DIR | ログファイルのディレクトリ(Node.js のみ)。 | <project-root>/logs |
STORAGE_PROVIDER_TYPE | ストレージバックエンド:in-memory、filesystem、supabase、cloudflare-kv/r2/d1 | in-memory |
OTEL_ENABLED | OpenTelemetry を有効にします | false |
省略可能な上書き設定の全一覧は .env.example を参照してください。
サーバーの実行
ローカル開発
-
本番版をビルドして実行します。
# 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 build -t reliefweb-mcp-server .
docker run --rm -e RELIEFWEB_APP_NAME=your-app-name -p 3010:3010 reliefweb-mcp-server
Dockerfile のデフォルトは、HTTP トランスポート、ステートレスセッションモード、および /var/log/reliefweb-mcp-server へのログ出力です。OpenTelemetry のピア依存関係はデフォルトでインストールされます。これらを除外するには、--build-arg OTEL_ENABLED=false を指定してビルドしてください。
プロジェクト構成
| ディレクトリ | 目的 |
|---|---|
src/mcp-server/tools | ツール定義(*.tool.ts)。レポート、災害、国、求人、研修、ソースに関する 11 個のツールに加え、共通のページネーション、セクション概要、プロフィールアーカイブのヘルパーがあります。 |
src/mcp-server/resources | リソース定義。レポート、災害、国のリソースがあります。 |
src/mcp-server/prompts | プロンプト定義。危機ブリーフィングのプロンプトがあります。 |
src/services/reliefweb | ReliefWeb API のサービスレイヤー。6 種類すべてのコンテンツタイプに対応する HTTP クライアント、フィルタービルダー、レスポンス正規化処理があります。 |
src/config | Zod による、サーバー固有の環境変数の解析と検証。 |
tests/ | src/ の構成に対応する単体テストと統合テスト。 |
開発ガイド
開発ガイドラインとアーキテクチャ上のルールについては、CLAUDE.md を参照してください。要点は以下のとおりです。
- ハンドラーは例外をスローし、フレームワークが捕捉します。ツールのロジックに
try/catchを記述しないでください - ログには
ctx.log、ストレージにはctx.stateを使用します createApp()配列に新しいツールとリソースを登録します- 外部 API の呼び出しはラップします。生データを検証 → ドメイン型に正規化 → 出力スキーマを返却し、欠落しているフィールドを決して捏造しないでください
コントリビューション
Issue を歓迎します。提出前にチェックとテストを実行してください。
bun run devcheck
bun run test
License
Apache-2.0 — see LICENSE for details.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。