Request-Reply over MCP

messagingMedium
Applicability

When to Use

When you need a response from a remote service
When implementing RPC-style communication
When synchronous behavior is needed over async channels
Overview

How It Works

The Request-Reply pattern implements synchronous-style communication over MCP servers. The requesting agent sends a message with a unique correlation ID and waits for a response with the same ID. This enables RPC-like behavior while maintaining the decoupled nature of message-based communication. This is useful when one MCP server needs information from another to complete its processing. For example, a pricing service needs product data from the catalog service before calculating a quote.
Implementation

Code Example

typescript
async function requestReply(service, request, timeout = 5000) {
  const correlationId = crypto.randomUUID();
  const responsePromise = waitForResponse(correlationId, timeout);
  await nats.publish({
    subject: `${service}.request`,
    data: JSON.stringify({ ...request, correlationId, replyTo: "agent.responses" })
  });
  return await responsePromise;
}

function waitForResponse(correlationId, timeout) {
  return new Promise((resolve, reject) => {
    const timer = setTimeout(() => reject(new Error("Timeout")), timeout);
    nats.subscribe("agent.responses", (msg) => {
      const data = JSON.parse(msg);
      if (data.correlationId === correlationId) { clearTimeout(timer); resolve(data); }
    });
  });
}

Quick Info

Categorymessaging
ComplexityMedium

Need Architecture Help?

Our team designs custom automation architectures.

Get in Touch
CortexAgent Customer Service

Want to skip the form?

Our team is available to help you get started with CortexAgent.

This chat may be recorded for quality assurance. You can view our Privacy Policy.