# Building Coordination Infrastructure: What 32 MCP Servers Without a Bus Look Like

> Source: <https://dev.to/gabrielmahia/building-coordination-infrastructure-what-32-mcp-servers-without-a-bus-look-like-243c>
> Published: 2026-08-03 10:00:00+00:00

Thirty-two MCP servers for Kenya's coordination domains.

Water. Health. Agriculture. Insurance. Land. Education. Transport. Tax. Labor. Market prices.

Each one works. None talks to any other.

This is what 32 isolated tools looks like in practice: a CHW in Kisumu flags a cholera cluster. The water quality system doesn't know. The county procurement system doesn't know. The emergency medicine supply chain doesn't know. The tools that need to respond are all present. The coordination between them doesn't exist.

The Model Context Protocol ecosystem is growing fast. For most of the world, it's growing in domains that already have coordination infrastructure: calendar apps, email clients, project management tools. These tools coordinate with each other through years of API integrations, webhooks, Zapier connections, and shared data stores.

African coordination domains don't have that legacy. They're being built now, from scratch, on MCP.

That means the coordination layer has to be built at the same time.

[ africa-coord-bus](https://github.com/gabrielmahia/africa-coord-bus) defines a

`CoordinationEvent`

— a standard cross-domain signal schema — and an `EventBus`

that routes events to the tools that need to respond.The routing table is explicit:

| Trigger | Cascade |
|---|---|
`water.drought_alert` (Warning+) |
bima-mcp, kilimo-mcp, soko-mcp |
`water.drought_alert` (Alert+) |
+ afya-mcp, county-mcp |
`health.disease_outbreak` (cholera) |
wapimaji-mcp water quality check |
`agriculture.price_spike` (>30%) |
afya-mcp food security watch |
`water.flood_alert` |
afya-mcp waterborne watch, county-mcp |

Custom rules take three lines:

``` python
from africa_coord_bus import RoutingRule, EventDomain, EventSeverity

bus.routing.add(RoutingRule(
    name="locust→emergency_procurement",
    trigger_domain=EventDomain.AGRICULTURE,
    trigger_event_type="locust_swarm",
    trigger_min_severity=EventSeverity.ALERT,
    target_actions=["fomu-mcp.emergency_procurement", "county-mcp.agriculture_alert"],
))
```

The pattern that's emerging for East Africa:

```
Public domain datasets (HuggingFace)
        │ grounding knowledge
        ▼
32 MCP servers (PyPI) ←── africa-coord-bus
        │
        ▼
A2A + ADK agents
        │
        ▼
Streamlit coordination interfaces
```

Each layer is replaceable. The models are replaceable. The MCP servers are replaceable. What persists is the coordination architecture.

```
pip install africa-coord-bus
```

Source: [github.com/gabrielmahia/africa-coord-bus](https://github.com/gabrielmahia/africa-coord-bus)

The coordination gap was the last missing layer. It's now installable.

Source: [africa-coord-bus on PyPI](https://pypi.org/project/africa-coord-bus/)
