Applicability
When to Use
✓When a single event needs to trigger multiple independent actions
✓When you need to broadcast notifications across multiple channels
✓When parallel processing can improve throughput
Overview
How It Works
The Fan-Out pattern uses a central MCP server as an event source. When an event occurs (e.g., a new GitHub PR), the orchestrating agent receives the event and fans it out to multiple MCP servers simultaneously: Slack for notifications, Linear for issue creation, and PostgreSQL for logging. Each downstream server processes the event independently, enabling parallel execution and reducing overall latency.
This pattern is especially powerful in MCP architectures because each server connection is independent. The agent can fire off multiple tool calls concurrently using Promise.all(), and failures in one branch don't affect others. Implement error handling per-branch to ensure partial failures don't block the entire fan-out.
Implementation
Code Example
typescript
async function handleEvent(event) {
const tasks = [
slack.sendMessage({ channel: "#events", text: formatEvent(event) }),
linear.createIssue({ title: event.title, teamId: TEAM_ID }),
postgres.query("INSERT INTO event_log (type, data) VALUES ($1, $2)", [event.type, JSON.stringify(event)])
];
const results = await Promise.allSettled(tasks);
const failures = results.filter(r => r.status === "rejected");
if (failures.length > 0) console.error("Partial fan-out failure:", failures);
}Quick Info
Categorymessaging
ComplexityMedium