Reliefweb Mcp Server

io.github.cyanheads由 GitHub 账号 cyanheads 发布v0.3.0更新于 Nov 2, 2026

Search ReliefWeb humanitarian reports, disasters, jobs, training, and country profiles via MCP.

已验证Streamable HTTP可网页运行位置与生活网页搜索与抓取知识与记忆

概览

AI 生成的概览

查询 ReliefWeb(OCHA)人道主义数据,让助手检索并阅读报告、灾害、国家概况、招聘、培训与来源机构。

可以做什么
  • 检索并阅读人道主义报告,可按国家、灾害、格式、主题、语言、来源与日期筛选
  • 检索灾害并获取灾害记录,含概况、募捐与响应计划
  • 列出国家并按 ISO3 代码获取 OCHA 编辑的国家概况
  • 检索招聘职位与培训信息,再获取完整描述及申请或报名说明
  • 浏览投稿来源机构及其简称
  • 生成针对某国家或灾害的结构化危机简报提示
适用场景
适合人道主义研究、危机监测、国家形势综述,以及查找人道主义领域的工作或培训机会。适用于需要 OCHA 权威资料而非通用网页搜索的分析人员、记者或机构工作人员。
运行要求
可作为公开托管的 HTTP 端点使用,也可通过 npx(Node.js)或 Docker 在本地运行。本地使用需要一个已在 ReliefWeb API 注册并获批准的 RELIEFWEB_APP_NAME。可选配置包括传输方式、HTTP 主机/端口/路径、认证模式、日志级别与存储后端。
安装前请注意
ReliefWeb API 每日配额为 1,000 次调用,服务器所有请求共用该配额。报告与记录正文可能很大,超出响应预算时只返回章节大纲而非全文。服务器对 ReliefWeb 只读,不会写入或删除数据。公开托管端点由第三方部署,若希望使用自己的 appname 与配额,可考虑本地运行。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Reliefweb Mcp Server,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/io.github.cyanheads%2Freliefweb-mcp-server/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "reliefweb": {
      "type": "http",
      "url": "https://reliefweb.caseyjhand.com/mcp"
    }
  }
}

README

@cyanheads/reliefweb-mcp-server

Search ReliefWeb humanitarian reports, disasters, jobs, training, and country profiles via MCP. STDIO or Streamable HTTP.

11 Tools • 3 Resources • 1 Prompt • 1 Skill

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


Overview

Humanitarian reports, disasters, jobs, training, and country profiles from ReliefWeb, OCHA's information hub for crisis response. Search and read across every ReliefWeb content type.

Tools

ToolDescription
reliefweb_search_reportsSearch humanitarian reports with filtering by country, disaster, format, theme, language, source, and date
reliefweb_get_reportFetch a single report by numeric ID with full body text and metadata
reliefweb_search_disastersSearch disasters by type, country, status, GLIDE number, and date range
reliefweb_get_disasterFetch a disaster record with profile, key content links, appeals, and response plans
reliefweb_get_countryFetch a country profile by ISO3 code with overview, appeals, and curated links
reliefweb_list_countriesList all countries tracked by ReliefWeb, filterable to active humanitarian situations
reliefweb_search_jobsSearch humanitarian job listings by country, organization, career category, and experience level
reliefweb_get_jobFetch a job posting by numeric ID with the full vacancy description and application instructions
reliefweb_search_trainingSearch training by format, country, career category, cost, listing or delivery language, and date — upcoming starts by default
reliefweb_get_trainingFetch a training listing by numeric ID with the full description, registration instructions, and cost detail
reliefweb_list_sourcesBrowse contributing organizations by name and type

Resources

ResourceDescription
reliefweb://reports/{id}Full report record by numeric ID — metadata, body text, and file URLs. The ID segment must be digits only
reliefweb://disasters/{id}Disaster record by numeric ID — type, status, GLIDE, description, and content links. The ID segment must be digits only
reliefweb://countries/{iso3}Country profile by ISO3 code — overview, situation summary, and active response plans

Prompts

PromptDescription
reliefweb_crisis_briefingGenerate a structured humanitarian briefing for a country or disaster

Capability reference

Search/list page limits above 1,000 and profile-archive limits above 100 are clamped with a notice showing the requested and applied values. Defaults are unchanged: 10 for searches and sources, 100 for countries, 25 for profile archives. Set RELIEFWEB_CLAMP_LIMITS=false to restore strict upper-bound validation. Zero, negative, and fractional limits are always rejected.

reliefweb_search_reports tool

  • Full-text query plus filters: country (ISO3), disaster ID, format, theme, language (ISO 639-1), and source shortname
  • Date range filtering on source publication date (date_from/date_to) — a bare 2024-01-15 works alongside full ISO 8601
  • Format is a closed set: News and Press Release, Situation Report, Map, Infographic, Analysis, Other, Assessment, Manual and Guideline, Appeal, UN Document, Evaluation and Lessons Learned — matched ignoring case, spacing, and punctuation; anything else is rejected with the list
  • Raw filter object for compound conditions the named params don't cover
  • Pagination via offset/limit, up to 1,000 per call (default 10)
  • include_archived has no effect — reports carry no archived class, so every report is already in scope

reliefweb_get_report tool

  • Full body Markdown, all metadata, and file attachment URLs
  • Use after reliefweb_search_reports to retrieve content — bodies run 10–100KB
  • Over the response budget, returns a section outline instead; sections: ["body"] pulls the body back on its own
  • Returns structured not_found when the ID doesn't exist

reliefweb_search_disasters tool

  • Filtering by disaster type, country, status, and GLIDE number for cross-system correlation
  • Date range filtering on disaster creation date (date_from/date_to) — a bare 2024-01-15 works alongside full ISO 8601
  • Status is a closed set: alert, ongoing, past, alert-archive; comma-separate for multiple, matched ignoring case, spacing, and punctuation
  • alert-archive is reachable only with include_archived=true — the default preset hides it
  • Pagination via offset/limit, up to 1,000 per call (default 10)
  • Returns IDs for reliefweb_get_disaster and as the disaster_id filter in reliefweb_search_reports

reliefweb_get_disaster tool

  • Full description, profile overview, affected countries, and GLIDE number
  • Retrieves archived disaster records as well as current ones
  • Three curated lists — keyContent, appealsResponsePlans, usefulLinks — each returns only its currently-active entries; archived entries page via archive: { list: <name> }
  • Major disasters run to tens of KB; over the response budget the record becomes a section outline, and sections: ["description"] or ["profileOverview"] pulls one narrative at a time
  • sections and archive are alternative modes — a call supplying both is rejected
  • Returns structured not_found when the ID doesn't exist

reliefweb_get_country tool

  • Situation overview text curated by OCHA editors
  • Three curated lists — keyContent, appealsResponsePlans, usefulLinks — each returns only its currently-active entries; archived entries (thousands deep for a long-running crisis) page via archive: { list: <name> }
  • sections and archive are alternative modes — a call supplying both is rejected
  • Carries the same section-outline behavior as the other detail tools, though an active-only profile is small enough that it rarely reaches the budget
  • Use reliefweb_list_countries to discover valid ISO3 codes
  • Returns structured not_found for an unknown ISO3 code

reliefweb_list_countries tool

  • Optional crisis_only=true to limit to active humanitarian situations (status ongoing)
  • Returns ISO3 codes, status, and canonical URLs — use ISO3 with reliefweb_get_country
  • Pagination up to 1,000 entries per call (default 100)

reliefweb_search_jobs tool

  • Filtering by country, organization shortname, career category, theme, and experience level
  • Returns current open postings by default; include_archived=true reaches the closed archive, far larger than the open set
  • Sortable by newest posting (date.created:desc, default) or soonest closing (date.closing:asc)
  • Pagination via offset/limit, up to 1,000 per call (default 10)
  • Returns IDs for reliefweb_get_job

reliefweb_get_job tool

  • Full vacancy description and application instructions — neither is in search results
  • Posting status, indexed / closing / last-modified dates, hiring organization, countries, career category, experience level, and job type
  • Both canonical URLs (the readable alias and the node URL)
  • Reaches expired postings as well as open ones
  • Over the response budget, returns a section outline; sections: ["howToApply"] pulls the instructions without the whole description
  • Returns structured not_found pointing back at reliefweb_search_jobs

reliefweb_search_training tool

  • Filtering by country, source, format (on-site or online), career category, and cost (free or fee-based)
  • language filters the listing language; training_language filters delivery language. Summaries include cost and delivery languages when supplied by the organizer
  • Date range filtering on training start date (date_start_from/date_start_to) — a bare 2024-06-01 works alongside full ISO 8601
  • Scoped to training starting from now when neither date bound is given; supply either one for an explicit range, including a historical one
  • include_archived=true reaches concluded listings and drops the start-from-now default, so an otherwise unbounded search reaches the whole record
  • Ordered by soonest start date by default (date.start:asc, distinct from report date fields); override with sort
  • Returns IDs for reliefweb_get_training

reliefweb_get_training tool

  • Full description and registration instructions — neither is in search results
  • Cost class, the organizer's fee detail, and the organizer's own event URL
  • Listing status, start / end / registration / indexed dates, host cities, format, type, listing and delivery languages, organizing source, and both canonical URLs
  • Reaches concluded listings as well as current ones
  • Over the response budget, returns a section outline; sections: ["cost", "feeInformation", "howToRegister"] pulls just the practicalities
  • Returns structured not_found pointing back at reliefweb_search_training

reliefweb_list_sources tool

  • Optional filtering by name text or organization type: Government, International Organization, Non-governmental Organization, Academic and Research Institution, Media, Red Cross/Red Crescent Movement, Other
  • Returns short names, types, organization URLs, and homepage URLs
  • Pagination via offset/limit, up to 1,000 per call (default 10)
  • Use shortname with the source filter in reliefweb_search_reports, reliefweb_search_jobs, and reliefweb_search_training

reliefweb://reports/{id} resource

  • Full report record as application/json — metadata, body text, and file URLs
  • id must be digits only, exactly as search returned it
  • Always returns the whole record — no section selector; use reliefweb_get_report for an oversized report

reliefweb://disasters/{id} resource

  • Disaster record as application/json — type, status, GLIDE, description, and curated content links
  • id must be digits only, exactly as search returned it
  • Always returns the whole record — no section selector; use reliefweb_get_disaster for an oversized disaster or to page an archive

reliefweb://countries/{iso3} resource

  • Country profile as application/json — overview, situation summary, and active response plans
  • Equivalent to calling reliefweb_get_country
  • iso3 must be a 3-letter ISO 3166-1 alpha-3 code

reliefweb_crisis_briefing prompt

  • Arguments: country_or_disaster required (name, ISO3 code, or GLIDE number); focus optional — situation, jobs, or full (default)
  • Returns one user message instructing the agent to gather data with the ReliefWeb tools, then synthesize a briefing citing report titles and dates
  • Resolves country names to ISO3 codes before filtered calls; keeps disaster-name and GLIDE searches separate

reliefweb-guide skill

The bundled guide covers country/disaster research, opportunity evaluation, and checks before claiming that historical material is absent. MCP clients can discover and read it as a skill resource.

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.

ReliefWeb-specific:

  • Full coverage of all six ReliefWeb content types: reports, disasters, countries, jobs, training, and sources
  • Compound filter builder supporting nested AND/OR conditions for the ReliefWeb API v2
  • Vocabulary matching for report format, disaster status, and training cost normalizes case, spacing, and punctuation instead of requiring exact ReliefWeb spelling
  • Date bounds reject impossible calendar dates and times locally; valid end-of-day 24:00 resolves to the next midnight
  • RELIEFWEB_APP_NAME validated at startup — required by the API since November 2025
  • 1,000 calls/day API quota, surfaced in each search and list tool's upstream-error recovery text

Agent-friendly output:

  • Body text excluded from search results by design — agents fetch it explicitly with the matching reliefweb_get_* tool to control context budget
  • Oversized records outline rather than truncate, with a section selector to retrieve exactly what's needed
  • Curated-profile archives are paged rather than dropped, with honest totals and a next offset while more remain
  • Typed not_found error contracts and empty-result notices that echo applied filters and suggest how to broaden

Getting started

Connect to the public hosted server with Claude Code:

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

Or run locally with your own pre-approved ReliefWeb appname:

sh
claude mcp add reliefweb-mcp-server -e RELIEFWEB_APP_NAME=your-app-name -- npx -y @cyanheads/reliefweb-mcp-server

For other MCP clients, add this to your MCP client configuration file:

json
{  "mcpServers": {    "reliefweb-mcp-server": {      "command": "npx",      "args": ["-y", "@cyanheads/reliefweb-mcp-server"],      "env": {        "RELIEFWEB_APP_NAME": "your-app-name"      }    }  }}

Register an appname at ReliefWeb API. For Docker or a source build, see Running the server.

Configuration

VariableDescriptionDefault
RELIEFWEB_APP_NAMERequired. Pre-approved appname for the ReliefWeb API v2. Register at reliefweb.int/help/api.—
RELIEFWEB_CLAMP_LIMITSClamp over-cap page limits with an explicit notice. false restores strict schema maxima.true
MCP_TRANSPORT_TYPETransport: stdio or httpstdio
MCP_HTTP_PORTHTTP server port3010
MCP_HTTP_ENDPOINT_PATHHTTP endpoint path where the MCP server is mounted/mcp
MCP_PUBLIC_URLPublic origin override for TLS-terminating reverse-proxy deploymentsnone
MCP_AUTH_MODEAuthentication: none, jwt, or oauthnone
MCP_SESSION_MODEHTTP session handling: stateless, stateful, or auto (which resolves to stateful). The server declares stateless in src/index.ts — no handler needs a session — so set this only to override.stateless
MCP_LOG_LEVELLog level (debug, info, warning, error, etc.)info
MCP_GC_PRESSURE_INTERVAL_MSOpt-in Bun-only forced-GC pressure loop (ms). Try 60000 if heap growth is observed under sustained HTTP load.0 (disabled)
LOGS_DIRDirectory for log files (Node.js only).<project-root>/logs
STORAGE_PROVIDER_TYPEStorage backend: in-memory, filesystem, supabase, cloudflare-kv/r2/d1in-memory
OTEL_ENABLEDEnable OpenTelemetryfalse

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

Running the server

Local development

Requires Bun v1.4.0 or higher (or Node.js v24+ for the built server).

sh
git clone https://github.com/cyanheads/reliefweb-mcp-server.gitcd reliefweb-mcp-server && bun installcp .env.example .env   # set RELIEFWEB_APP_NAME
  • Build and run the production version:

    sh
    # One-time buildbun run rebuild
    # Run the built serverbun run start:http# orbun run start:stdio
  • Run checks and tests:

    sh
    bun run devcheck  # Lints, formats, type-checks, and morebun run test      # Runs the test suite

Docker

sh
docker run --rm -e RELIEFWEB_APP_NAME=your-app-name -p 3010:3010 ghcr.io/cyanheads/reliefweb-mcp-server:latest

The image defaults to HTTP transport, stateless session mode, and logs to /var/log/reliefweb-mcp-server. For stdio, use docker run -i --rm -e MCP_TRANSPORT_TYPE=stdio -e RELIEFWEB_APP_NAME=your-app-name ghcr.io/cyanheads/reliefweb-mcp-server:latest. Build locally with docker build -t reliefweb-mcp-server .; OpenTelemetry peers are installed by default — add --build-arg OTEL_ENABLED=false to omit them.

Project structure

DirectoryPurpose
src/mcp-server/toolsTool definitions (*.tool.ts). Eleven tools across reports, disasters, countries, jobs, training, and sources, plus the shared pagination, section-outline, and profile-archive helpers.
src/mcp-server/resourcesResource definitions. Report, disaster, and country resources.
src/mcp-server/promptsPrompt definitions. Crisis briefing prompt.
src/services/reliefwebReliefWeb API service layer — HTTP client, filter builder, and response normalizers for all six content types.
src/configServer-specific environment variable parsing and validation with Zod.
skills/Published agent guidance, also served as MCP skill resources.
tests/Unit and integration tests, mirroring the src/ structure.

Development guide

See CLAUDE.md for development guidelines and architectural rules. The short version:

  • Handlers throw, framework catches — no try/catch in tool logic
  • Use ctx.log for logging, ctx.state for storage
  • Register new tools and resources in the createApp() arrays
  • Wrap external API calls: validate raw → normalize to domain type → return output schema; never fabricate missing fields

Contributing

Issues are welcome. Run checks and tests before submitting:

sh
bun run devcheckbun run test

License

Apache-2.0 — see LICENSE for details.

来源:README.md,提交 3a6e85e

工具

11

reliefweb_search_reports

Search ReliefWeb Reports

Search humanitarian reports on ReliefWeb with filtering by country, disaster, format, theme, language, source, and date. Returns paginated summaries — use reliefweb_get_report to fetch full body text. Report body is excluded from results (10–100KB each); call get_report when document content is needed. Every report is reachable by default — reports have no archived class, so include_archived has no effect here. Note: each call counts against the 1,000 calls/day quota.

输入参数sorttextlimitthemefilterformatoffsetsourcecountrydate_tolanguagedate_from另有 2 个

reliefweb_get_report

Get ReliefWeb Report

Fetch a single ReliefWeb report by its numeric ID with full body text, file attachments, and all metadata. Use after reliefweb_search_reports to retrieve document content — body is excluded from search results to manage context budget. Report bodies can be 10–100KB. A record over the response budget comes back as a section outline naming every section and its byte size; re-call with sections to pull only the ones needed. Nothing is truncated on either path.

输入参数id必填sections

reliefweb_search_disasters

Search ReliefWeb Disasters

Search active and historical disasters on ReliefWeb by type, country, status, date range, and GLIDE number. Default preset covers alert, ongoing, and past disasters. Use include_archived=true to reach alert-archive entries as well, for historical research. Returns IDs suitable for use with reliefweb_get_disaster and as disaster_id filter in reliefweb_search_reports.

输入参数sorttextglidelimitoffsetstatuscountrydate_todate_fromdisaster_typeinclude_archived

reliefweb_get_disaster

Get ReliefWeb Disaster

Fetch a disaster record by ReliefWeb numeric ID including description, affected countries, GLIDE number, profile overview, key content links, and active appeals or response plans. Use after reliefweb_search_disasters to retrieve full details. Each curated list also has an archive, which the record leaves out. Two alternative selectors, at most one per call: sections names parts of the record to return, archive pages one list's archived entries in place of the record. Description and profile overview can together run to tens of KB for major disasters. A record over the response budget comes back as a section outline naming every section and its byte size. Nothing is truncated on any path.

输入参数id必填archivesections

reliefweb_get_country

Get ReliefWeb Country Profile

Fetch a country profile from ReliefWeb by ISO3 code, including overview, humanitarian situation summary, key content links, active appeals and response plans, and useful external links. Country profiles are curated by OCHA editors and provide the authoritative situation summary for humanitarian responders. Each curated list also has an archive — thousands of entries deep for a long-running crisis — which the profile leaves out. Two alternative selectors, at most one per call: sections names parts of the profile to return, archive pages one list's archived entries in place of the profile. A profile over the response budget comes back as a section outline naming every section and its byte size. Nothing is truncated on any path.

输入参数iso3必填archivesections

reliefweb_list_countries

List ReliefWeb Countries

List all countries and territories tracked by ReliefWeb, optionally filtered to active humanitarian situations. Returns ISO3 codes and status for each entry — use the ISO3 code with reliefweb_get_country to fetch a full profile. Set crisis_only=true to limit results to countries with active humanitarian situations.

输入参数limitoffsetcrisis_only

reliefweb_search_jobs

Search ReliefWeb Jobs

Search humanitarian job listings on ReliefWeb by country, organization, career category, theme, and experience level. Returns current open positions — expired postings are excluded by default. Use include_archived=true to search the full history of postings, which is far larger than the open set. Use text search for role titles and job descriptions.

输入参数sorttextlimitthemeoffsetsourcecountryexperiencecareer_categoryinclude_archived

reliefweb_get_job

Get ReliefWeb Job

Fetch a job posting by ReliefWeb numeric ID with the full vacancy description, application instructions, dates, hiring organization, and location and taxonomy metadata. Use after reliefweb_search_jobs, which returns summaries without the description or application instructions. Reaches expired postings as well as open ones. A record over the response budget comes back as a section outline naming every section and its byte size; re-call with sections to pull only the ones needed. Nothing is truncated on either path.

输入参数id必填sections

reliefweb_search_training

Search ReliefWeb Training

Search humanitarian training and learning opportunities on ReliefWeb by country, format, date, source, career category, cost, listing language, and delivery language. Covers on-site and online capacity-building events. Training date fields use date.start / date.end — different from report date fields. Use date_start_from and date_start_to to find upcoming training within a window. Results default to soonest-starting first (date.start:asc). With neither date bound supplied the search is scoped to training starting from now, so the first page is upcoming opportunities; supply either bound to search an explicit range, including a historical one. Use include_archived=true to search concluded listings as well, which are far more numerous than the current ones.

输入参数costsorttextlimitformatoffsetsourcecountrylanguagedate_start_tocareer_categorydate_start_from另有 2 个

reliefweb_get_training

Get ReliefWeb Training

Fetch a training listing by ReliefWeb numeric ID with the full description, registration instructions, event link, cost and fee information, dates, languages, and organizing source. Use after reliefweb_search_training, which returns summaries without the description, registration instructions, or cost detail. Reaches concluded listings as well as current ones. A record over the response budget comes back as a section outline naming every section and its byte size; re-call with sections to pull only the ones needed. Nothing is truncated on either path.

输入参数id必填sections

reliefweb_list_sources

List ReliefWeb Sources

Browse source organizations that contribute content to ReliefWeb, optionally filtered by name text or organization type. Returns short names, types, and URLs. Use the shortname value with the source filter in reliefweb_search_reports, reliefweb_search_jobs, and reliefweb_search_training.

输入参数texttypelimitoffset

版本历史

4
  1. v0.3.0最新Oct 26, 2026
  2. v0.2.3Oct 9, 2026
  3. v0.2.2Sep 20, 2026
  4. v0.2.1Sep 16, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分