IFRC GO MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IFRC GO MCP Serverfind active drefs for Kenya"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
IFRC GO MCP Server
Read-only MCP server for IFRC GO data, secured with Microsoft Entra ID OAuth/JWT.
What this server does
Exposes some IFRC GO datasets as MCP tools.
Enforces bearer-token auth with Entra JWT validation.
Publishes OAuth metadata endpoints for MCP clients.
Applies request rate limiting.
Removes selected PII fields from responses before returning data.
Adds GO frontend URLs to records so callers can open source pages directly.
Related MCP server: FoxTrove Voice MCP Server
Main tools
get_agent_instructionsReturns the full data model and querying guidance from
agent-instructions.md.
get_server_infoReturns runtime configuration and upstream connectivity status.
ifrcgo_metaReturns live enum/choice metadata for entity fields via OPTIONS.
ifrcgo_readMain read tool for list/detail access across IFRC GO entities.
ifrcgo_get_country_planFinds and summarizes the best available planning document for a country.
ifrcgo_download_documentDownloads authenticated IFRC GO documents and extracts text (including PDFs).
Supported entities (via ifrcgo_read)
Reference:
region,country,district,disaster_typeEvents and reports:
event,field-report,situation_reportAppeals:
appeal,appeal_documentSurge and deployments:
surge_alert,eru,eru_owner,personnel,partner_deploymentProjects:
project,emergency-projectDREF:
active-dref,completed-dref,dref-op-update,dref-final-reportOther:
flash-update,public-per-process-status,public-per-stats,ops-learning,public-local-unitsCountry detail:
country-plan,country-document,country-supporting-partner,delegation_office
See agent-instructions.md for field-level guidance and workflow examples.
Quick start (local)
1. Create and activate a virtual environment
Windows PowerShell:
python -m venv .venv
.\.venv\Scripts\Activate.ps12. Install dependencies
pip install -r requirements.txt3. Configure environment variables
Set these in your shell, profile, or launch config before starting the server.
Required for auth-gated operation:
ENTRA_TENANT_IDENTRA_AUDIENCEENTRA_CLIENT_IDMCP_SERVER_URLSTATE_SIGNING_SECRET
IFRC GO upstream auth (choose one mode):
Recommended auto-refresh mode:
IFRCGO_USERNAMEIFRCGO_PASSWORD
Static token mode:
IFRCGO_API_TOKEN
Optional:
IFRCGO_API_BASE_URL(default:https://goadmin.ifrc.org/api/v2)ENTRA_REQUIRED_SCOPE(default:mcp.access)REQUIRED_GROUP_IDS(comma-separated)REQUIRED_APP_ROLES(comma-separated)MCP_RATE_LIMIT_REQUESTS(default:60)MCP_RATE_LIMIT_WINDOW_SECONDS(default:60)SCOPE_NAME(default:ifrcgo)HOST(default:0.0.0.0)PORT(default:8000)
4. Run the server
python server.pyHealth endpoint:
GET /health
OAuth metadata endpoints:
GET /.well-known/oauth-protected-resourceGET /.well-known/oauth-authorization-serverGET /.well-known/oauth-authorization-server/mcp
OAuth helper endpoints:
GET /oauth/authorizeGET /oauth/callbackPOST /oauth/tokenPOST /register
MCP transport:
Mounted at
/using streamable HTTP from FastMCP.
Testing
Run unit tests:
pytest tests -q -m "not smoke" --ignore=tests/smokeRun smoke tests (live endpoint + valid token required):
$env:IFRCGO_MCP_URL = "https://<your-host>"
$env:MCP_TEST_TOKEN = "<entra-access-token>"
pytest tests/smoke -q -m smokeDeployment (Azure Container Apps)
This repo includes an automated deploy script:
Copy
local.settings.json.templatetolocal.settings.json.Fill in required values (subscription, RG, ACR, Entra, IFRC GO credentials, etc.).
Run:
bash infra/deploy.shWhat the script handles:
Validates local settings.
Runs non-smoke tests before deploy.
Builds and pushes Docker image.
Creates/updates Container App and secrets.
Applies optional ingress IP allow-list.
Performs health check and optional smoke tests.
Security and privacy notes
All data tools are read-only.
OAuth/JWT validation is enforced unless Entra settings are missing.
If
REQUIRED_GROUP_IDSorREQUIRED_APP_ROLESare set, caller token must match at least one.Selected PII fields are stripped from
personnelandprojectresults.Keep
local.settings.jsonand credentials out of source control.
Repository layout
server.py: MCP server, auth middleware, tool definitions.ifrcgo_client.py: Async IFRC GO client, auth refresh, list/detail/options helpers, document parsing.agent-instructions.md: Data model and usage guidance surfaced to MCP agents.tests/: Unit and smoke tests.infra/deploy.sh: Azure deployment automation.scripts/: One-off data processing utilities and generated outputs.
Notes for MCP clients
Start sessions by calling
get_agent_instructions.Use
ifrcgo_metato resolve current enum values before filtering.Use
ifrcgo_readwithlimitandoffsetfor paging.Use detail mode with
resource_idwhen you need full single-record payloads.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jmargutt/GO-MCP-demo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server