Applicability
When to Use
✓When integrating with SOAP, XML, or proprietary APIs
✓When legacy systems cannot be modified
✓When you want uniform MCP interfaces across all systems
Overview
How It Works
The Adapter pattern wraps legacy system APIs (SOAP, XML-RPC, custom protocols) with MCP-compatible interfaces. The adapter translates between the MCP tool call format and the legacy system's protocol, making all systems look uniform to the agent.
Each adapter handles protocol translation, data format conversion, and error mapping. The agent interacts with all systems through the same MCP interface regardless of the underlying technology.
Implementation
Code Example
typescript
// Legacy SOAP adapter
class LegacySoapAdapter {
async getCustomer(args) {
const soapEnvelope = `<soap:Envelope><soap:Body><GetCustomer><Id>${args.id}</Id></GetCustomer></soap:Body></soap:Envelope>`;
const response = await fetch(LEGACY_ENDPOINT, { method: "POST", headers: { "Content-Type": "text/xml" }, body: soapEnvelope });
const xml = await response.text();
return xmlToJson(xml).Customer;
}
async createOrder(args) {
const soapEnvelope = buildOrderEnvelope(args);
const response = await fetch(LEGACY_ENDPOINT, { method: "POST", headers: { "Content-Type": "text/xml" }, body: soapEnvelope });
return xmlToJson(await response.text()).OrderResult;
}
}
// Register as MCP-compatible server
const legacyCRM = new LegacySoapAdapter();
// Now agents can call: legacyCRM.getCustomer({ id: "123" })Quick Info
Categoryintegration
ComplexityMedium