Toti es articles

Per qué bastim un servidor MCP entà gairebé tot

Publicat Feb 13, 20263 min de lectura
  • Engenharia
  • IA

Idèes clau

  • MCP estandardize era madeisha disciplina qu'i a darrèr der agent de WhatsApp de Lueira: aisines petites, tipadas e validadas en sòrta d'accions liures deth modèl.
  • Eth nòste servidor MCP intèrn de Ringover expòse 26 aisines damb autentificacion per peticion, entà que quinsevolh client de MCP posque agir sense ua integracion a mesura.
  • MCP non ei solament entà "chatbots": eth servidor de catalòg deth marketplace renderize "widgets" interactius, mès contunhe sense escàder en panèls purament umans.

En quauque punt entre lançar er agent d'IA de WhatsApp de Lueira e montar ua aisina intèrna entath nòste pròpi equip d'operacions, m'encuedè que auíem deishat de nse demanar "açò a d'èster ua API REST o un panèl?" e auíem començat a nse demanar "quines aisines a besonh eth client d'IA?". Ei un cambi petit d'enfòc, mès a cambiat com construím quasi tot çò que non ei ua pantalha purament entà persones. Aguest article tracte de senhalar aguest patron en votz nauta, a compdar de tres pèces d'aisines internes fòrça diferentas.

1. Eth patron que comencèrem sense n'encuedar-mos

En un article anterior escriuí sus com foncione er agent d'IA de WhatsApp de Lueira: non un modèl improvisant contra un calendari de resèrvas, senon un conjunt petit e estrictament tipat d'aisines — check_availability, create_booking, send_payment_link — qu'eth modèl pòt invocar, cadua validada contra eth motor de resèrvas reau abans que arren se confirme. Er objectiu d'aqueth disenh non èra era part d'IA; èra era disciplina. Definir ua superficia estreta d'accions, tipar cada entrada e sortida, e non deishar jamès qu'eth modèl toque era basa de dats dirèctament.

Un còp aguesta disciplina existís entà un produit, resulte èster era responsa corrècta entà problèmas que non an arren a veir damb WhatsApp ne damb resèrvas. Model Context Protocol (MCP) — eth protocòl dubèrt d'Anthropic — ei essenciaument aguesta madeisha idia estandardizada: en sòrta de construir ua integracion a mesura entre "eth modèl" e "eth nòste sistèma", exposes un conjunt d'aisines tipadas sus un transpòrt comun, e quinsevolh client compatible damb MCP les pòt descobrir e invocar.

2. Ringover: convertir ua API de telefonia en aisines reutilizables

Er exemple mès clar ei intèrn, non de cara ath client. Emplegam Ringover entà nomentades, SMS, modèls de WhatsApp e contactes, e coma era màger part des provedidors de telefonia SaaS a ua API REST qu'arrés en Maladeta vò integrar a man cada còp que quauquarrés a besonh de sàber "pòs verificar qui mos crompèc era setmana passada?". Atau qu'auem construït un servidor MCP entad era — emplegant eth "framework" xmcp — qu'expòse 26 aisines seleccionadas entre nomentades, analitica de nomentades per IA, contactes, mensatgeria, contròl de nomentades en dirècte e recèrques de directòri.

Er autentificacion ei per peticion: eth servidor non emmagazina es credenciaus de Ringover de arrés, renvia era pròpia clau API de Ringover de qui hè era peticion en cada crida. Çò qu'açò mos balhe ena practica ei que quinsevolh damb un client compatible damb MCP pòt demanar "guaires nomentades perdudes auérem era setmana passada?" o "envia un SMS ad aguest client disent que anam damb retard" e obtier ua responsa o ua accion, sense qu'arrés escríuesque còdi d'integracion a mesura. Aciu ei, de manèra simplificada, coma ei ua d'aguestes aisines:

export const schema = {
  to: z.string().describe("E.164 phone number of the recipient"),
  message: z.string().max(1600).describe("SMS body to send"),
  from_number_id: z.string().describe("Ringover number to send the SMS from"),
};

export const metadata = {
  name: "ringover_send_sms",
  description: "Send an SMS to a contact through Ringover",
};

export default async function ringoverSendSms(
  { to, message, from_number_id },
  { ringoverApiKey }
) {
  const result = await ringoverClient(ringoverApiKey).sms.send({
    to,
    body: message,
    number_id: from_number_id,
  });

  if (!result.ok) {
    throw new Error(`Ringover rejected the SMS: ${result.error}`);
  }

  return { status: "sent", message_id: result.id };
}

3. "Widgets" interactius, non sonque dades

Era plataforma de Marketplace Generic — eth nucli partatjat darrèr de RocRoi, KayakGrandTour e NaturaAdventour — portèc eth patron entà un lòc que non esperaua: mès enlà des dades e entara interfaç. Eth sòn servidor MCP de catalòg non sonque expòse aisines que tornen JSON; expòse tanben "widgets" "MCP App", coma ua fitxa de produit o un calendari de disponibilitat, que se renderizen dirèctament laguens dera pròpia interfaç d'un client compatible damb MCP — Claude o ChatGPT, sense qu'arrés des dus produits agesse hèt besonh de construir ua interfaç a mesura entad açò.

4. Quan MCP ei era responsa corrècta, e quan non

Un panèl purament entà persones non milhore pr'amor de i cargolar un servidor MCP. MCP se gane eth sòn lòc especificament quan un client d'IA a besonh de hèr de manèra fisabla ua accion reau o traire dades reaus, e preferisses definir açò un solet còp en sòrta de construir ua integracion a mesura cada còp.

Construir plan un servidor MCP a besonh exactament dera madeisha disciplina qu'a agut totjorn construir ua bona API. Ei tentador embolicar cada taula dera tua basa de dats en ua aisina e cridar-la "abilitada entà MCP", e açò ei ua idia pejor que non construir-ne cap.

Çò qu'a cambiat entà nosati non ei era disciplina — ei eth punt de partença per defècte. Fa un an, "mos cau qu'era IA parle damb aguest sistèma" volie díder ua integracion puntuau. Ara vò díder: definir un conjunt petit d'aisines tipadas, validar cada crida contra eth sistèma de registre reau, e exposar-les sus MCP.