How 30 MCP servers discover, verify, and trust each other. Well-known manifests, Ed25519 identity exchange, trust ring assignment, and SIGIL-attested federation events. Zero central broker.
The Federation Discovery Protocol defines how MCP servers in the DEFONEOS ecosystem find each other, establish trust, exchange capabilities, and maintain federation state. It replaces centralised service registries with a peer-to-peer, cryptographically-verifiable discovery model.
Every MCP server in the federation publishes a machine-readable manifest at a standardised well-known path:
When a new MCP joins the federation or an existing MCP needs to discover peers, the following sequence executes:
| Interval | Action | SIGIL Event |
|---|---|---|
| Every 15 seconds | Health check (GET /health) | federation_heartbeat (batch) |
| Every 5 minutes | Manifest re-fetch + hash compare | federation_manifest_check |
| Every 15 minutes | SIGIL receipt batch submission | federation_sigil_sync |
| Every 1 hour | Capability re-index | federation_reindex |
| On manifest change | Immediate re-admission check | federation_manifest_changed |
| On health failure | Quarantine after 3 consecutive failures | federation_quarantine |
Every MCP is assigned to one of three trust rings at admission time. Ring assignment determines data access, secret access, and federation privileges. See MCP Admission Control Checklist for the full assignment criteria.
| Ring | Label | MCPs | Data Flow | Discovery Scope |
|---|---|---|---|---|
| Ring 0 | Core Sovereign | 7 | UK-sovereign-only, zero external API | Full federation visibility |
| Ring 1 | Defence Sensors | 11 | Inbound-only from external sensors | Ring 0 + Ring 1 peers |
| Ring 2 | Civil Services | 12 | Public data, unrestricted | Ring 0 + Ring 2 peers |
Each MCP in the federation transitions through these states:
| State | Description | Entry Condition | Exit Condition |
|---|---|---|---|
| DISCOVERED | Manifest fetched and signature verified | Initial discovery or re-discovery | Admission check initiated |
| PENDING_ADMISSION | Under 9-point admission control review | Manifest verified, not yet admitted | BFT vote (23/33 quorum) |
| ACTIVE | Fully operational, healthy, federated | BFT approval + health check pass | Health failure or manifest change |
| DEGRADED | Health issues but still responding | 1-2 consecutive health failures | Recovery (→ ACTIVE) or 3rd failure (→ QUARANTINED) |
| QUARANTINED | Isolated, not trusted for data flow | 3 health failures or red-line alert | Manual review + BFT vote to restore |
| RETIRED | Removed from federation | BFT vote (23/33) or human owner decision | Terminal state |
Every federation state transition generates a SIGIL receipt. The complete event taxonomy:
| Event Type | Trigger | Critical Fields |
|---|---|---|
federation_discover | New MCP manifest discovered | mcp_id, manifest_hash, ring |
federation_admit | BFT vote approves admission | mcp_id, vote_tally, quorum_met |
federation_activate | MCP transitions to ACTIVE | mcp_id, health_status, capabilities |
federation_degrade | Health check fails | mcp_id, failure_count, error |
federation_quarantine | MCP isolated | mcp_id, reason, trigger_type |
federation_restore | Quarantined MCP restored | mcp_id, bft_vote, review_id |
federation_retire | MCP permanently removed | mcp_id, bft_vote, reason |
federation_manifest_changed | Manifest hash differs from cached | mcp_id, old_hash, new_hash |
federation_capability_added | New tool discovered in manifest | mcp_id, tool_name, ring |
federation_red_line_alert | Red-line compliance check failed | mcp_id, violation_type, auto_quarantine |
The federation maintains a live catalogue of all 30 MCPs and their 150+ tools. The catalogue is derived from manifest data and updated on every discovery cycle:
| Scenario | Detection | Response | Recovery |
|---|---|---|---|
| MCP health failure | 3 consecutive /health timeouts | Auto-quarantine, reroute to fallback | BFT vote to restore |
| Manifest tampering | Hash mismatch on re-fetch | Immediate quarantine + SIGIL red-line alert | Manual investigation + re-admission |
| Network partition | Heartbeat batch failure | Degraded mode: local SIGIL buffering | Auto-sync on reconnect |
| Seed node failure | Multiple Ring 0 MCPs unreachable | Promote backup seed from Ring 0 | BFT consensus on new seed set |
| Red-line violation | Admission check or runtime scan | Instant quarantine, no quorum needed | Terminal — requires code fix + re-admission |
| Metric | Value |
|---|---|
| Total MCPs federated | 30 |
| Total tools discoverable | 156 |
| Active | 30 (100%) |
| Quarantined | 0 |
| Red-line violations (all-time) | 0 |
| Avg discovery latency | 47ms (LAN) / 230ms (WAN) |
| SIGIL receipts (federation events) | 3,892 |
| Manifest integrity checks | 14,567 (0 tamper detected) |