Skip to main content

Coordination event bus connecting East Africa MCP servers — drought alerts cascade to insurance, health, and agricultural advisory in real time

Project description

africa-coord-bus

The coordination layer between East Africa's AI tools.

31 MCP servers exist for Kenya's coordination domains — payments, water, agriculture, health, land, education. They work in isolation. When wapimaji-mcp detects a drought six weeks in advance, bima-mcp doesn't know to evaluate parametric insurance payouts. afya-mcp doesn't know to activate malnutrition surveillance. kilimo-mcp doesn't know to issue drought-resistant crop advisories.

This package provides the event bus that connects them.

The coordination gap

A smallholder farmer in Turkana has parametric crop insurance. NDVI anomaly data shows drought coming 6 weeks out. The insurance contract says coverage triggers when SPI drops below -1.5.

Without coordination: the farmer finds out the crop is failing at harvest. The insurance company finds out at claims submission. The health system finds out at clinic presentation.

With coordination:

wapimaji-mcp → CoordinationEvent(drought_alert, ALERT)
    │
    ├── bima-mcp.evaluate_parametric_payout      (triggered immediately)
    ├── kilimo-mcp.issue_drought_advisory         (farmers receive SMS)
    ├── afya-mcp.activate_malnutrition_watch      (CHWs briefed)
    └── county-mcp.alert_county_health            (county notified)

Six weeks earlier. Before the damage is visible.

Install

pip install africa-coord-bus

Usage

from africa_coord_bus import (
    EventBus, CoordinationEvent, DomainCascade,
    EventDomain, EventSeverity, KenyaLocation
)

# Create bus with offline queue
bus = EventBus(queue_path="/var/coord-bus/queue.jsonl")

# Wire all domain cascade handlers
cascade = DomainCascade(bus)
cascade.wire_all()

# Publish a drought signal from wapimaji-mcp
event = CoordinationEvent(
    domain=EventDomain.WATER,
    event_type="drought_alert",
    source="wapimaji-mcp",
    severity=EventSeverity.ALERT,
    location=KenyaLocation(county="Turkana", county_code=23),
    data={
        "ndvi_anomaly": -0.28,
        "spi_3month": -1.8,
        "rainfall_deficit_pct": 42,
    },
)

targets = bus.publish(event)
# → [WATER→FINANCE] bima-mcp.evaluate_parametric_payout | Turkana | drought_alert | alert
# → [WATER→AGRI]    kilimo-mcp.issue_drought_advisory    | Turkana | drought_alert | alert
# → [WATER→HEALTH]  afya-mcp.activate_malnutrition_watch | Turkana | drought_alert | alert

Built-in routing rules

Trigger Cascade
water.drought_alert (WARNING+) bima-mcp.evaluate_parametric_payout, kilimo-mcp.issue_drought_advisory, soko-mcp.price_alert
water.drought_alert (ALERT+) + afya-mcp.activate_malnutrition_watch, county-mcp.alert_county_health
health.disease_outbreak (cholera/typhoid) wapimaji-mcp.flag_water_risk
health.disease_outbreak (WARNING+) county-mcp.health_alert, fomu-mcp.emergency_procurement
agriculture.price_spike (>30% above seasonal) afya-mcp.food_security_watch, bima-mcp.food_security_eval
water.flood_alert (WARNING+) afya-mcp.waterborne_watch, county-mcp.flood_response

Add custom rules:

from africa_coord_bus import RoutingRule, EventDomain, EventSeverity

bus.routing.add(RoutingRule(
    name="outbreak→emergency_procurement",
    description="Disease outbreak triggers essential medicine procurement",
    trigger_domain=EventDomain.HEALTH,
    trigger_event_type="disease_outbreak",
    trigger_min_severity=EventSeverity.ALERT,
    target_actions=["fomu-mcp.emergency_medicine_order"],
))

Offline-first

Events are written to a local queue before dispatch. If dispatch fails, events persist for replay:

bus = EventBus(queue_path="/var/coord-bus/events.jsonl")
# ... system restart ...
bus.replay_queue()  # processes all unhandled events

Related packages

All available at pypi.org/user/gmahia:

  • wapimaji-mcp — drought intelligence (publishes water.drought_alert)
  • bima-mcp — parametric insurance (consumes drought events)
  • kilimo-mcp — agricultural coordination (consumes drought + price events)
  • afya-mcp — health coordination (consumes drought + flood + disease events)
  • mpesa-mcp — M-Pesa payments (handles insurance payouts)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

africa_coord_bus-0.1.0.tar.gz (7.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

africa_coord_bus-0.1.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file africa_coord_bus-0.1.0.tar.gz.

File metadata

  • Download URL: africa_coord_bus-0.1.0.tar.gz
  • Upload date:
  • Size: 7.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for africa_coord_bus-0.1.0.tar.gz
Algorithm Hash digest
SHA256 55993c80a62fedb63121a19ad69a2ca2e155bbf167a27678496ded71fd3049f7
MD5 72227836a31322bdfdec9efa6d7bae73
BLAKE2b-256 a5428aaf87807cb0bc569fdf72d72fbe3c7b842bf4deb3668c67c92748ae1057

See more details on using hashes here.

File details

Details for the file africa_coord_bus-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for africa_coord_bus-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d7bb5da3e9c4510bd12780bff63e5aa6ca0578e107ae8279e32a29cb93b3bdbf
MD5 5b590da94a94c5b9ae81909677b0fefa
BLAKE2b-256 6ceb9b90d0874a14e949ad28e4b5f0a25e89f42fa87a0e8ad725324d5960605c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page