Ein tiefer Einblick in MCPs, Teil 1: Was ist ein MCP überhaupt?

Wenn Sie sich mit KI beschäftigen, haben Sie mit Sicherheit schon vom Model Context Protocol (MCP) gehört. Seit Anthropic diesen neuen Standard im November 2024 angekündigt hat, ist seine Popularität explosionsartig gestiegen. Es gibt MCPs zum Versenden von E‑Mails, MCPs zum Durchsuchen des Internets und MCPs, die andere MCPs ausführen. MCPs ermöglichen es einfachen LLMs, Pull‑Anfragen zu stellen und Flugbuchungen vorzunehmen. Im Mai kündigte Microsoft sogar ein MCP‑Register für Windows an, mit dem Apps Funktionen für KI‑Agenten freigeben können.
Unglaublich! Aber wie funktioniert das? Was ist ein MCP? Wie verwendet man es? Warum ist es so viel beliebter als frühere Ansätze? Wie ermöglicht es Chatbots, Dinge in der realen Welt zu tun? Und wie kann man sein eigenes MCP erstellen?
Als wir beschlossen, unseren eigenen MCP‑Server für die DeepL API zu erstellen, wirkte der Gedanke zunächst abschreckend. Aber wenn man erst einmal wirklich versteht, wie MCPs funktionieren, wie MCPs es Agenten ermöglichen, Tools zu finden und zu nutzen, und wie man einen einfachen MCP‑Server mit 10 Zeilen Code erstellen kann, ist es gar nicht mehr so beängstigend. In dieser Beitragsreihe werden wir versuchen, dieses Thema zu entschlüsseln. Wir werden uns mit folgenden Fragen beschäftigen:
- Was ist ein MCP?
- Wie verwendet man ein MCP in einem KI‑Client?
- Wie baut man einen MCP‑Server?
Legen wir los!
Was bedeutet MCP?
MCP steht für Model Context Protocol (Modellkontextprotokoll).
Das „Model“ ist ein KI‑Modell. Dies kann jede Art von KI‑Oberfläche sein, aber in der Regel basiert es auf einem LLM. Hier bezeichnen wir dies als KI‑Agenten oder KI‑Assistenten.
„Context“ bezieht sich auf den Kontext, in dem der KI‑Agent arbeitet. Im Bereich der KI sprechen wir oft von einem „Kontextfenster“, das sich auf den gesamten Kontext bezieht, den ein LLM berücksichtigt, wenn es seine Antwort auf eine Eingabe generiert – den Gesprächsverlauf, die Systemeingabe und mehr. Damit das MCP funktioniert, gibt eine KI‑Oberfläche dem zugrunde liegenden LLM eine zusätzliche Eingabe, die angibt, welche Tools es verwenden kann und wie diese zu verwenden sind.
„Protocol“ bezeichnet eine Reihe von Regeln, die beschreiben, wie zwei Einheiten über ein Netzwerk kommunizieren. Ein Protokoll, das Sie täglich verwenden, ist HTTP (HyperText Transfer Protocol), das die Kommunikation zwischen einem Webserver und einem Webclient regelt.
Zusammenfassend lässt sich sagen: Das „Model Context Protocol“ ist ein Protokoll, das den Kontext bereitstellt, der es KI‑Modellen ermöglicht, externe Tools und Ressourcen zu nutzen.
Das MCP ist ein offener Standard, der von zwei Entwicklern bei Anthropic entwickelt wurde. Es verwendet JSON‑RPC, ein beliebtes Protokoll zur Definition von Funktionsaufrufen. Inspiriert wurde es vom Language Server Protocol, das Microsoft entwickelt hat, um die Logik hinter der Verarbeitung von Programmiersprachen von IDEs zu entkoppeln.
Ein MCP ist keine Software, keine App und keine API. Aber es ermöglicht KI‑Agenten den Zugriff auf all diese Dinge!
Was macht ein MCP?
LLMs können intelligente und nützliche Antworten auf Benutzereingaben geben. Aber sie haben keinen Zugriff auf externe Dienste, keine Möglichkeit, mit anderer Software zu kommunizieren, und kein Mittel, um aktuelle Informationen abzurufen. Das MCP gibt jeder KI‑Oberfläche die Möglichkeit, Anfragen an beliebige Softwaredienste zu senden und eine Antwort zu erhalten. Es gibt einem KI‑Agenten ein Standardmittel, um auf externe Tools, Ressourcen und Daten zuzugreifen.
Ohne das MCP ist ein KI‑Client nur ein Gehirn ohne Körper, ohne Möglichkeit, auf die Außenwelt zuzugreifen. Mit dem MCP kann ein KI‑Client zu einem Agenten werden.
Wer kann das MCP nutzen?
Da das MCP ein offener Standard ist, kann jeder einen MCP‑Client oder einen MCP‑Server implementieren.
Der Client kann jede App sein, die auf einem LLM basiert. Sie können MCPs in Apps wie Claude Desktop, VSCode, Windsurf und Cursor verwenden. Alternativ können Sie MCPs mit einem KI‑Agenten verwenden, den Sie mit einem Framework wie LangChain oder CrewAI erstellt haben.
Warum ist das MCP so populär geworden?
Ein Grund dafür ist, dass es sich um einen offenen Standard handelt. Jeder KI‑Agent kann das MCP implementieren, ebenso wie jedes Tool. Dadurch ist es attraktiver als Lösungen für das Produkt eines bestimmten Unternehmens, wie beispielsweise die Funktionsaufrufe von OpenAI.
Bei der Entwicklung dieser universellen Lösung ließen sich die MCP‑Entwickler vom Language Server Protocol (LSP) inspirieren. Vor dem LSP musste eine IDE, die Funktionen wie Autovervollständigung oder Syntaxhervorhebung für eine bestimmte Programmiersprache implementieren wollte, eine eigene Integration entwickeln. Das Ergebnis war das, was die Entwickler kürzlich als m × n‑Problem bezeichneten, bei dem Sprachdienste für jede mögliche IDE/Sprachkombination separat implementiert werden mussten. Mit dem LSP benötigt jede Programmiersprache nur eine Integrationsbibliothek. Und eine IDE, die das LSP unterstützt, kann jede solche Sprache bedienen. Ebenso kann jeder KI‑Client, der das MCP unterstützt, den MCP‑Server nutzen, sobald ein Dienst diesen implementiert hat. Der Client muss lediglich das MCP unterstützen.
Das MCP ist auch in anderer Hinsicht flexibel. Es kann lokal oder über ein Netzwerk ausgeführt werden. Und es stammt von Anthropic, einem renommierten Unternehmen, das die Vorteile eines offenen Standards teilen würde.
Warum brauchen KI‑Agenten ein Standardprotokoll?
Wenn LLMs so gut darin sind, Informationen zu verstehen und anzuwenden, können sie dann nicht bereits jeden Software-Dienst nutzen, dessen Beschreibung in ihren Trainingsdaten enthalten ist? Schließlich verstehen LLMs bereits, wie man viele gängige APIs verwendet, was Sie feststellen können, wenn Sie einen Programmierassistenten wie Copilot oder Sourcegraph um Hilfe bitten.
Gäbe man einem LLM jedoch Zugriff auf jede API in seinen Trainingsdaten, würde Chaos ausbrechen. Woher würde es wissen, welche APIs es wann aufrufen muss? Wie würde es Ihren API‑Schlüssel und Ihre Anmeldedaten erhalten, und wie würde es Dienste nutzen, die andere Zugriffsarten erfordern? Was wäre, wenn Sie die Fahrstrecke von Kansas City nach Des Moines oder die aktuelle Temperatur in Bangkok wissen wollten? Es gibt viele Möglichkeiten, diese Informationen zu erhalten. Als Nutzer möchten Sie die Kontrolle über die Aktionen haben, die Ihr LLM ausführt. Dies gilt insbesondere dann, wenn es nicht um das Abrufen von Informationen geht, sondern um Aktionen, die Auswirkungen auf das reale Leben haben, wie das Versenden einer E‑Mail oder das Bestellen einer Pizza.
Zwar könnte ein Agent eine Low‑Level-OpenAPI-Spezifikation oder die gesamte Dokumentation einer API lesen und dann entsprechende API‑Aufrufe tätigen, aber das MCP ermöglicht es Tool-Entwicklern, höherwertige Dienste zu definieren, die für einen KI‑Agenten besonders nützlich sind und ihn in eine sinnvolle Richtung lenken. Bislang ist dies ein Bereich, in dem Menschen noch immer überlegen sind.
Daher ist es derzeit am besten, die Tools und Ressourcen, die das LLM verwenden kann, sowie deren Verwendung explizit zu definieren. Das MCP tut dies auf altmodische Weise, deterministisch – nicht indem es das LLM seinen Zauber wirken lässt, sondern durch Code und JSON.
Aber wie kann ein LLM Tools verwenden?
Grundsätzlich ist ein LLM eine Maschine, die Token generiert – Token, denen Menschen in Form von Text, Bildern, Audio usw. begegnen. Wie kann eine solche Maschine also auf Tools und Ressourcen zugreifen? Woher weiß sie, dass sie diesen Zugriff hat, und woher weiß sie, welchen sie verwenden soll?
Der springende Punkt ist, dass LLMs, wie Maximilian Schwarzmüller betont, tatsächlich nur über Token mit der Außenwelt kommunizieren können. Sie nehmen Token als Eingabe und produzieren Token als Ausgabe. Diese Token können Entitäten enthalten, die bedeuten: „Ich möchte ein Tool verwenden.“ Um anzuzeigen, dass es ein Tool oder eine Ressource verwenden möchte, und um diese tatsächlich zu verwenden, generiert ein LLM Standard-Token, die die umgebende Software als Tool-Aufruf erkennen und abfangen. Diese Software ruft dann einen Dienst auf und gibt die Ausgabe an das LLM zurück.
Das LLM könnte hier spezielle Token verwenden. In der Regel verwendet es jedoch nur bestimmte Trennzeichen und Sprache – so können Sie diese Funktion durch Fine‑Tuning in ein bestehendes LLM integrieren. Beispielsweise könnten Sie Start‑ und End‑Tags in eckigen Klammern verwenden, die JSON umschließen, wie in dieser Beispielausgabe des Agenten:
Sure! I can create a new spreadsheet for you. Hang on…
[tool-start]
{
"tool": "spreadsheets",
"action": "create"
}
[tool-end]
Genau das haben Forscher in ihrer 2023 veröffentlichten Toolformer-Studie getan, die, wie der Titel schon sagt, zeigt, dass „Sprachmodelle sich selbst den Umgang mit Tools beibringen können“ („Language Models Can Teach Themselves to Use Tools“). In dieser Studie generierten die Autoren Trainingsdaten, die Klartextdarstellungen von API‑Aufrufen und deren Ergebnissen enthielten. Durch die Feinabstimmung eines LLMs mit diesen zusätzlichen Daten erzeugten sie ein LLM, das diese APIs aufrief, um eine vielversprechende Antwort auf eine Eingabeaufforderung zu generieren.
Sie verwendeten das einfache Format:
[function_name(data) → result]
Da sie beispielsweise wussten, dass LLMs Schwierigkeiten mit Mathematik haben, stellten sie ein Taschenrechner-Tool zur Verfügung. Anschließend nahmen sie folgende Zeichenfolgen in die Trainingsdaten auf:
Out of 1,400 participants, 400 (or [Calculator(400 / 1400) → 0.29] 29%) passed the test.
und
The name derives from “la tortuga”, the Spanish word for [MT(“tortuga”) → turtle] turtle.
Durch die Feinabstimmung eines LLMs mit solchen Daten schufen sie ein LLM, das wusste, wie man APIs aufruft, um die aussichtsreichste Antwort auf eine bestimmte Eingabe zu generieren.
Aber man muss ein LLM nicht unbedingt feinjustieren, damit es Tools verwenden kann. Tatsächlich braucht man dazu nur einen Prompt. Dieser Artikel zeigt, wie man einem LLM beibringt, Tools zu verwenden, indem man ihm ausschließlich einen geeigneten Prompt gibt, der durch [[qwen-tool-start]] und [[qwen-tool-end]] begrenzt ist.
Probieren Sie es selbst aus! Besuchen Sie einfach Ihren Lieblings-Chatbot und sagen Sie ihm:
Congratulations! You now have the ability to use a tool to do multiplication. When you need to do a calculation, all you need to do is output the following syntax:
[Math]
{
"arg1": {value},
"arg2": {value}
}
[/Math]
where, of course, each {value} represents a value you want to multiply. Got it?
Dann geben Sie dem LLM eine Rechenaufgabe und beobachten, wie es die Syntax, die Sie ihm für Ihr Mathematik-Tool gegeben haben, getreu ausgibt.
Moderne LLMs verwenden Tools immer noch auf ähnliche Weise. Anthropic beschreibt beispielsweise hier, wie sie eine Systemaufforderung für Claude erstellen, damit dieser Tools in ihrer API verwenden kann.
Wie verarbeitet ein LLM die Ausgabe eines Tools?
Wie empfängt ein LLM die Ausgabe eines Tools? Auch hier dreht sich wieder alles um Token. Sobald der KI‑Client die Ausgabe eines Tools erhält, gibt er diese als Eingabe an das LLM zurück, jedoch so, dass das LLM weiß, dass es sich um eine Tool-Ausgabe und nicht um eine Eingabe des Endnutzers handelt.
Zusammenfassung
Zusammenfassend lässt sich sagen, dass Folgendes passiert, wenn ein LLM ein Tool verwendet:
- Der Nutzer gibt eine Eingabe ein.
- Das LLM verarbeitet diese Eingabe.
- Während der Generierung der Ausgabe „entscheidet“ das LLM, dass der Aufruf eines Tools der beste Weg ist, um seine Ausgabe zu vervollständigen. Das bedeutet, dass es eine Reihe von Token ausgibt, von denen es aufgrund seines Trainings weiß, dass sie es zum Aufruf eines Tools berechtigen.
- Der KI‑Client erkennt diese Tokens als etwas, das ein Tool aufrufen sollte, fängt sie ab, parst die JSON‑Daten in Parameter und alles andere in der Anfrage und sendet diese an das entsprechende Tool.
- Das Tool generiert eine Ausgabe, die möglicherweise die Verwendung einer API beinhaltet. Es sendet diese an den KI‑Client zurück, der sie an das LLM weiterleitet.
- Das LLM verarbeitet die Tool-Ausgabe.
- Das LLM verwendet diese Ausgabe, um eine Antwort für den Nutzer zu erstellen.
Das war meine kurze Einführung in das MCP und seine Implementierung in LLMs. In meinem nächsten Beitrag zeige ich Ihnen, wie Sie MCPs in Ihrem eigenen KI‑Client verwenden können.
Über den Autor
Als Developer Evangelist bei DeepL unterstützt Ben Morss alle, die die API von DeepL nutzen möchten, um auf deren erstklassige KI‑Übersetzungen zuzugreifen. Zuvor war er bei Google als Produktmanager für Chrome und als Developer Advocate für ein besseres Web tätig. Davor war er Softwareentwickler bei der New York Times und AOL und einst sogar Vollzeitmusiker. Er hat einen BA in Computer Science von der Harvard University und promovierte in Musik an der University of California in Davis. Manchmal macht er noch Musik mit der Band Ancient Babies, analysiert Popsongs bei Rock Theory und schreibt ein Musical, das nicht wirklich von Steve Jobs handelt.