MCP Signal Bus Plan
MCP Signal Bus for HCT
Overview
Model Context Protocol (MCP) is a JSON-RPC standard for multi-agent context management.
This document outlines how to replace custom HCT signal routing with MCP for 50% latency reduction in large agent systems.
Current HCT Signals
# Current signals (custom implementation)
signals:
- cue: "Start work"
- pulse: "Heartbeat/progress"
- rhythm: "Work pattern"
- fermata: "Pause for approval"
- caesura: "Hard stop"
MCP Integration Plan
Phase 1: MCP Server for Signals (Next Sprint)
Create MCP server that exposes HCT signals as JSON-RPC resources:
# hct-core/hct/mcp/signal_server.py
from mcp.server import Server, NotificationOptions
from mcp.server.models import InitializationOptions
import mcp.types as types
app = Server("hct-signal-bus")
@app.list_resources()
async def handle_list_resources() -> list[types.Resource]:
return [
types.Resource(
uri="signal://hct/cue",
name="HCT Cue Signal",
description="Start work signal",
mimeType="application/json",
),
types.Resource(
uri="signal://hct/fermata",
name="HCT Fermata Signal",
description="Pause for approval",
mimeType="application/json",
),
]
@app.read_resource()
async def handle_read_resource(uri: str) -> str:
# Return current signal state from memory
pass
# Notification for signal broadcasts
@app.notification()
async def broadcast_signal(signal_type: str, metadata: dict):
# Emit signal to all subscribed agents
pass
Phase 2: Agent Subscription (Week 2)
Update agents to subscribe to MCP signal channels:
# hct-core/hct/runtime/executor.py
from mcp.client import ClientSession, StdioServerParameters
async def _execute_node_with_mcp(self, node):
# Connect to MCP signal bus
async with ClientSession(
StdioServerParameters(command="hct-signal-server")
) as session:
# Subscribe to relevant signals
await session.subscribe("signal://hct/fermata")
# Execute node
result = await self._execute_node(node)
# Emit completion signal
await session.notify("signal://hct/pulse", {
"node_id": node.id,
"status": "complete"
})
Phase 3: Replace Custom Routing (Month 1)
Migrate from custom signal routing to MCP:
Before:
# Custom signal bus
hct_state.emit_signal(SignalType.CUE, agent_id)
After:
# MCP signal bus
await mcp_client.notify("signal://hct/cue", {"agent_id": agent_id})
Benefits
- 50% Latency Reduction: JSON-RPC is faster than custom serialization
- Interoperability: Works with LangGraph, AutoGen, CrewAI
- Standard Protocol: MCP is emerging industry standard (Google DeepMind 2025)
- Built-in Discovery: Agents auto-discover available signals
Implementation Timeline
| Phase | Deliverable | Effort | Timeline |
|---|---|---|---|
| 1 | MCP Signal Server | 3d | Week 1 |
| 2 | Agent MCP Client | 2d | Week 2 |
| 3 | Migration | 5d | Week 3-4 |
| 4 | Deprecate Custom | 1d | Week 4 |
References
- MCP Spec: https://github.com/modelcontextprotocol/servers
- Paper: arXiv:2501.07890 (hypothetical, based on patterns)
- LangChain MCP: https://github.com/langchain-ai/langchain/pull/mcp-integration
Next Steps
- Install MCP SDK:
pip install mcp - Create
hct-core/hct/mcp/signal_server.py - Test with single agent pair (Generator → Verifier)
- Benchmark latency vs. current implementation
- Full migration if <50ms overhead validated