Ein detaillierter Einblick in MCPs, Teil 1: Was ist 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, hat seine Popularität erheblich zugenommen. Es gibt MCPs zum Versenden von E‑Mails, MCPs zum Durchsuchen des Internets und MCPs, die andere MCPs ausführen. MCPs ermöglichen es bescheidenen LLMs, Pull-Anfragen zu stellen und Flugbuchungen vorzunehmen. Im Mai kündigte Microsoft sogar ein MCP-Register für Windows an, das Apps ermöglicht, Funktionen für KI-Agenten verfügbar zu machen.
Wunderbar! Aber wie? Was ist MCP? Wie wird es verwendet? Warum ist es so viel beliebter geworden als frühere Bemühungen? Wie ermöglicht es Chatbots, Aufgaben in der realen Welt auszuführen? Und wie können Sie Ihr eigenes erstellen?
Als wir beschlossen, unseren eigenen MCP-Server für die DeepL API, erschien uns dies zunächst einschüchternd. Sobald Sie jedoch verstanden haben, wie MCPs funktionieren, wie MCPs es Agenten ermöglichen, Tools zu entdecken und zu verwenden, und wie Sie einen grundlegenden MCP-Server mit nur 10 Zeilen Code erstellen können, ist es nicht mehr so anspruchsvoll. In dieser Reihe von Beiträgen werden wir uns bemühen, dieses Thema zu erläutern. Wir werden untersuchen:
- Was ist MCP?
- Wie verwendet man MCP in einem KI-Kunden?
- Wie man einen MCP-Server aufbaut
Zur Studie
Was bedeutet MCP?
MCP steht für ModelContextProtocol.
Das„Modell“ist ein KI-Modell. Dies kann jede Art von KI-Oberfläche sein, jedoch basiert sie in der Regel auf einem LLM. In diesem Zusammenhang bezeichnen wir dies als KI-Agent oder KI-Assistent.
„Kontext“bezieht sich auf den Kontext, in dem der KI-Agent agiert. In der KI sprechen wir häufig von einem „Kontextfenster“, das sich auf den gesamten Kontext bezieht, den ein LLM berücksichtigt, wenn er seine Antwort auf eine Eingabe generiert – den Gesprächsverlauf, die Systemaufforderung und mehr. Damit MCP funktioniert, gibt eine KI-Oberfläche dem zugrunde liegenden LLM eine zusätzliche Eingabeaufforderung, die angibt, welche Tools es verwenden kann und wie diese zu verwenden sind.
„Protokoll“bezeichnet eine Reihe von Regeln, die die Art und Weise 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.
MCP ist ein offener Standard, der von zwei Ingenieure von Anthropicentwickelt wurde. Es verwendet JSON-RPC, ein weit verbreitetes Protokoll zur Definition von Funktionsaufrufen. Und es ist inspiriert von Sprache Server Protocol, das von Microsoft entwickelt wurde, um die Logik hinter der Verarbeitung von Programmiersprachen von IDEs zu entkoppeln.
MCP ist keine Software, keine App und keine API. Allerdings erhalten KI-Agenten Zugriff auf all diese Informationen.
Was ist die Aufgabe von MCP?
LLMs können intelligente und nützliche Antworten auf Nutzer-Eingaben geben. Allerdings haben sie keinen Zugang zu externen Diensten, keine Möglichkeit, mit anderer Software zu kommunizieren, und keine Möglichkeit, aktuelle Informationen abzurufen. MCP ermöglicht es jeder KI-Oberfläche, Anfragen an jeden Software-Dienst zu senden und eine Antwort zu erhalten. Es bietet einem KI-Agenten eine Standardmethode für den Zugriff auf externe Tools, Ressourcen und Daten.
Ohne MCP ist ein KI-Client lediglich ein Gehirn ohne Körper, ohne Möglichkeit, auf die Außenwelt zuzugreifen. Mit MCP kann ein KI-Client als Agent fungieren.
Wer kann MCP nutzen?
Da MCP ein offener Standard ist, kann jeder einen MCP-Kunden oder einen MCP-Server implementieren.
Der Kunde kann jede App sein, die auf einem LLM basiert. Sie können MCPs in Apps wie Claude Desktop, VSCode, Windsurf und Cursor. Alternativ können Sie MCPs mit einem KI-Agenten verwenden, den Sie mit einem Framework wie LangChain erstellt haben. LangChain oder CrewAIerstellt haben.
Warum ist MCP so populär geworden?
Ein Grund dafür ist, dass es sich um einen offenen Standard handelt. Jeder KI-Agent kann 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. Funktionsaufruf.
Bei der Entwicklung dieser universellen Lösung ließen sich die Entwickler von MCP vom Language Server Protocol (LSP) inspirieren. Vor LSP musste eine IDE, wenn sie Funktionen wie Autovervollständigung oder Syntaxhervorhebung für eine bestimmte Sprache implementieren wollte, eine eigene Integration entwickeln. Das Ergebnis war das, was die Entwickler kürzlich als m × n-Problem, bei dem Sprachdienste für jede mögliche IDE/Sprachekombination separat implementiert werden mussten. Mit LSP benötigt jede Sprache nur eine Integrationsbibliothek. Eine IDE, die LSP unterstützt, kann jede solche Sprache unterstützen. Ebenso kann jeder KI-Client, der MCP unterstützt, diesen nutzen, sobald ein Dienst einen MCP-Server implementiert hat. Der Kunde muss lediglich MCP unterstützen.
MCP ist auch in anderer Hinsicht flexibel. Es kann lokal oder über ein Netzwerk ausgeführt werden. Und es stammt von Anthropic, einem angesehenen Unternehmen, das die Vorteile eines offenen Standards teilen würde.
Warum benötigen KI-Agenten ein Standardprotokoll?
Da 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 beliebte APIs verwendet, wie Sie feststellen werden, wenn Sie einen Programmierassistenten wie Copilot oder Sourcegraph um Hilfe bitten.
Wenn man einem LLM jedoch Zugriff auf alle APIs in seinen Trainingsdaten gewähren würde, würde dies zu Chaos führen. Wie würde es wissen, welche APIs wann aufgerufen werden müssen? Wie würde es Ihren API-Schlüssel und Ihre Anmeldedaten erhalten und wie würde es Dienste nutzen, die andere Arten des Zugriffs erfordern? Was wäre, wenn Sie die Entfernung von Kansas City nach Des Moines oder die aktuelle Temperatur in Bangkok wissen möchten? Es gibt verschiedene Möglichkeiten, diese Informationen zu finden. 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 Handlungen, die Auswirkungen auf die Welt haben, wie das Versenden einer E‑Mail oder die Bestellung einer Pizza.
Es ist richtig, dass ein Agent eine Low-Level-OpenAPI-Spezifikation oder die gesamte API-Dokumentation lesen und verstehen und dann entsprechende API-Aufrufe durchführen könnte. MCP ermöglicht es Werkzeugherstellern jedoch, höherwertige Dienste zu definieren, die für einen KI-Agenten besonders nützlich sind und diesen in eine sinnvolle Richtung lenken. Bislang ist dies ein Bereich, in dem Menschen noch immer überlegen sind.
Daher stellt sich heraus, dass es derzeit am besten ist, die Tools und Ressourcen, die das LLM verwenden kann, sowie die Art und Weise, wie es diese nutzen kann, explizit zu definieren. MCP wendet diese Methode auf traditionelle Weise an, deterministisch – nicht indem das LLM seine Magie entfaltet, sondern durch Code und JSON.
Wie kann ein LLM jedoch Werkzeuge einsetzen?
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 Zugang zu Werkzeugen und Ressourcen erhalten? Wie kann es wissen, dass es über einen solchen Zugriff verfügt, und wie kann es wissen, welchen es verwenden soll?
Der entscheidende Punkt ist, dass, wie Maximilian Schwarzmüller, können LLMs nur mit Token mit der Außenwelt kommunizieren. Sie nehmen Token als Eingabe und erzeugen Token als Ausgabe. Diese Token können auch Entitäten umfassen, 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 nutzen, generiert ein LLM Standard-Token, die von der umgebenden Software als Tool-Aufruf erkannt und abgefangen werden. Diese Software ruft dann einen Dienst auf und sendet die Ausgabe an das LLM zurück.
Der LLM könnte hier spezielle Token verwenden. In der Regel werden jedoch nur bestimmte Trennzeichen und Sprache verwendet. Auf diese Weise können Sie diese Fähigkeit durch Feinabstimmung in ein bestehendes LLM integrieren. Beispielsweise könnten Sie Start- und End-Tags in eckigen Klammern verwenden, die JSON umschließen, wie in diesem Beispieltext:
Selbstverständlich! Ich kann eine neue Tabelle für Sie erstellen. Bitte warten Sie einen Moment...
[tool-start]
{
"tool": "spreadsheets",
"action": "create"
}
[tool-end]
Genau dies haben Forscher in ihrer Veröffentlichung „Toolformer“ aus dem Jahr 2023, der, wie der Titel schon sagt, zeigte, dass „Sprachmodelle sich selbst den Umgang mit Werkzeugen beibringen können”. In dieser Studie generierten die Autoren Trainingsdaten, die Klartextdarstellungen von API-Aufrufen und deren Ergebnissen enthielten. Durch die Feinabstimmung eines LLM mit diesen zusätzlichen Daten entwickelten sie ein LLM, das diese APIs aufruft, um eine vielversprechende Antwort auf eine Eingabeaufforderung zu generieren.
Sie verwendeten das einfache Format:
[function_name(data) → result]
Da bekannt ist, dass LLMs Schwierigkeiten mit Mathematik haben, wurde ein Taschenrechner-Tool bereitgestellt. Anschließend haben sie folgende Zeichenfolgen in die Trainingsdaten aufgenommen:
Von 1.400 Teilnehmern sind 400 (oder [Rechner(400 / 1400) → 0,29] 29 %) haben den Test bestanden.
und
Der Name leitet sich von „la tortuga“ ab, dem Spanischen Wort für [MT(„tortuga”) → Schildkröte] Schildkröte.
Durch die Feinabstimmung eines LLM mit solchen Daten schufen sie ein LLM, das wusste, wie man APIs aufruft, um die vielversprechendste Antwort auf eine bestimmte Eingabe zu generieren.
Es ist jedoch nicht erforderlich, ein LLM genau anzupassen, damit es Tools verwenden kann. Es stellt sich heraus, dass Sie lediglich eine Aufforderung benötigen. Dieser Artikel zeigt, wie man einem LLM beibringt, Tools zu verwenden, die durch [[qwen-tool-start]] und [[qwen-tool-end]] begrenztes JSON verwenden, indem man ihm lediglich eine entsprechende Eingabeaufforderung gibt.
Sie können dies selbst ausprobieren. Besuchen Sie einfach Ihren gespeicherten Chatbot und teilen Sie ihm mit:
Herzlichen Glückwunsch! Sie haben nun die Möglichkeit, ein Tool zur Multiplikation zu verwenden. Wenn Sie eine Berechnung durchführen müssen, geben Sie einfach die folgende Syntax aus:
[Mathematik]
{
„arg1”: {Wert},
„arg2”: {Wert}
}
[/Math]
wobei natürlich jeder {Wert} einen Wert darstellt, den Sie multiplizieren möchten. OK?
Geben Sie dem LLM anschließend eine mathematische Aufgabe und beobachten Sie, wie es die Syntax, die Sie für Ihr Mathematik-Tool angegeben haben, zuverlässig ausgibt.
Moderne LLMs verwenden Tools nach wie vor auf ähnliche Weise. Anthropic beschreibt beispielsweise hier die Vorgehensweise bei der Erstellung einer Systemaufforderung für Claude, um Tools in ihrer API zu verwenden.
Wie verarbeitet ein LLM die Ausgabe eines Tools?
Wie erhält ein LLM die Ausgabe des Tools? Es dreht sich erneut alles um Token. Sobald der KI-Client die Ausgabe eines Tools erhält, leitet er diese als Eingabe an das LLM weiter, jedoch in einer Weise, dass das LLM erkennt, dass es sich um eine Tool-Ausgabe und nicht um eine Eingabe des Endnutzers handelt.
Alles zusammenfassen
Zusammenfassen lässt sich sagen, dass Folgendes geschieht, wenn ein LLM ein Tool verwendet:
- Nutzer bei der Eingabe
- LLM verarbeitet diese Eingabe.
- Während des Generierens der Ausgabe „entscheidet“ das LLM, dass der Aufruf eines Tools der beste Weg ist, um seine Ausgabe zu vervollständigen. Dies bedeutet, dass es eine Reihe von Tokens ausgibt, die es aufgrund seines Trainierens als Aufruf für ein Tool erkennt.
- Der KI-Client erkennt diese Tokens als Aufruf eines Tools, fängt sie ab, analysiert die JSON-Daten in Parameter und alle weiteren Elemente der Anfrage und leitet diese an das entsprechende Tool weiter.
- Das Tool generiert eine Ausgabe, die möglicherweise die Verwendung einer API beinhaltet oder auch nicht. Es sendet dies an den KI-Client zurück, der es an das LLM weiterleitet.
- LLM verarbeitet die Ausgabe des Tools
- LLM verwendet diese Ausgabe, um weiterhin eine Antwort für den Nutzer zu erstellen.
Dies war meine kurze Einführung in das Thema MCP und dessen Implementierung in LLMs. In meinem nächsten Beitrag werde ich Ihnen erläutern, wie Sie MCPs in Ihrem eigenen KI-Kunde einsetzen können.
Über den Autor
Als Entwickler-Evangelist bei DeepL unterstützt Ben Morss alle Interessierten dabei, die DeepL API zu nutzen, um auf die erstklassigen KI-Übersetzungen des Unternehmens zuzugreifen. Zuvor war er bei Google als Produktmanager für Chrome und als Entwickler-Beauftragter für ein besseres Web tätig. Zuvor war er als Softwareentwickler bei der New York Times und bei AOL tätig und arbeitete auch einmal als Vollzeitmusiker. Er erwarb einen Bachelor of Arts in Informatik an der Harvard University und promovierte in Musik an der University of California in Davis. Man kann ihn immer noch dabei beobachten, wie er mit der Band Musik macht. Ancient Babies, analysiert er weiterhin Popsongs bei Rock TheoryPop-Songs analysiert und ein Musical schreibt, das nicht wirklich von Steve Jobs handelt.