Einem LangChain-Agent eine WhatsApp-Nummer geben
Ein LangChain-Agent bekommt WhatsApp in zwei Hälften. Eingehende Nachrichten erreichen Ihre Web-Route über den Webhook der Nummer, und die Route ruft den Agent auf. Zum Handeln lädt der Agent die MCP-Tools von EasyCoexistence über den MCPAdapter von LangChain mit OAuth oder ruft die Cloud API direkt mit dem Token und der Telefonnummer-ID der Nummer auf.
Mindestversion von langchain[mcp] für den Namespace langchain.mcp, der sich in der Beta befindet.
Führt den vollständigen OAuth-2.1-Ablauf aus: Discovery, dynamische Client-Registrierung, Browser-Weiterleitung und Token-Austausch.
Der Fehler von Meta, wenn seit der letzten Antwort des Empfängers mehr als 24 Stunden vergangen sind.
Wie lädt ein LangChain-Agent die WhatsApp-Tools?
Über MCPAdapter, den MCP-Client von LangChain, der die Tools eines MCP-Servers als gewöhnliche LangChain-Tools an create_agent übergibt. Dafür ist langchain[mcp] ab Version 1.4.0 nötig, und das Feature ist als Beta gekennzeichnet.
Die Authentifizierung übernimmt FastMCP. Mit auth="oauth" am Client läuft der vollständige OAuth-2.1-Ablauf: Discovery, dynamische Client-Registrierung, die Browser-Weiterleitung und der Token-Austausch. Genau das erwartet der MCP-Server von EasyCoexistence, deshalb müssen Sie keinen Schlüssel erzeugen oder einfügen. Standardmäßig liegen die Tokens im Arbeitsspeicher, und jeder Lauf wiederholt den Browser-Schritt. Ein FastMCP-OAuth-Provider mit Token-Speicher bewahrt sie zwischen den Läufen auf.
Sobald die Tools geladen sind, sieht der Agent sie mit ihren Beschreibungen: zuerst list_numbers, weil jedes andere Tool eine connection_id daraus erwartet, dann send_message, send_template, list_templates, get_number_health und die übrigen.
from fastmcp.client import Client
from langchain.agents import create_agent
from langchain.mcp import MCPAdapter
URL = "https://easycoexistence.com/api/mcp"
async def build_agent(model: str):
async with MCPAdapter(Client(URL, auth="oauth")) as adapter:
tools = await adapter.list_tools()
return create_agent(model, tools)Wie gelangt eine eingehende WhatsApp-Nachricht zum Agent?
Über den Webhook, denn MCP kann das nicht leisten. Das Protokoll arbeitet mit Anfrage und Antwort, daher kann ein Server darin keinen Client wecken, wenn ein Kunde schreibt.
Setzen Sie das Webhook-Ziel der Nummer auf eine Route in Ihrer eigenen Anwendung, mit einem langen, zufälligen Secret im URL-Pfad. Die Route beantwortet den Verifizierungs-GET von Meta mit der unveränderten Challenge, nimmt jeden POST an, gibt sofort 200 zurück und stellt die Arbeit in eine Warteschlange. Ein Worker entnimmt der Payload den Absender und den Text und ruft damit den Agent auf, mit der Nummer des Absenders als Thread-ID, damit das Gedächtnis pro Kunde getrennt bleibt.
Prüfen Sie das Secret in der URL statt des Headers X-Hub-Signature-256. Meta signiert mit dem App-Secret des Tech Providers, das nie weitergegeben wird, deshalb kann der Kunde diesen Header nicht validieren.
Sollte der Agent über MCP oder über die Cloud API senden?
Beides funktioniert, der Unterschied liegt darin, wer die Regeln kennt. Die MCP-Tools tragen die WhatsApp-Regeln in ihren Beschreibungen, etwa dass send_message nur innerhalb des 24-Stunden-Fensters funktioniert und send_template der Weg ist, jemanden zu erreichen, der nicht geschrieben hat. Ein Modell, das diese Beschreibungen liest, wählt meistens das richtige Tool, und bei einem frei entscheidenden Agent hilft genau das.
Ein eigenes einfaches Tool, das mit dem Token der Nummer an den Messages-Endpoint der Cloud API sendet, ist einfacher, wenn die Aufgabe des Agents eng umrissen ist, etwa immer der Person zu antworten, die gerade geschrieben hat. Dann liegt die Prüfung des Fensters in Ihrem Code, und dort gehört eine Regel hin, die nie gebrochen werden darf. Freitext außerhalb des Fensters kommt mit dem Fehler 131047 zurück, und der Kunde bekommt nichts zu sehen.
Häufige Fehler
- Zu erwarten, dass MCP eingehende Nachrichten liefert. Ohne Webhook-Route hört der Agent nie von einem Kunden.
- OAuth-Tokens auf einem Server im Arbeitsspeicher zu belassen. Jeder Neustart verlangt eine Anmeldung im Browser; speichern Sie sie dauerhaft in einem Token-Speicher.
- Einen einzigen Thread für alle Kunden zu verwenden. Ordnen Sie das Gedächtnis des Agents der Nummer des Absenders zu.
Verbinden Sie die Nummer auf easycoexistence.com, setzen Sie das Webhook-Ziel auf Ihre Route und laden Sie die MCP-Tools mit einer einzigen OAuth-Anmeldung in den Agent. Ab US$ 9 pro Nummer und Monat, mit jeder weiteren Nummer sinkend bis auf US$ 1, die ersten 3 Tage kostenlos.
Häufig gestellte Fragen
Gilt das nur für Python?
Das Beispiel mit MCPAdapter ist in Python. Der Webhook und die Cloud API sind reines HTTP, daher kann jede Sprache, in der LangChain läuft, empfangen und senden.
Braucht der Agent list_numbers jedes Mal?
Er braucht eine connection_id, und list_numbers ist die einzige Quelle dafür. Bei einer einzelnen Nummer ruft der Agent es einmal zu Beginn auf.
Kann das Team weiterhin vom Telefon aus antworten?
Ja. Coexistence lässt die WhatsApp Business App weiter funktionieren, und Antworten vom Telefon erreichen Ihre Route als Echo-Events, die der Agent berücksichtigen kann.
Liest EasyCoexistence die Unterhaltung mit?
Nein. Meta liefert direkt an Ihre Route, und der Inhalt der Nachrichten wird bei uns nie gespeichert. Die MCP-Tools lesen den Status von Konto und Nummer.
Weiterlesen
Bereit für den Start?
Richten Sie WhatsApp Coexistence in wenigen Minuten statt Monaten ein. Die App funktioniert weiterhin auf dem Telefon.
Kostenlose Testphase startenVerifiziert am