{
  "video_id": "M4FeUbQGcIk",
  "channel_slug": "themorpheustutorials",
  "channel_handle": "themorpheustutorials",
  "title": "MCP: The USB Standard Revolutionizing AI Models",
  "duration_seconds": 1930.0,
  "url": "https://www.youtube.com/watch?v=M4FeUbQGcIk",
  "upload_date": "",
  "transcript": "Entropic hat gerade den USB-Standard für KI-Modelle vorgestellt, das sogenannte Model Context Protocol.\nUnd das war ein unfassbar schlauer Ansatz, auf den auch OpenAI direkt aufgesprungen ist.\nDie haben direkt gesagt, ey, da machen wir mit.\nUnd wenn man sich überlegt, warum, dann versteht man auch, warum OpenAI darauf direkt Bock hat.\nUnd zwar, was fehlt denn OpenAI, also den Machern von ChatGPT, was fehlt den Machern von Cloud, also Entropic?\nNaja, ein richtiges Ökosystem, sowas wie auch Google, sowas wie Apple hat.\nUnd Apple möchte auch aktuell gerade alle Entwickler so ein bisschen dazu zwingen, ihre Apps selber anzupassen,\ndamit die für Siri eine Schnittstelle zur Verfügung stellen, über die dann die User mit interagieren können.\nDas Model Context Protocol nimmt sich diesen Gedanken, limitiert ihn aber nicht auf das Apple-Ökosystem,\nsondern, naja, auf das gesamte Internet.\nUnd alle KI-Systeme. Es ist wirklich eine Art Standard.\nUnd auch wenn er von Entropic aktuell entwickelt wird, das Ganze ist Open Source und kann natürlich jederzeit erweitert werden.\nJeder kann sich seinen eigenen MCP-Client schreiben und seinen eigenen MCP-Server.\nUnd ich greife hier ein bisschen vor, wir schauen uns gleich an, wie das genau funktioniert.\nAber warum wollen wir das erstmal?\nNaja, stellt euch die folgende Situation vor.\nWir sind jetzt gerade, ich habe das Anfang des Jahres schon gesagt, dieses Jahr wahrscheinlich in Richtung AI-Agents unterwegs.\nUnd ich will sagen, ich hatte recht.\nMit Cloud Code haben wir die ersten Agents, die auch relativ autonom programmieren können.\nSie sind nicht gut oder nicht fehlerlos, aber sie sind auf jeden Fall nützlich.\nUnd das wird natürlich mehr werden.\nKlar, je stärker die KI-Modelle werden.\nUnd gleichzeitig haben wir aber das Problem, wir haben sehr viele KI-Modelle.\nZum Beispiel Cloud Code kann nicht jeder von euch benutzen, weil Cloud irgendwo liegt.\nDie Daten fließen also an Entropic, an deren Server.\nAuf der anderen Seite, wenn ich hingehe...\nIch verbinde mit Cloud Code jetzt allerdings ein anderes KI-System, ein anderes LLM.\nZum Beispiel ein Lama, das wir bei unserem Unternehmen lokal hosten.\nDann muss ich keine Sorge haben, dass da irgendwas abhanden kommt.\nUnd genau für diese Interaktion, also welches KI-Modell wird hier eigentlich verwendet, sind die Clients da.\nUnd auf der anderen Seite haben wir die Server, die entscheiden, welche Datenquellen oder welche Ressourcen, welche Funktionalitäten hat denn eigentlich das Ding.\nIch weiß nicht, ob ihr Cloud Code schon mal benutzt habt, das lässt sich einfach in eurem Terminal ausführen.\nUnd dann sieht man da auch sowas wie, ich lese die Datei so und so.\nDas ist eine Ressource. Man liest eine Datei ein.\nDas ist ja nichts, was eine KI gerade neu geschrieben hat.\nMan liest eure Dateien an. Darum geht es.\nUnd auf der anderen Seite kann es aber auch zum Beispiel, also rein theoretisch kann es Datenbanken einlesen.\nRein theoretisch kann es auf Google Drive zugreifen, was übrigens jetzt seit neuestem bei Cloud in der Web-Oberfläche verfügbar ist.\nGmail, Google Drive und der Google Kalender sind dabei.\nGitHub kann ich darauf zugreifen, das ist auch mittlerweile verfügbar.\nUnd auf die Web-Suche kann ich auch darauf zugreifen.\nUnd all das sind Datenressourcen, die möchte ich da auch irgendwie reinpipen.\nUnd jetzt muss ja jeder aktuell das Ganze neu programmieren.\nSprich, wenn ich das bei Lama machen möchte, müsste ich das selber programmieren, wenn es bei mir lokal läuft.\nOder auf irgendeine Software zugreifen oder, oder, oder.\nUnd das ist so, als würde ich sagen, ey, mein PC hat halt keinen USB-Anschluss, sondern halt ein, meine Tastatur ist von Logitech.\nEine Logitech-Tastatur.\nEin Logitech-Anschluss.\nUnd dann kann ich nur Logitech-Tastaturen anschließen und einen Razer-Anschluss, da kann ich nur Razer-Mäuse anschließen.\nSo, das ist Quatsch.\nDas will man nicht.\nMan will das Ganze ja möglichst universell verfügbar halten.\nUnd darum geht es hier.\nIch möchte Plug   Play haben.\nIch möchte sagen können, ey, mir ist egal, welches KI-Modell ich habe, so funktioniert es.\nSo kannst du mit meiner Datenquelle, mit meiner Wetter-App zum Beispiel oder mit meiner Nachrichten-App, Morph Reader an der Stelle, kannst du interagieren.\nUnd genau darum geht es hier.\nMan möchte standardisieren.\nSo, jetzt schauen wir uns das Ganze im Detail an.\nAlso, zunächst einmal, die Architektur High-Level sieht so aus.\nWir haben Clients und wir haben Server.\nAllerdings bitte Server nicht im Sinne von Cloud-Server, sondern es ist eine Client-Server-Architektur.\nStellt euch die Server vielleicht eher wie Plug-Ins für die Clients vor, okay?\nZunächst einmal, die Clients, das kann sowas sein wie Cloud-Desktop.\nDas kann sowas sein wie auch zum Beispiel Microsoft Copilot Studio, oder?\nOder auch Cloud-Code, oder auch Windsurf-ID, und so weiter und so fort.\nDas kann alles Mögliche sein.\nDas sind die, die dann, also da läuft ja kein LLM, ja?\nDie greifen ja dann am Ende nur auf ein LLM zu.\nWindsurf ist egal, ob ihr jetzt Cloud benutzt oder ob ihr OpenAI benutzt.\nDas ist halt für die einfach nur, okay, dann wechsle ich halt einfach mal ganz kurz durch.\nDas war's.\nUnd das macht der Client.\nDer Client entscheidet, welches KI-Modell wird jetzt gerade verwendet.\nAuf der anderen Seite, die Server entscheiden, wie kann man denn auf Daten,\nQuellen zugreifen?\nBeispielsweise, es kann Server geben, und es gibt sie übrigens.\nDas sind tatsächlich alles echte Beispiele hier, die jetzt schon existieren.\nIch kann einen Server bei mir in Cloud-Code zum Laufen bringen,\noder in der Cloud-Desktop-App zum Laufen bringen, der auf SQLite zugreifen kann.\nDas heißt, er kann meine Datenbank lesen und basierend auf meinen Anfragen entscheiden,\nwelche SQL-Anfrage er an meine Datenbank schickt.\nDas kann lesend sein, das kann schreibend sein,\ndas kann ich alles in meinem Server definieren, in meinem MCP-Server.\nDas geht in PostgreSQL.\nDas geht mit Git, GitHub, GitLab, Sentry, Docker, Kubernetes, Brave Search,\nselbst Spotify hat was bekommen, und so weiter und so fort.\nDas sind Server.\nDas ist aber eine bidirektionale Verbindung, und das kann auch mit dem Internet interagieren.\nDer Server ist einfach nur ganz normaler Python- oder TypeScript-Code.\nDas könnt ihr euch aussuchen.\nGibt es aber auch in Java oder in Kotlin.\nUnd auf was ihr hier zugreift, das bleibt komplett euch überlassen.\nDas ist, wie gesagt, alles standardisiert.\nUnd jetzt kann ich hergehen,\nund sagen, okay, wie greife ich denn auf beispielsweise die Nachrichten vom Morph-Reader zu?\nDas kann ich alles in meinem eigenen MCP-Server definieren.\nUnd das ist großartig, weil so kann ich meine unternehmenseigenen Informationsquellen\nkann ich einem KI-Modell zur Verfügung geben.\nUnd ich kann meinen eigenen Client schreiben\nund kann dann aber auch gleichzeitig die offizielle Integration von beispielsweise PostgreSQL benutzen\noder SQLite benutzen, um meine Datenbank damit zu verbinden.\nEventuell mit Claude, falls die Daten wirklich so verfügbar sein sollten.\nAber wenn ich damit ein Problem habe, dann kann ich meinem Client einfach sagen,\nokay, wir nehmen Lama, das wir selber gehostet haben.\nUnd das ist ziemlich, ziemlich praktisch.\nDas ist wirklich ein sehr, sehr wichtiger Schritt, den wir für AI-Agents gerade brauchen.\nNämlich Standardisierung, dass jeder dasselbe tut, dass die Sachen miteinander kompatibel sind.\nUnd an der Stelle möchte ich euch ganz kurz unseren heutigen Partner vorstellen.\nDie machen genau das.\nNicht mit dem MCP, sondern eben klassisches GitHub.\nCloud Hosting.\nDie, das ist Informaniac.\nVon denen habt ihr vielleicht schon mal was gehört.\nInformaniac ist ein Cloud-Anbieter.\nSie haben wahnsinnig viele Produkte.\nIch picke mir immer mal ein paar raus, die ich euch hier vorstellen kann.\nHeute möchte ich euch die Public Cloud vorstellen.\nUnd die Public Cloud, das seht ihr hier unten, ist eins von sehr, sehr vielen Tools.\nUnd das sind auch nur die Entwickler-Tools.\nEs gibt unfassbar viel, was sie anbieten, unter anderem auch ein Drive.\nAber die Public Cloud von Informaniac ist in der Schweiz zum einen, das bedeutet,\nguter Datenschutz und das gleichzeitig auch noch bei uns in Europa.\nWir reden ja immer davon, dass wir unabhängig sein wollen.\nUnd ihr seht es aber hier unten, was hier durchläuft.\nTerraform, Ansible, OpenStack, Docker.\nDas sind alles, und vor allem Linux natürlich, das sind alles offene Umgebungen,\ndie ich da benutzen kann, wenn ich sie möchte.\nDas kann ich da einfach alles einrichten und dann kann ich schon direkt verwenden.\nDas Ganze teilt sich natürlich wie in der üblichen Cloud einfach auf,\ndass ich sagen kann, okay, ich will einen Server haben,\nder für mich Dinge ausführt.\nDas wäre dann das hier oben.\nKann ich zum Beispiel einfach sagen, okay, wir nehmen hier AMD CPUs,\nwir nehmen so und so viel RAM, wir nehmen so und so viel oder so einen Server\nund so weiter und so fort.\nWir packen uns das alles genauso zusammen, wie wir es brauchen.\nUnd dann haben wir da einfach die Möglichkeit, Code drauf auszuführen.\nGleichzeitig können wir aber auch beispielsweise für Swift,\nalso für iOS Apps, können wir sagen, okay, wir wollen Object Storage haben.\nDas heißt, wir können da einfach sagen, wir speichern das,\nwas wir für unsere App brauchen, bei Informaniac.\nDann haben wir genau das da liegen und die kümmern sich darum,\ndass da alles aktuell gehalten wird.\nWir müssen einfach nur sagen, schieb das dahin und hol das von da.\nDas ist super super praktisch und gleichzeitig aber auch komplett offene Standards,\ndie wir verwenden können.\nGleichzeitig können wir es fürs Netzwerk zum Beispiel Neutron benutzen\noder DNS as a Service, der jetzt gerade neu dazukommt.\nUnd falls wir mal plötzlich leider leider mehr Nutzer haben,\ndann müssen wir natürlich orchestrieren können.\nSprich, wir skalieren das ganze Ding größer.\nWenn wir 10 Nutzer haben, brauchen wir,\nwahrscheinlich einen kleineren Server,\nals wenn wir 100 oder gar 1000 oder 10.000 aktive Nutzer haben.\nUnd dazu ist die Orchestrierung da.\nUnd sollte es bei euch mal wirklich auch in Richtung AI gehen,\ndass ihr AI Tools laufen lassen wollt,\ndas wird jetzt wahrscheinlich immer häufiger werden,\nbraucht ihr vielleicht eine GPU Instanz.\nIhr wollt vielleicht Kubernetes haben,\nauch ein Skalierungsding und ihr wollt vielleicht auch die Datenbank\nals einzelnen Container haben,\nwo dann wirklich die Datenbank die ganze Zeit läuft.\nUnd hier haben wir zum Beispiel genau dieses Szenario.\nIhr könnt hier einfach sagen,\nhey, ich will PostgreSQL haben und diese Datenbank,\nda kann ich einfach meine Daten reinschreiben.\nAber gleichzeitig kann ich auch mit einem MCP mir diese Daten auslesen,\nzum Beispiel über meinen lokal verfügbaren MCP Client,\nder dann beispielsweise an Claude angebunden ist.\nDas alles läuft, wie ich schon gesagt habe,\nin der Schweiz im Rechenzentrum.\nUnd ich war sogar schon mal in diesem Rechenzentrum.\nIch kann es euch nur empfehlen.\nEs war wahnsinnig gut.\nEs gibt ein eigenes Video dazu und ich habe mir das alles wirklich anschauen.\nKönnen und mal genau reingucken können,\nwie da eigentlich die Sachen ablaufen.\nUnd ja, nicht nur, dass es spannend war.\nIch weiß natürlich auch, welche krassen Standards sie da einhalten.\nAuf der anderen Seite muss man aber auch sagen,\nsie sind sogar günstiger, als wenn ihr dieselbe Leistung\nbei Azure, Google Cloud oder auch AWS bucht.\nDementsprechend aktuell gibt es gerade 300 Euro für die Cloud,\nwenn ihr startet, als Guthaben sozusagen for free.\nDas heißt, wenn ihr jetzt anfangt,\ndann könnt ihr erst mal ein relativ\nlangen Zeitraum, je nachdem, wie krass teuer eure Services sind,\nfor free das Ganze ausprobieren.\nUnd dadurch, dass es eben auch komplett offen ist,\nda die Standards einfach alle komplett offen sind,\nhabt ihr keinen Vendor-Login, wie ihr das bei AWS oder Azure oder Google habt.\nIhr seid nicht an deren Produkte gebunden,\nsondern ihr könnt jederzeit sagen, okay,\nich will das jetzt bei mir auf dem Server in meinem lokalen Rechenzentrum betreiben\noder wieder zu Informania gehen, wie ihr eben gerade wollt.\nIhr findet all diese Informationen und natürlich den Link dazu\nunten in der Beschreibung und ich wünsche euch ganz viel Erfolg\nbei eurem Projekt.\nIch würde sagen, jetzt ist die beste Zeit für so ein Projekt.\nAber kommen wir ganz kurz zu den Bibliotheken.\nWie gesagt, wir wollen uns auch mal heute den Code dazu angucken.\nDas Ganze ist verfügbar über Python.\nDas ist in pip drin.\nIch werde euch jetzt natürlich nur Python vorstellen,\nweil Python ist quasi Pseudocode und dementsprechend leicht zu lesen.\nDie anderen Sprachen auch nicht besonders schwer.\nIhr könnt das Ganze auch mit TypeScript verwenden,\nnpm install und fertig.\nIhr könnt das Ganze in Kotlin verwenden,\nwas speziell für Android Apps natürlich super wichtig ist.\nUnd ihr habt sogar die Möglichkeit, es in .NET zu verwenden.\nAlso C-Sharp zum Beispiel.\nAuch da kein Problem.\nJava habe ich nicht mal draufgepackt, ist aber auch verfügbar.\nDas heißt, MCP ist an sich ein Protokoll,\nwas sehr weit verbreitet sein wird und auch schon ist.\nUnd dementsprechend macht es schon Sinn,\ndass man da seinen Standard drauf aufbaut,\nwenn man da quasi alles zusammenrückt,\nweil es halt ein offener Standard ist.\nJetzt ist die Idee.\nOkay, ich habe erstmal einen MCP-Server.\nIch habe euch mal einen mitgebracht.\nDas ist erstmal,\nder rohe MCP-Server lässt sich relativ leicht schreiben.\nWie gesagt, ist Python.\nWir definieren hier einfach unseren MCP.\nWir importieren den und dann definieren wir,\ney yo, mach mal hier einen Example-Server.\nUnd anschließend kann ich Ressourcen definieren.\nIch kann aber auch noch Prompts definieren\nund ich kann auch noch Tools definieren.\nDas schauen wir uns gleich an.\nGerne kurz ignorieren an der Stelle.\nIn der Main, das ist einfach nur ein asynchroner Aufruf,\ney yo, mach mal.\nUnd klar, asynchron, weil natürlich,\nein LLM eine Weile braucht, bis es was ausführt.\nUnd genau, in der Main habe ich einfach nur drin,\nyo, lass das laufen.\nAlso es ist relativ schnell definiert,\nso ein MCP-Server.\nDer hier tut an sich erstmal gar nichts.\nAlso so ein MCP-Server ist ja wie ein Plugin.\nDas registriere ich.\nStellt euch wirklich so vor,\nihr habt die Cloud Desktop App\nund ihr wollt euren Server da registrieren.\nAlso quasi Funktionalitäten von euch,\nbeispielsweise, weil ihr eine Datenbank habt,\nwollt ihr da reinschieben und wollt dem KI-Modell sagen,\nda drüber kannst du drauf zugreifen.\nSo, das tut das hier natürlich noch nicht.\nDas müsst ihr selber erst nochmal definieren.\nUm diese Setup-Sachen aber erstmal kurz abzuschließen,\nihr könnt das Ganze einfach relativ schnell fertig machen.\nEs gibt einen Development-Mode zum Debuggen.\nDa könnt ihr einfach das hier machen,\nmcp-dev-server.py, fertig.\nUnd ihr könnt das Ganze auch dann in den Client direkt integrieren,\nindem ihr sagt mcp install und dann server.py.\nServer.py angenommen,\ndass ihr euren Server.py da drin geschrieben habt.\nSo, das ist dann in dem Client, wird das ausgeführt.\nDas heißt, wie eine Registrierung für ein Plugin.\nSo, jetzt, wie kriege ich da denn eigentlich jetzt Informationen rein?\nAlso, wie kann ich wirklich konkret sagen,\nokay, das ist eine Datei, die du einlesen kannst\noder das ist jetzt eine Datenbank oder sowas.\nDas könnt ihr nach dem Initialisieren machen.\nDas macht übrigens das Protokoll für euch\nund in diesem Initialisierungs-Ping-Pong,\nalso eigentlich dem Netzwerk-Protokoll wird definiert,\nokay, welche Version hat denn eigentlich der Client,\nalso beispielsweise Cloud-Code\nund was unterstützt der alles an Features?\nAlso, es haben nicht alle Clients alle Features\nund auf der anderen Seite wird dann geguckt,\nwas kann denn der Server eigentlich und was unterstützt der?\nUnd falls der was hat,\ndann gibt er das an den Client weiter.\nDadurch bauen die sozusagen ein Verständnis davon auf,\nwas ist eigentlich verfügbar?\nWelche Tools habe ich zur Verfügung\noder habe ich überhaupt Tools zur Verfügung und so weiter.\nDer Client muss nicht alles implementiert haben,\nder darf das aber.\nUnd wenn wir uns das im Detail angucken,\ndann, also es gibt eine Liste davon,\ndie packe ich euch unten in die Beschreibung,\nvon den ganzen Clients, was die alles schon haben.\nEs haben wenige Clients wirklich alles fertig implementiert.\nIch glaube, es war ein einziger, der alle fünf Punkte hatte,\nalso sowohl Ressourcen, als auch Prompts,\nals auch Tools, als auch Sampling, als auch Roots.\nWir gucken uns trotzdem mal kurz an,\nwie diese fünf Punkte, die wir hier haben,\neigentlich aussehen.\nWir gucken uns vor allem Ressourcen, Prompts und Tools an,\nweil das sind die wichtigsten drei.\nDie anderen zwei sind so ein bisschen Sahnhäubchen, sag ich mal.\nAber lasst uns anfangen mit Ressourcen.\nDas ist so ziemlich das,\nwas ihr vermutlich am ehesten brauchen werdet.\nAlso natürlich kommt auf den Client drauf an.\nZum Beispiel Cloud Code liest an sich keine Ressourcen,\nsondern führt Bash als Tool aus.\nUnd das ist dann die Ressource.\nAlso Cloud Code liest einfach über eure Kommandozeile\neinfach Dateien ein.\nUnd das ist dann halt, so liest es Dateien ein.\nWährend die Ressource wäre,\ndie Datei direkt zur Verfügung zu stellen.\nDas geht so.\nIhr habt einen Example Server.\nWie gesagt, der ist jetzt ein bisschen komplizierter.\nIhr kennt aber noch, dieses App ist gleich Server,\nExample Server und hier unten dieses Async with STDIO Server\nas Streams, das ist auch gleich geblieben.\nUnd jetzt haben wir hier einfach nur mehrere Ressourcen\nzur Verfügung gestellt.\nSo einmal haben wir List Resources.\nDas ist dann die Add App List Resources.\nDamit definiere ich,\nwelche Ressourcen wir hier haben.\nWelche Ressourcen gibt es denn eigentlich insgesamt\nin meinem Server?\nAlso was habe ich eigentlich zu erfüllen?\nWas kann man alles einlesen?\nUnd hier kann ich alles Mögliche definieren.\nIch kann hier einfach sagen,\nalso das ist wie gesagt eine Liste,\ndie wir hier einfach zurückgeben.\nIn unserem Fall haben wir eine Datei,\neine File und zwar in slash logs slash app.log.\nDas ist dann eine Log Datei,\ndie hier über diese URI definiert wird.\nAlso in dem Fall,\nweil diese URI, die wir hier definieren,\ndie ist komplett eigenständig.\nIch darf da hinschreiben, was ich möchte.\nIch kann auch schreiben hanspeter://logs.loglogloglog.\nUnd wenn ich am Ende weiß,\nwas damit gemeint ist,\ndann kann ich das auch machen.\nEs macht natürlich Sinn,\nsich hier ein bisschen ein Protokoll zu überlegen,\nwas ich danach auch wieder verwenden möchte.\nAber rein theoretisch darf ich das selber definieren.\nDas ist einfach nur damit,\ndass nachher erkannt wird.\nIn meinem Type definiere ich,\nob ich das jetzt als Text einlesen möchte,\nText Plane oder ob das ein Base64 sein soll.\nDazu gleich mehr.\nUnd der Name sagt mir,\nwas für eine Datei das sein soll.\nOkay, cool.\nDas ist also einfach nur eine Liste von allen möglichen Ressourcen.\nDie kann so lang sein, wie ihr wollt.\nDas ist einfach nur damit das KI-Modell weiß,\naha, darauf kann ich also theoretisch zugreifen.\nJetzt ist es so,\ndass ihr das natürlich dynamisch machen könnt.\nKlar.\nUnd in Read Resources, also Add App Read Resources,\ndas ist auch ein Dekorator.\nMerkt ihr vielleicht.\nDa müsst ihr dann gucken,\nokay, wie lese ich die Datei tatsächlich?\nDas heißt, ihr schaut hier,\nwas ist denn meine URI?\nUnd das ist, wie gesagt,\nwirklich eine frei wählbare URI.\nDie kann ich so definieren,\nwie ich das möchte,\nmit dem Format Protokoll.\nIn meinem Fall habe ich da File genommen\nund dann Doppelpunkt Slash Slash\nund dann Host und Pfad.\nLässt sich aber komplett anpassen.\nDa kann auch ein HTTPS oder sowas stehen.\nDas ist euch überlassen.\nUnd am Ende steht,\nhier einfach nur drin,\nokay, ich lese jetzt zum Beispiel diese Datei an.\nDa kann ich jetzt natürlich in Read Log File\nalles schreiben an Code, was ich möchte.\nEs ist im Grunde genommen ein,\nhey, KI-Modell,\nwenn du auf eine Datei zugreifen möchtest namens Application Logs,\ndann kannst du das so machen.\nUnd hier steht dann drin,\nwie genau man das machen kann.\nDas ist der Gedanke dahinter.\nWie gesagt, ein standardisiertes Protokoll.\nSo, das sind Ressourcen.\nDa kann ich aber auch Base64-Dateien reinmachen.\nUnd das ist gedacht dafür,\ndass ihr vielleicht auch mal Dateien habt,\ndie keine Textdateien sind.\nAlso sowas wie MP3-Dateien,\nsowas wie PDF-Dateien oder, oder, oder.\nDann habt ihr die Möglichkeit,\nhier als MIME-Type was anderes einzugeben.\nUnd dann wird das Ganze normalerweise als Base64 encodiert\nund euch geschickt.\nUnd ja, dann könnt ihr darauf auch zugreifen\nund dementsprechend das dann auch verarbeiten.\nVielleicht wollt ihr was mit Musik machen.\nVielleicht wollt ihr was mit PDFs machen.\nDas geht da drüber.\nCool.\nJetzt haben wir natürlich auch noch Prompts.\nDas ist das zweite große,\ndie zweite große Funktionalität,\noder das Primitiv, das ich hier verwenden kann.\nUnd das gebe ich an,\nindem ich erstmal Prompts definiere.\nDas ist dazu da,\ndass ich quasi Custom-Prompts immer bauen kann\nund die dann ausgeführt werden.\nSo.\nJetzt gibt euch das LLM\nsozusagen einfach eine Möglichkeit,\nCode auszuführen,\nden ihr definiert.\nDas heißt,\nich kann hier zum Beispiel meinen Prompt einfach nennen\ngit commit.\nAlso git-commit.\nDann weiß das LLM,\naha, wenn es git-commit ausgibt,\ndann wird dieses Prompt hier ausgeführt.\nWas es genau mit git-commit weiß,\ndamit es weiß, was es eigentlich da tut,\nist generiere eine git-commit-Nachricht.\nDas ist ein relativ einfaches Beispiel.\nKlar, hier unten gibt es auch andere Beispiele,\nwie eben zum Beispiel,\nerklär mir, wie der Code funktioniert.\nDas ist die Description oder die Beschreibung\nanhand dessen, die das KI-Modell entscheidet,\nwelches Prompt es gerade ausfüllen möchte.\nSo.\nUnd dann gibt es hier aber natürlich noch Parameter.\nZum Beispiel,\nentweder wir machen git diff\noder eine Beschreibung von dem,\nwas sich eigentlich in meinem Code geändert hat.\nDamit wir ein git-commit schreiben können,\nalso eine git-commit-Nachricht schreiben können,\nmuss das natürlich erstmal geklärt sein.\nWas habe ich denn eigentlich gemacht?\nAnsonsten kann ich auch keine commit-Nachricht schreiben.\nUnd wenn ich Code erklären möchte,\nmuss ich natürlich den Code wissen,\nden ich erklären soll.\nDeswegen gibt es hier den Parameter\nrequired gleich true.\nDen brauche ich.\nDa sage ich dem LLM einfach,\nokay, der muss gegeben werden.\nOhne kann ich den Befehl halt einfach nicht ausführen.\nWährend die Sprache,\ndie ist natürlich optional.\nAlso wenn ich jetzt da stehen habe,\neinfach keine Sprache,\ndann versuche ich es halt einfach zu erkennen,\nwas es für eine Sprache ist,\nund damit zu erklären.\nWährend wenn ich weiß,\naha, das ist Python,\nnaja gut,\ndann ist es halt ein bisschen leichter für mich,\ndas Ganze zu verstehen als LLM\nund kann dementsprechend auch etwas Besseres machen.\nSo.\nUnd im Hintergrund wird dann der Server\nmit den verfügbaren Prompts gefüttert.\nDas heißt, wir machen hier einen List-Prompt.\nDas ist ähnlich wie bei den List-Referenzen.\nDa sage ich einfach dem LLM,\nwelche Prompt es überhaupt alle machen kann.\nDas werde ich hier tun.\nUnd in Get-Prompt,\ndas ist genau das,\nwenn das LLM entscheidet,\nokay, jetzt ist Zeit für ein Prompt,\ndann bekomme ich den Aufruf,\nzum Beispiel git commit\nund mit dem Parameter,\nwas gemacht wurde,\nzum Beispiel git diff,\nund dann schreibe ich hier eben die git commit Nachricht.\nIn dem Fall war das dann ein,\nokay, führ mal bitte dieses Prompt aus,\nund zwar als User.\nUnd das ist hier tatsächlich\ndas konkrete Problem,\ndas wir hier haben.\nUnd das ist,\nwas dann an das LLM,\nalso zum Beispiel claude3.7,\nso nett geschickt wird\nund dann ausgeführt wird,\num diese commit Nachricht zu bauen.\nUnd hier changes ist mein Parameter.\nArguments.get changes\nif argument else nothing,\nobwohl es required ist,\nnormalerweise würde man das nicht brauchen,\naber aus Sicherheitsgründen\ngibt man das mit,\ndamit der Code halt nicht abschmiert.\nGenau.\nDas heißt, ich gebe die,\nzum Beispiel das git diff hier rein,\nbekomme dann eine git commit Nachricht\nund die wird dann automatisch eben generiert.\nSo, und das ist,\nklar, natürlich kann ich das\nauch schon jetzt bauen,\ndas ist alles nichts Neues,\ndas kann ein LLM schon seit mehr als einem Jahr.\nDer Unterschied ist jetzt,\ndass ich das in meinen Client reinbauen kann,\nvöllig unabhängig von all dem,\nalso völlig unabhängig davon,\nwelches KI-Modell läuft,\nvöllig unabhängig von irgendwas,\ndas macht das dann einfach\nund entscheidet selber,\nokay, was will denn der User jetzt haben?\nSo, stellt euch Manus vor,\ndieser AI Agent,\nder kann das dann einfach entscheiden,\naha, jetzt wollen wir also ein git commit machen,\ngut, dann rufen wir eben das Prompt hier auf\nund los geht's.\nOkay, jetzt gibt es ja aber auch immer noch Tools\nund die Tools,\ndas ist das,\nwas Cloud Code die ganze Zeit benutzt,\ndas kann weder Prompts,\nnoch kann es Ressourcen,\nwie gesagt,\ndas arbeitet nur über Tools.\nTools sind so ein bisschen\ndie eierlegende Wollmilchsau,\ndas kann eigentlich alles sein\nund zwar,\nalso die anderen können auch irgendwie alles sein,\naber man versucht es so ein bisschen\nvon den Funktionalitäten aufzuteilen,\ndamit es eben eindeutiger wird\nund zwar,\nihr könnt für jedes,\nfür euer,\nfür euren Server einfach die Request Handlers setzen,\ndas heißt,\nihr könnt sagen,\ney, welche,\nwelche Tools habe ich eigentlich zur Verfügung?\nIhr gebt hier oben ein,\nich habe Tools\nund dann sagt ihr,\nokay, das ist ein Tool,\ndas ist ein Tool,\ndas ist ein Tool.\nIst schön modular,\nmuss man sagen,\nweil ich hier einfach über den Server\ndas Ganze zugreifen kann,\ndann kann ich hier einfach sagen,\nokay,\nwir geben Lambda Parameter rein,\nfertig\nund ich kann hier drin einfach alles definieren,\nwas ich möchte.\nMit alles definieren meine ich damit,\nich muss erst mal sagen,\nwie sieht denn eigentlich mein Tool aus?\nNa ja,\nmein Tool sieht erst mal so aus,\nes ist ein,\nein Tool,\nklar,\nmit dem Namen,\ndas ist dann das,\nwas,\nwas am Ende ausgeführt wird,\ndas heißt,\neuer LLM,\nzum Beispiel Claude,\ngeht dann einfach nur aus Calculate Sum,\nParameter A,\nParameter B,\ndas sind diese beiden Required Parameter hier,\nalso die verpflichtenden Parameter,\ndie dann am Ende hier auch verarbeitet werden,\nwenn man es ausführt\nund ich gebe dich hier an,\ndass das A eine Zahl sein muss\nund B muss auch eigentlich sein,\neine Zahl sein\nund sie sind beide verpflichtend\nund das heißt,\nich gebe hier nur den Namen aus\nund die beiden Parameter,\naber damit Claude erst mal weiß,\nwas ist denn eigentlich Calculate Sum,\nwas tut denn das?\nDas kann ja auch was sehr komplexes sein,\nwie hol mir das aktuelle Wetter\noder lies solche Daten von meiner Datenbank ein\noder,\ndazu habe ich wieder mal die Description,\ndamit eben mein LLM weiß,\nwas das ist,\nso\nund das ist wie gesagt hier einfach nur das,\ndas Definieren von dem Tool selber,\ndass das KI-Modell weiß,\nwas das eigentlich ist,\nwährend das Ausführen von diesem KI-Tool,\nalso hier List Tools Request Schema,\ndas ist quasi einfach nur zum Definieren,\nwas habe ich denn zur Verfügung\nund hier bei Set Request Handler Call Tool Request Schema,\nda ruft das LLM,\nalso der Client beispielsweise Claude Code,\nruft das Tool dann auf,\ndas heißt es sagt,\ney berechne mal die Summe\nund naja,\nein LLM ist normalerweise schlecht in Mathe,\nvor allem wenn es sehr,\nsehr kompliziert wird,\ndementsprechend versucht es hier zu sagen,\nokay,\nwir nehmen halt deterministischen Code\nmit den Parametern,\ndie wir hier zur Verfügung haben,\ndas heißt,\nwir können hier A und B erwarten,\ndie sind ja hier Required,\ndie lesen wir aus den Argumenten raus\nund wir können erwarten,\ndass das Tool Calculate Sum,\nCalculate Sum,\naufgerufen wird,\nansonsten gibt es einfach einen Fehler im Client\nund es wird nochmal probiert\nund genau,\nwas dann getan wird,\ndas ist im Grunde genommen das hier,\nnämlich ich gebe Content zurück,\nin dem Fall haben sie sich für Type Text entschieden,\nman kann auch eine Zahl zurückgeben,\nwenn man das möchte\nund die Funktion,\ndie ausgeführt wird,\nist String,\nalso ich berechne A plus B\nund wandle das danach wieder in String um.\nKleine Anmerkung an der Stelle,\nhier würde ich halt einfach\nmit Funktionsparametern arbeiten,\ndas heißt,\nihr definiert die Funktion woanders\nund hier gebt ihr dann einfach\ndie Lambda-Funktion ein,\nfertig.\nUnd ja,\ndas ist ein Tool,\ndas heißt,\nwas ihr im Endeffekt hier habt,\nihr könnt jeglichen Code definieren,\nihr müsst ihn nur beschreiben,\nwas er tut\nund dann ist es eine Funktion,\ndie irgendwas brechen\nund das kann so komplex sein,\nwie ihr wollt,\ndas kann eine Datenbankabfrage sein,\ndas kann eine API-Abfrage sein,\ndas kann im Zweifelsfall sogar eine API-Abfrage\nmit irgendeinem geheimen Schlüssel sein,\nalso mit einem API-Key sein,\ndas heißt,\ndadurch könnt ihr auch versteckte\noder private Informationen\nin einen LLM übergeben,\ndas beispielsweise dann lokal bei euch läuft,\ndamit es da keine Probleme gibt,\nund das macht das Ganze\nso unfassbar flexibel\nund eben auch standardisiert\nund wie gesagt,\nes gibt halt auch schon\nein paar von den Tools.\nSo,\nund ja,\ndas bedeutet,\nwir haben hier eigentlich schon\nein relativ mächtiges Ding,\nwas wir eigentlich machen können,\njetzt gibt es noch\ndrei weitere primitive,\ndie ich euch noch ganz kurz\nvorstellen möchte,\nsind aber ganz klein\nund zwar einmal Sampling,\nSampling sind im Grunde genommen\nrohe Aufrufe an ein LLM,\ndas heißt,\nder Server sagt,\nsample mir mal bitte,\nsample mir mal bitte\nund der Client schickt das einfach weiter ans LLM\nund gibt dann wieder dem Server das Ding zurück,\ndas ist sozusagen dieses bidirektionale,\ndamit der Server eben die Möglichkeit hat,\nauch sowas auszufilmen.\nHat man im Ansatz aber auch schon gesehen,\nbraucht es eigentlich nicht unbedingt,\ndeswegen wird es auch von vielen\nnoch gar nicht unterstützt.\nDann gibt es Roots.\nRoots definieren die Zugehörigkeit,\nalso quasi wo muss ich\noder wo kann ich damit rechnen,\ndass mein Server auch wirklich angewendet wird.\nBeispielsweise,\nwenn ich\nnach dem Backend-Repository frage,\naber meine Root definiert nur ein Frontend-Repository,\nalso wo mein Frontend-Code liegt,\ndann springt mein Backend ja gar nicht\nauf diesen Server an.\nDann habe ich vielleicht noch einen zweiten\noder dritten, vierten, fünften Server\nund der ist dann wirklich nur für das Backend da,\nwährend der hier,\nder hier definiert ist,\nder ist nur für das Frontend da.\nDas heißt, wenn ich Frontend sage,\ndann weiß mein LLM,\naha, durch die Root,\nalso durch die Definition,\neinfach dieser Server,\nder hier definiert wurde,\nder ist fürs Frontend-Repository zuständig\nund wenn es nicht ums Frontend-Repository geht,\nmuss ich den gar nicht aufrufen.\nDas macht insofern Sinn,\nweil wir dadurch Tokens sparen bei unserem LLM,\nweil wenn ich diese ganzen Sachen hier liste,\ndiese ganzen Tools, Funktionen und so weiter,\ndie ja mein LLM kennen muss,\num zu entscheiden, was es aufruft,\nnaja, dann habe ich immer mehr Aufrufe\nund wenn ich dann aber sage,\nokay, das brauche ich gar nicht,\ndann spare ich dadurch wieder ein bisschen Laufzeit.\nOder ein bisschen Ausfüllzeit, Tokens und so weiter.\nUnd dadurch wird es günstiger.\nGut.\nUnd das letzte sind die Transports.\nTransports sind nicht mal erwähnt gewesen\nbei den Features vorhin.\nDie sind, glaube ich, noch relativ neu.\nAllerdings kann man damit definieren,\nwie oder wo man eigentlich hin und her kommunizieren möchte.\nWir haben einmal stdio.\nDas ist einfach,\nwenn wirklich der Server direkt als Plugin integriert wird\nin den Client und man dann direkt kommuniziert.\nDann haben wir aber gleichzeitig auch Server-Send-Events,\nalso SSEs.\nDas ist, wenn der Server irgendwie auf dem Server liegt.\nOder ich kann dann auch selber noch definieren,\nwie das Ganze aussehen soll,\nindem ich mir einfach einen Custom Transport mache.\nDas definiert einfach nur die Art von Kommunikation\nzwischen Client und Server.\nIst aber an sich nicht so direkt damit verbunden.\nWie gesagt, diese drei hier sind, glaube ich, sehr neu.\nDie habe ich noch nicht wirklich verbreitet gesehen,\naußer in einem einzigen Client.\nUnd dementsprechend kann ich euch da auch noch nicht so viel zu sagen.\nAber wird wahrscheinlich auch noch mehr werden.\nOkay, einmal kurzen Schritt zurück.\nWas haben wir jetzt?\nWir haben einen Client,\nder mit beliebigen LLMs arbeiten kann\nund auch dynamisch entscheiden kann,\nwelches LLM er nimmt.\nWir haben einen Server,\nder verschiedene Ressourcen oder Funktionen und Tools\nzur Verfügung hat,\nbeziehungsweise die einfach als Funktion definieren kann.\nDas kann komplett deterministischer Code sein\nund der kann die dann ausführen.\nUnd wenn ich das alles so bedenke,\ndann ist das eigentlich so wirklich die Grundlage,\num alles zu bauen.\nAlso eigentlich um einen Jarvis zu bauen,\nwenn ihr an Iron Man denkt.\nUnd das ist eigentlich ziemlich cool.\nVor allem, weil es ein offener Standard ist.\nWir sind nicht mehr abhängig dann am Ende davon,\ndass Cloud einfach immer das beste Modell zum Coden bleibt.\nWir können einfach sagen,\nwir nutzen jetzt halt gerade ein anderes.\nUnd ich bin mir nicht sicher, was Google dazu sagt.\nAber auf der anderen Seite,\nGmail und Google Kalender und so weiter,\nsind schon bei Cloud verfügbar.\nAlso bei der Web-Oberfläche.\nIch bin mir nicht sicher.\nIch glaube, die sind da auch ein bisschen hinten dran.\nWeil sie natürlich auch wollen,\ndass man ihre Dienste weiterverwendet\nund dass die nicht irgendwie dann aufgegeben werden\nfür andere Dienste.\nGenau.\nAber alles in allem sehr, sehr spannend.\nVor allem die Entwicklungen sind wahnsinnig spannend.\nUnd da will ich mich einmal ganz kurz mitnehmen.\nUnd zwar zu meiner App.\nIch weiß nicht, ob ihr sie schon benutzt.\nIch bin gerade an einem riesigen Rework dran.\nUnd es sind so viele coole Features dazugekommen.\nIhr bekommt es natürlich einfach dann im Play Store\noder im App Store, wenn es dann da ist.\nAber ihr könnt das Ganze auch jetzt schon\nals sehr, sehr sinnvolle Nachrichtenquelle benutzen.\nIhr könnt die App sowohl bei,\nja genau, hier drüben runterladen einfach.\nBeziehungsweise unten in der Beschreibung\nist natürlich der andere dann.\nUnd dort bekommt ihr einfach Nachrichten\nsehr, sehr schnell und bald.\nWahrscheinlich sogar auf mehrere Sprachen.\nIch habe 13 Sprachen in der neuen Version drin.\nAber aktuell ist es einfach nur sehr, sehr kompetent\noder kompakt.\nKompakte, sorry, das war das Wort.\nKompakte Nachrichten, sodass ihr schnell seht,\nist der Artikel wirklich für mich interessant\noder ist er nicht interessant.\nOhne, dass ihr zugemüllt werdet\nmit irgendwelchen Clickbait-Headlines,\nwo am Ende gar kein Inhalt drinsteht.\nIch versuche wirklich, das Nachrichtenthema\nwieder ein bisschen gesund zu machen.\nOhne FOMO, ohne Clickbait.\nSchnell und angenehm auf einen Blick.\nUnd in der neuen Version von der App,\ndie, wie gesagt, noch nicht da ist,\ngibt es auch einen Good Vibes Mode.\nAuf den bin ich ein bisschen stolz, bin ich ehrlich.\nDenn, ähm,\nich habe von vielen schon mittlerweile gehört,\ndass Nachrichten sehr, sehr ungesund werden.\nMan irgendwie immer so das Negative nur hört.\nDas ist tatsächlich ein spezieller Modus,\nwo man rausfiltern kann\nund nur gute Nachrichten sich anzeigen lassen kann,\nfalls man einfach mal was Aufbauendes braucht.\nAber trotzdem nach den eigenen Filterregeln.\nDas heißt, ihr könnt trotzdem sagen,\nhey, ich interessiere mich für Cyber Security,\nich interessiere mich für AI\nund ich interessiere mich für Fußball.\nIst auch drin.\nUnd dann kriegt ihr trotzdem aus diesem Bereich\ndann einfach immer die positiven Nachrichten.\nFairerweise bei Cyber Security sind es nicht ganz so viele,\naber es sind welche dabei.\nEs gab auch schon positive News im Bereich Cyber Security.\nKommt alles im Neuen, holt euch trotzdem schon mal\nund ja, genießt dann einfach die App schon mal jetzt\nund freut euch auf das Update.\nIch bin auf jeden Fall dran und ich bin hyped.\nBis zum nächsten Mal im Cyberspace.\nCiao.",
  "transcript_chars": 35678,
  "ingested_at": "2026-05-15T10:34:15.046573+00:00",
  "source": "channel",
  "yt_meta": {
    "view_count": 25496,
    "like_count": 715,
    "channel_id": "UCLGY6_j7kZfA1dmmjR1J_7w",
    "categories": [
      "Education"
    ],
    "tags": []
  }
}