Why MCP Needs Coordination Semantics
Model Context Protocol (MCP) is becoming the standard for connecting AI agents to tools and resources. It's elegant, well-designed, and solves a real problem: how do agents discover and use external capabilities?
But there's something missing.
MCP tells agents what tools exist. It doesn't tell them when to use them, how urgently, or whether to wait for approval first.
The Coordination Problem
Imagine you're building a multi-agent system for financial analysis:
- Data Agent pulls market data
- Analyst Agent interprets trends
- Report Agent generates summaries
- Approval Gate requires human sign-off before publishing
With MCP today, you can connect each agent to databases, APIs, and document stores. But how do you express:
- "Analyst, the data is ready—your turn to start"
- "Report Agent, wait until a human approves before publishing"
- "Everyone stop—emergency market halt"
You end up inventing ad-hoc messaging. Every team does it differently. Interoperability suffers.
Learning from Orchestras
Here's a surprising insight: this problem was solved centuries ago—in music.
An orchestra coordinates 100+ musicians in real-time without a centralized database. They use a vocabulary of coordination signals:
- Cue: "Violins, your entrance is coming"
- Fermata: "Hold this note until I release you"
- Caesura: "Everyone stop completely"
- Downbeat: "Sync point—start together"
These signals are lightweight, unambiguous, and battle-tested over centuries of ensemble performance.
HCT Signals for MCP
Based on Harmonic Coordination Theory, we propose adding 7 coordination signals to MCP as an optional extension:
{
"method": "tasks/send",
"params": {
"message": { "content": "Analyze Q4" },
"hct_signal": {
"type": "cue",
"performance": { "urgency": 8, "tempo": "allegro" }
}
}
}
The hct_signal field is optional—existing MCP clients ignore it. But clients that understand HCT get rich coordination semantics:
| Signal | What it means |
|---|---|
cue | "Your turn to act" |
fermata | "Wait for approval" |
attacca | "Immediate handoff" |
vamp | "Keep repeating until ready" |
caesura | "Full stop" |
tacet | "Stay quiet" |
downbeat | "Sync point" |
Why This Matters
Without coordination semantics, multi-agent systems are fragile. Agents interrupt each other, miss handoffs, or proceed without approval.
With HCT signals:
- Urgency is explicit: Analysts know when to prioritize
- Holds are standardized: Human-in-the-loop is first-class
- Emergencies propagate: One
caesurastops everyone
Get Started
pip install hct-mcp-signals
from hct_mcp_signals import cue, fermata
# Signal the analyst to start
signal = cue("orchestrator", ["analyst"], urgency=8)
# Hold for human approval
hold = fermata("report_agent", "Ready for review", hold_type="human")
Join the Conversation
We're proposing this as an extension to MCP. The RFC and implementation are at:
What coordination problems do you face in multi-agent systems?