
Teilen Sie:
Atique is a computer graduate and proficient Python developer with a passion for exploring new technologies. With a strong background in programming and system engineering, he holds over 10 years of experience in automation, testing, and integration. His interests span single-board computers, software-defined radios, and continuous experimentation with generative AI tools.
Telefonie MCP Server für Agentische KI und Sprachmodelle
Einführung in MCP (Model-Context Protocol)
Das Model-Context Protocol (MCP) ist eine Spezifikation, die es großen Sprachmodellen (LLMS) ermöglicht, externe Tools und Dienste zu erkennen und zu nutzen. Betrachten Sie es als eine universelle Sprache, die es LLMs ermöglicht, mit APIs, Datenbanken und anderen Anwendungen auf standardisierte Weise zu kommunizieren.
In diesem Tutorial lernen Sie, MCP-Tools zu erstellen, die sich in jede beliebige KI-Anwendung von Agentic (z. B. Claude Desktop, Github Copilot oder Cursor) integrieren lassen und Anrufe tätigen, SMS versenden und die Antworten sammeln können, die dann in der Anwendung angezeigt werden.
>> TL;DR: Sie finden den kompletten Arbeitscode auf GitHub.
Animated view of Claude’s developer-friendly welcome screen asking, 'How was your day, Mr. Developer?' with contextual mode options like Code, Write, and Learn.
Warum ist MCP nützlich?
Erweiterbarkeit: MCP ermöglicht es Entwicklern, die Fähigkeiten von LLMs über deren eingebautes Wissen hinaus zu erweitern. Durch die Erstellung MCP-kompatibler Tools können Sie ein Modell dazu befähigen, auf Echtzeitinformationen (wie Wettervorhersagen oder Aktienkurse) zuzugreifen, mit privaten Wissensdatenbanken zu interagieren oder Aktionen in anderen Systemen auszulösen (wie das Versenden einer E-Mail oder das Buchen eines Meetings).
Standardisierung: Es bietet eine einheitliche Methode für die Interaktion von Modellen mit Werkzeugen, unabhängig von der zugrunde liegenden Implementierung. Dies vereinfacht den Entwicklungsprozess sowohl für die Entwickler von Werkzeugen als auch von Modellen.
Sicherheit und Kontrolle: MCP ermöglicht eine granulare Kontrolle darüber, auf welche Werkzeuge ein Modell zugreifen kann, und stellt sicher, dass das Modell nur Aktionen durchführt, zu denen es berechtigt ist.
Voraussetzungen
Python-Kenntnisse: Fortgeschrittene Kenntnisse der Programmiersprache Python und Python v3.13+.
Docker-Desktop: Die Anwendung wird in einer containerisierten Umgebung ausgeführt und verwendet Docker Compose.
Claude Desktop Anwendung: In diesem Tutorial wird Clause verwendet, aber jede agentenbasierte KI-Anwendung wie Cursor, Windsurf oder GitHub Copilot, die mit VSCode geliefert wird, kann ebenfalls funktionieren.
Vonage API Account: Um Anrufe tätigen und mit SMS kommunizieren zu können, ist ein Vonage Account erforderlich. Dazu gehören ein API-Schlüssel, ein API-Geheimnis, eine lange virtuelle Nummer und eine Sprachanwendung, die über das Vonage-Dashboard erstellt werden kann.
Ngrok Reverse Proxy: Dient als Webhook für die Erfassung von Ereignissen wie Anrufverlauf und eingehende SMS.
Vonage API-Konto
Um dieses Tutorial durchzuführen, benötigen Sie ein Vonage API-Konto. Wenn Sie noch keines haben, können Sie sich noch heute anmelden und mit einem kostenlosen Guthaben beginnen. Sobald Sie ein Konto haben, finden Sie Ihren API-Schlüssel und Ihr API-Geheimnis oben auf dem Vonage-API-Dashboard.
Wie MCP funktioniert: Ein Beispiel für ein Wetter-Tool
Um zu verstehen, wie MCP funktioniert, betrachten wir ein einfaches Beispiel: einen Wetterserver. Die Interaktion wird von einem MCP-Klientverwaltet, der lokal als Plugin für die LLM- oder Agentic AI-Anwendung läuft. Dieser Client ist für die Kommunikation mit dem entfernten MCP-Server zuständig.
Benutzeraufforderung: Ein Nutzer fragt den LLM: "Wie ist das Wetter in London?"
LLM an MCP-Client: Der LLM versteht die Absicht des Benutzers und verwendet sein lokales MCP-Client-Plugin, um ein geeignetes Werkzeug zu finden.
Werkzeugermittlung (Client -> Server): Der MCP-Client sendet eine Anfrage an den MCP-Server, um die verfügbaren Werkzeuge zu ermitteln.
Werkzeugauswahl: Der MCP-Server antwortet mit einer Liste von Werkzeugen, darunter get_weather(Standort: str). Der LLM wählt über den Client dieses Tool aus.
Werkzeugaufruf (Client -> Server): Der MCP-Client sendet eine Anfrage an den MCP-Server zur Ausführung des Tools get_weather Tool mit dem Parameter Standort="London".
Ausführung: Der MCP-Server empfängt die Anfrage, führt die zugrunde liegende Funktion aus (die wiederum eine Wetter-API aufruft) und ermittelt das aktuelle Wetter in London.
Antwort (Server -> Client -> LLM): Der Server sendet das Ergebnis (z.B. "Das Wetter in London ist 15°C und bewölkt.") zurück an den MCP-Client, der es wiederum an den LLM weitergibt.
Endgültige Antwort: Der LLM formatiert diese Informationen in einer benutzerfreundlichen Antwort und präsentiert sie dem Benutzer.
Dieser Arbeitsablauf zeigt, wie der MCP-Client als lokale Brücke fungiert, während der MCP-Server die eigentliche Werkzeugfunktionalität bereitstellt und so eine nahtlose Verbindung zwischen dem Sprachmodell und den externen Funktionen schafft.
Sequence diagram showing how a user query about London's weather flows through an LLM, MCP Client, MCP Server, and Weather API to return a response.
Was ist ein MCP-Telefonieserver?
Der Telephony MCP Server ist ein Python-basierter Server, der die Kommunikationsfunktionalitäten von Vonage als eine Reihe von Tools über das Model-Context Protocol zur Verfügung stellt. Er fungiert als Vermittler, der Anfragen aus einem Sprachmodell in API-Aufrufe an die Vonage-Plattform übersetzt und die Ergebnisse zurückgibt.
Dieser MCP-Server nutzt die Kommunikations-APIs von Vonage. Mit diesen APIs können Sie programmatisch Telefonanrufe tätigen und empfangen, Nachrichten wie RCS, SMS, WhatsApp senden, WebRTC-Videoanwendungen erstellen und vieles mehr.
Auf der Grundlage dieser APIs kann ein Sprachmodell wie Claude Telefonie-Aktionen wie Anrufe und Textnachrichten durchführen, indem es einfach die vom Server bereitgestellten Tools verwendet.
Liste der Vonage-Tools im Telefonie-MCP-Server
Der Telephony MCP Server wird mit einer Reihe von vordefinierten Tools für gängige Telefonieaufgaben geliefert:
voice_call(to: str, message: str, from_: str = "VONAGE_LVN"): Leitet einen Sprachanruf an eine bestimmte Nummer ein und spricht eine Nachricht.
send_sms(to: str, text: str, from_: str = "VONAGE_LVN"): Sendet eine SMS-Nachricht an eine bestimmte Nummer.
check_call_status(call_uuid: str = None): Prüft den Status eines bestimmten Anrufs oder listet alle aktiven Anrufe auf.
voice_call_with_input(to: str, prompt_message: str, from_: str = "VONAGE_LVN", wait_for_result: bool = True): Tätigt einen Voice-Anruf, spielt eine Eingabeaufforderung ab und verwendet Spracherkennung, um die Antwort des Empfängers zu erfassen.
sms_with_input(to: str, text: str, from_: str = "VONAGE_LVN", wait_for_result: bool = True): Sendet eine SMS-Nachricht und wartet auf eine Antwort des Empfängers.
So funktioniert das send_sms-Tool
Gehen wir durch den Prozess der Verwendung der Funktion send_sms Werkzeugs mit einem Sprachmodell wie Claude, das mit dem Server über einen lokalen MCP-Klient.
Benutzer: "Hey Claude, kannst du meinem Freund unter +1-202-555-0183 eine Nachricht schicken und ihm sagen, dass ich 10 Minuten zu spät zu unserem Treffen komme?"
Claude (LLM): Versteht die Absicht des Benutzers, eine SMS zu senden. Er weiß durch seine MCP-Integration, dass ein send_sms Werkzeug verfügbar ist.
Claude (Werkzeugnutzung über MCP-Client): Claude stellt über seinen lokalen MCP-Client eine Anfrage an den Telephony MCP Server und ruft die Funktion send_sms Tool mit den Parametern auf:
an: "+12025550183"
Text"Hallo, ich komme 10 Minuten zu spät zu unserer Besprechung."
Telefonie MCP-Server: Empfängt die Anfrage vom MCP-Client. Er erstellt und sendet dann eine API-Anfrage an die Vonage SMS API mit den angegebenen Details.
Vonage API: Verarbeitet die Anfrage und sendet die SMS-Nachricht an das Telefon des Empfängers. Anschließend gibt sie einen Erfolgsstatus an den Telefonie-MCP-Server zurück.
Telefonie MCP-Server an Client: Der Server formatiert den Erfolgsstatus von Vonage und sendet ihn an den MCP-Client zurück.
Claude (Antwort): Der MCP-Client gibt die Erfolgsbestätigung an Claude weiter, der daraufhin dem Benutzer mitteilt: "Ok, ich habe die Nachricht an deinen Freund geschickt."
Sequence diagram illustrating how Claude uses MCP and the Vonage SMS API to send a message on behalf of a user.
So richten Sie den Telefonie-MCP-Server ein
Schritt 1: Klonen des Repositorys
git clone https://github.com/Vonage-Community/telephony-mcp-server
cd telephony-mcp-server
Schritt 2: Einen ngrok-Tunnel öffnen
Um Webhooks von Vonage zu empfangen, muss Ihr lokaler Server über das Internet erreichbar sein. Verwenden Sie ngrok, um Ihren Server freizugeben, öffnen Sie eine neue Registerkarte in Ihrem Terminal und führen Sie aus:
ngrok http 8080Die Ausgabe sieht dann etwa so aus:
Session Status online
Version 3.22.1
Forwarding https://4cc705fd88d9.ngrok.app -> http://localhost:8080Im obigen Beispiel hat ngrok einen für das Internet zugänglichen Domänennamen erstellt und zugewiesen https://4cc705fd88d9.ngrok.appzugewiesen, der den Datenverkehr an den lokal gehosteten Callback-Server weiterleiten kann, der auf Port 8080 läuft. Wir werden ihn in der .env-Konfigurationsdatei wie folgt verwenden:
CALLBACK_SERVER_URL=https://4cc705fd88d9.ngrok.app
Sie können mehr lesen über Testen mit ngrok in unserem Entwicklerportal nachlesen.
Schritt 3: Erstellen einer Vonage-Anwendung
Melden Sie sich beim Vonage Developer Dashboard an und erstellen Sie eine neue Anwendung. Generieren Sie einen privaten Schlüssel, laden Sie ihn herunter und legen Sie ihn in das Stammverzeichnis des Projekts. Er wird in den Docker-Container kopiert.
Aktivieren Sie die Funktionen Voice und Messages, wie unten gezeigt. Sie müssen auch die Webhook-Endpunkte für jede Funktion konfigurieren. Da wir diese Endpunkte jedoch nicht tatsächlich verwenden werden, können Sie einfach Platzhalter hinzufügen.
Für Voice:
Antwort-URL:
https://4cc705fd88d9.ngrok.app/nccoURL der Veranstaltung:
https://4cc705fd88d9.ngrok.app/event
Für Nachrichten:
Eingehende URL:
https://4cc705fd88d9.ngrok.app/eventStatus-URL:
https://4cc705fd88d9.ngrok.app/event
Creating a Vonage application for a Telephony MCP Server in the Vonage API Dashboard, showing the configuration of Voice and Messages capabilities, webhook URLs, and key generation.
Schritt 4: Hinzufügen eines eingehenden Webhooks zum Empfang von SMS
Gehen Sie auf dem Vonage Developer Dashboard zu Ihre Numbers und bearbeiten Sie die Nummer, die Sie verwenden möchten, indem Sie auf das Stiftsymbol klicken. Fügen Sie unter dem Abschnitt "Inbound Webhook URL" im Konfigurationsfenster die ngrok-URL mit dem Zusatz "/event" hinzu, z. B. https://4cc705fd88d9.ngrok.app/event.
Configuring the inbound SMS webhook URL for a Vonage virtual number in the Dashboard under 'Your Numbers' settings.
Sobald Sie die Konfiguration gespeichert haben, werden alle SMS, die an die oben genannte virtuelle Nummer gesendet werden, weitergeleitet an https://4cc705fd88d9.ngrok.app/event
Schritt 5: Fügen Sie Ihre Vonage-Anmeldedaten hinzu
Erstellen Sie eine Datei namens .env im Stammverzeichnis des Projekts.
touch .envGeben Sie dort Ihre Vonage-Anmeldedaten ein:
VONAGE_API_KEY=your_api_key
VONAGE_API_SECRET=your_api_secret
VONAGE_APPLICATION_ID=your_application_id
VONAGE_PRIVATE_KEY_PATH=/app/private.key # Path inside the container
VONAGE_LVN=your_vonage_long_virtual_number
CALLBACK_SERVER_URL=https://<ngrok_generated_url>
Starten Sie den Telephony MCP Server mit Docker
Das Projekt verwendet Docker Compose, um die Ausführung der erforderlichen Dienste zu vereinfachen.
Aufbau und Start des Containers
Führen Sie im Stammverzeichnis des Projekts den folgenden Befehl aus:
docker-compose up --buildDieser Befehl wird:
Erstellen Sie ein einzelnes Docker-Image für die Anwendung.
Starten Sie einen Container, in dem zwei Dienste intern laufen: der telephony-mcp-server und der callback-serverjeweils an einem anderen Port.
Die Dienste werden im Vordergrund gestartet, so dass Sie ihre Protokolle direkt in Ihrem Terminal überwachen können.
2. Verify, dass die Server laufen
Der Telephony MCP Server wird verfügbar sein unter http://localhost:8000.
Der Callback-Server läuft auf http://localhost:8080.
Integration des MCP-Telefonieservers mit Claude
Sie können den Telephony MCP Server mit Claude über Clients integrieren, die MCP unterstützen, wie die Claude Desktop-Anwendung.
Öffnen Sie die Claude Desktop-Einstellungen: Navigieren Sie zu Claude > Einstellungen > Entwickler > Konfig bearbeiten, um die claude_desktop_config.json Datei.
Step-by-step instructions to access and edit the Claude desktop MCP configuration file via Developer Settings.
Telefonie-MCP-Server-Konfiguration hinzufügen: Geben Sie die folgende json-Datei in claude_desktop_config.json:
{
"mcpServers": {
"telephony": {
"command": "npx",
"args": [
"mcp-remote",
"http://127.0.0.1:8000/mcp"
]
}
}
}
Speichern Sie die json-Datei, beenden Sie Claude und starten Sie es neu, damit die Änderungen wirksam werden.
Bestätigen Sie, dass Claude verbunden ist: Gehen Sie zu Claude > Einstellungen > Entwickler. Es sollte ein Eintrag "Telefonie" mit dem Status "läuft" vorhanden sein.
Claude's Developer settings showing the 'telephony' tool actively running with an MCP remote endpoint configured via NPX.
Ausführen von MCP-Tools in Claude Desktop
Nach der Integration können Sie Claude Befehle geben, die die Telefonie-Tools verwenden. Sie können die Verfügbarkeit der Werkzeuge im Menü "Suchen und Werkzeuge" überprüfen:
Screenshot showing Claude’s prompt interface with MCP tools like send_sms and voice_call enabled via the tools menu.
Stellen Sie sich vor, Sie möchten einen Freund fragen, ob er zum Abendessen Zeit hat. Versuchen Sie, Claude die folgende Aufforderung zu senden: "Senden Sie eine Nachricht an Jane unter +1-202-555-0125 und fragen Sie sie, ob sie heute Abend Zeit zum Essen hat."
Claude erkennt die Absicht und das erforderliche Werkzeug. Möglicherweise zeigt er Ihnen vor der Ausführung eine Bestätigung an:
Tool: send_sms
to: "+12025550125"
text: "Hi Jane, are you free for dinner tonight?"
[Execute] [Cancel]Nachdem Sie zugestimmt haben, wird Claude das Tool verwenden und Ihnen eine endgültige Bestätigung geben:
"Ich habe die Nachricht an Jane geschickt."
Später können Sie ein anderes Werkzeug verwenden:
"Rufen Sie Jane an und fragen Sie, ob sie meine Nachricht erhalten hat."
Und Claude würde die Funktion Stimme_Anruf verwenden, um Sie zu verbinden.
Conversation with Claude using the sms_with_input MCP tool to send and follow up on a message asking if someone likes ice cream.
Schlussfolgerung und Schlussbemerkungen
Der Telefonie-MCP-Server ist ein überzeugendes Beispiel dafür, wie das Model-Context-Protokoll die Lücke zwischen fortgeschrittenen Sprachmodellen und realen Aktionen schließen kann. Durch die Bereitstellung einer standardisierten Möglichkeit für LLMs, auf Kommunikations-APIs zuzugreifen, erschließen wir eine neue Klasse von Anwendungen, bei denen KI-Assistenten in unserem Namen auf sinnvolle und greifbare Weise mit der Welt interagieren können.
Dieses Projekt dient nicht nur als praktisches Werkzeug, sondern auch als Blaupause für die Erweiterung der Fähigkeiten von Sprachmodellen auf jeden Bereich, der über eine API verfügt. Die Möglichkeiten sind nur durch unsere Vorstellungskraft begrenzt.
Haben Sie Fragen oder Anregungen zu diesem Tutorial? Laden Sie den Code und andere großartige Projekte von der Vonage-Gemeinschaft. Wir freuen uns immer über die Beteiligung der Community. Teilen Sie Ihre Gedanken mit uns auf X (früher Twitter) oder beteiligen Sie sich an der Diskussion in unserem Vonage Community Slack-Kanal und zitieren Sie diesen Artikel, um eine schnelle Antwort zu erhalten. Sie können sich auch mit mir auf Twitter.
Teilen Sie:
Atique is a computer graduate and proficient Python developer with a passion for exploring new technologies. With a strong background in programming and system engineering, he holds over 10 years of experience in automation, testing, and integration. His interests span single-board computers, software-defined radios, and continuous experimentation with generative AI tools.
