Menu
About me Kontakt

How to build your own MCP server for integration with AI and smart home (film, 14m)

Mike Tomala, in his latest YouTube episode, delves into the topic of Model Context Protocol (MCP). This interesting concept allows communication between language models and servers. Mike explained that artificial intelligence alone cannot perform actions in reality, such as turning off lights, without additional tools. MCP serves as a format that links AI with servers, allowing the use of various tools that specific servers may offer. In this way, AI can effectively execute commands related to real-world tasks.

From the video, we learn that creating an MCP server is quite straightforward. Mike shared an example where he created two basic tools: turn on and turn off the light. Each of these required a proper description so that the language model could understand their functions. By utilizing Smart APIs, Mike demonstrated how these tools could work together to actually control lighting. He also mentioned that functionalities could be combined to create a single tool that handles multiple parameters, which reduces token usage.

Mike also demonstrated how to create an MCP server using the Cursor AI in Wipe Coding style. With the right configurations and code, Mike proved that anyone could build their own server tailored to their needs using available resources. He described how he set up his project in TypeScript and what key requirements were needed to implement the functionalities. For example, he created functionalities to manage the light bulb colors, thoroughly defining the parameters passed to the server.

After setting up the server, Mike showcased how to use a special inspector tool for debugging to ensure everything was functioning properly. This interface allowed testing the connection and checking if the tools for changing the lights were available. Mike concluded the episode by showing how to connect his MCP server with AI through the CLOT Desktop application, enabling AI to interact with the physical environment.

In summary, Mike Tomala provided a practical guide on the Model Context Protocol and its application in creating home automation servers. At the time of this article's writing, the YouTube film has garnered 3076 views and 146 likes, indicating significant interest in this topic. For those fascinated by integrating AI into daily life, this material is worth paying attention to and implementing their own solutions based on MCP.

Toggle timeline summary

  • 00:00 Mike asks about MCP, and the speaker plans to explain it and show how to create a personal MCP server.
  • 00:04 The speaker emphasizes that AI can't perform all tasks on its own.
  • 00:16 AI cannot turn off lights, prompting a discussion on the limitations of AI.
  • 00:25 The speaker introduces Large Language Models (LM) as a reference for AI.
  • 00:43 MCP, or Model Context Protocol, is explained as a communication format for AI.
  • 01:02 Each MCP server defines its own tools available for use by the language model.
  • 01:09 The speaker suggests planning a first MCP server with tools to turn lights on and off.
  • 01:25 Inside the tools, any code can be executed, including API connections.
  • 01:49 AI must use specific tools at the right moments and provide correctly formatted parameters.
  • 02:10 The speaker explains how to initiate a chat with AI, emphasizing message contexts.
  • 02:27 It's important to limit the number of available tools to reduce token usage.
  • 03:06 Function Calling is introduced as a feature that allows AI to use tools effectively.
  • 03:45 The speaker prepares to show how to create a personal server using AI cursor editor.
  • 04:41 Instructions on using Tuya API and related tools for the server setup are provided.
  • 08:01 The server is built using npm commands, creating the necessary files.
  • 08:14 The inspector tool is introduced for debugging and testing the MCP server.
  • 08:35 The connection status to the MCP server is verified with a success message.
  • 09:19 The tool for controlling lights is simulated and tested through the MCP server.
  • 11:26 The speaker configures the JSON for the MCP server in the CLOT Desktop application.
  • 12:00 After saving settings and restarting, tools are verified to be correctly configured.
  • 12:42 The speaker demonstrates the light control tool's successful operation via AI.
  • 13:15 The speaker discusses developing advanced MCP server capabilities for WordPress.
  • 13:44 The audience is encouraged to sign up for a waitlist for the advanced MCP server.
  • 13:59 The speaker invites viewers to interact through comments, sharing their experiences with MCP.

Transcription

Mike, wszędzie słyszę o MCP, ale co to właściwie jest? Wiesz co, to może ci to najpierw rozrysuję, żebyś lepiej zrozumiał, a później pokażę ci jak zrobić własny serwer MCP, okej? Super! To do dzieła. Sama sztuczna inteligencja nie potrafi wszystkiego. Gdy poprosisz AI, aby zgasiła światło, bo idziesz spać, to sztuczna inteligencja tego nie zrobi. Jak mówimy sztuczna inteligencja, to zazwyczaj odnosimy się do modelu językowego, czyli Large Language Model, w skrócie LM. To jak sztuczna inteligencja może użyć słów do wyłączenia światła? Aby zamienić słowa w czyny, musimy wyposażyć sztuczną inteligencję w dodatkowe narzędzia. I tutaj z pomocą przychodzi MCP. MCP, czyli Model Context Protocol, to format komunikacji między modelem językowym, a specjalnie przygotowanym serwerem. Sztuczna inteligencja może być podłączona do wielu różnych serwerów MCP jednocześnie, choć istnieją pewne limity, ale o tym później. Każdy serwer definiuje własne narzędzia, które mogą zostać wykorzystane przez model językowy. Zaplanujmy teraz swój pierwszy serwer MCP. Możemy przygotować np. dwa narzędzia. Włącz światło oraz wyłącz światło. Każde narzędzie musi zostać opisane w taki sposób, aby model językowy mógł zrozumieć jego działanie i w odpowiednim momencie zdecydować o wykorzystaniu danego narzędzia. We wnętrzu tych narzędzi możemy wykonać dowolny kodw. W tym przypadku wykonamy połączenie do API Smart żarówki, aby ją zgasić albo zapalić. Co więcej, narzędzia mogą określać także różne parametry. Możemy stworzyć kolejne narzędzie z miń kolor. W tym narzędziu określimy wymagany parametr o nazwie nowy kolor. Sztuczna inteligencja będzie musiała nie tylko w odpowiednim momencie zdecydować, czy użyć tego narzędzia, ale także przekazać odpowiednio sformatowany nowy kolor światła w postaci szesnastkowej. Analogicznie jak w poprzednich narzędziach, może nastąpić wtedy request do API Smart żarówki, aby zmieniła kolor. Ok, czyli mogę sobie zrobić takie narzędzia do wszystkiego i zbudować swój smart home, tak? I tak, i nie. Wróćmy do naszego serwera. Gdy rozpoczynasz czat ze sztuczną inteligencją, to informacja o dostępnych narzędziach jest dołączana do kontekstu wiadomości. Po prostu model językowy musi wiedzieć, jakie narzędzia ma dostępne. Przekazanie tej informacji zwiększa zużycie tokenów, dlatego warto ograniczyć liczbę narzędzi dostępnych na serwerze MCP. Zamiast tworzyć osobne narzędzia do podobnych czynności, możesz zrobić jedno narzędzie, które będzie przyjmowało różne parametry i na ich podstawie wykonywać różne czynności. Stwórzmy więc jedno narzędzie – zmień światło, które będzie wymagało dwóch parametrów nowy kolor oraz stan, który określi, czy światło ma zostać włączone czy wyłączone. Gdy w czacie napiszesz prompt idę spać, zgaś światło, to model wiedząc o dostępnych narzędziach może zdecydować się na ich użycie. Za pomocą specjalnej funkcjonalności, która nazywa się Function Calling, model językowy określa narzędzie, które może wykorzystać do osiągnięcia stawianego przed nim celu. Następuje wtedy połączenie do serwera MCP. Komunikacja między czatem, czyli klientem MCP, a serwerem odbywa się poprzez standard JSON-RPC 2.0. W odcinku o anatomii agentów AI opowiadałem o możliwościach modeli językowych, która nazywa się Function Calling. Dzięki tej funkcji możliwe jest wykorzystanie narzędzi oraz przekazanie do nich właściwych parametrów. Jeśli jeszcze nie oglądałeś tamtego odcinka, to zachęcam do obejrzenia. Dobra, już wiem jak to działa. Pokażesz teraz jak zrobić własny serwer? Pewnie, że pokażę, ale nie ja stworzę kod tego serwera, a zrobi to edytor kursora AI, czyli stworzymy ten serwer w stylu Wipe Coding. Otwieram teraz zupełnie nowy projekt w kursor AI i wklejam przygotowany wcześniej prompt w okienko czatu. W prompcie opisałem kilka wymagań odnośnie serwera MCP, który chcę otrzymać. Chciałbym, aby została wykorzystana oficjalna biblioteka Model Context Protocol. Serwer ma być oczywiście zgodny z dokumentacją MCP, dlatego podałem link do dokumentacji. Podaję informację o narzędziu, którą jeszcze za chwilę rozbuduję, oraz np. to, że projekt ma być stworzony w TypeScript. W dalszej części podaję więcej szczegółów na temat narzędzia Zmień Światło. Opisuję wymagane parametry, czyli nowy kolor oraz stan, a także w prostych słowach opisuję, jak ma działać to narzędzie. Poniżej umieściłem jeszcze informacje na temat połączenia do API Smart Żarówki. Skorzystam tutaj z chmury od firmy Tuya. Swoim narzędziu MCP możesz jednak skorzystać z dowolnego API lub po prostu wykonać dowolny kod. Na końcu umieściłem jeszcze kilka dodatkowych wymagań. Upewnię się jeszcze teraz, czy mamy wybrany odpowiedni model, czyli CLOUD 3.7 SONIC i możemy rozpocząć generowanie. Jeśli nie masz doświadczenia z Cursor AI, to polecam obejrzeć inny film na moim kanale. Pokazywałem w nim, jak działa Cursor AI i jak w czterech prostych krokach zrobić fullstackową aplikację. Generowanie aplikacji będzie chwilę trwało, a w międzyczasie pokażę Ci fajną funkcję Cursor AI, którą niedawno odkryłem. Wejdź do zakładki FEATURES w ustawieniach kursora i przeskroluj nieco niżej. Znajdziesz tutaj opcję PLAY SOUND ON FINISH. Dzięki temu usłyszysz delikatny sygnał dźwiękowy, gdy generowanie kodu się zakończy. O, tak jak teraz. Generowanie kodu zostało zakończone i według AI Project jest gotowy do użycia. Zrobię jeszcze szybkie review kodu. Zacznę od pliku package.json i sprawdzę, czy zostały zainstalowane właściwe zależności. Wszystko wygląda ok, więc przejdźmy do głównego pliku serwera mcp. Na początku mamy kod związany z integracją z API TOOIA do zarządzania smart żarówką. Do połączenia z API muszą skonfigurować odpowiednie klucze w pliku .env. W dalszej części mamy inicjalizację serwera mcp. Jako parametry podajemy nazwę serwera oraz numer wersji. W dalszej części wygenerowana została funkcja pomocnicza do zmiany zapisu koloru z postaci szesnastkowej do postaci HSV. Poniżej znajduje się kolejna funkcja pomocnicza kontrolująca żarówkę. W ramach tej funkcji następuje połączenie do API TOOIA oraz wysłanie odpowiednich komend, tak aby wyłączyć bądź włączyć żarówkę lub zmienić jej kolor. W tym miejscu muszę dokonać małej modyfikacji kodu wygenerowanego przez AI. Moja żarówka jest kompatybilna z wersją drugą komendy do zmiany koloru żarówki. Sztuczna inteligencja mogła tego nie wiedzieć. W dalszej części znajduje się bardzo ważny kod związany bezpośrednio z serwerem mcp. Metoda TOOL definiuje narzędzia serwera mcp. Ta metoda przyjmuje trzy parametry. Pierwszy z nich to nazwa narzędzia. Kolejny to definicja parametrów, jakie muszą zostać przekazane do narzędzia. Mamy tutaj zdefiniowane dokładnie te parametry, które zadeklarowaliśmy w prompcie, czyli nowy kolor oraz stan. Wygenerowany kod korzysta z biblioteki z IOD do walidacji schematów, dlatego zapis może wydawać się nieco skomplikowany. Trzeci parametr to funkcja wykonywana podczas uruchamiania tego narzędzia. Ta funkcja jako argumenty przyjmuje zdefiniowane dla narzędzia parametry. W naszym narzędziu wykorzystana została funkcja pomocnicza kontroluj żarówkę, która dokonuje włączenia bądź wyłączenia światła lub zmiany jego koloru. Każde narzędzie musi zwrócić odpowiednio sformatowany obiekt z treścią wiadomości zwrotnej. Wygenerowany kod zawiera także prostą obsługę błędów. Poniżej znajduje się jeszcze kod związany z uruchomieniem i zakończeniem pracy serwera. Kod wygląda ok, więc najwyższy czas przetestować nasz serwer. Zaczniemy od zbudowania wynikowych plików za pomocą komendy npm build. W ten sposób stworzony zostanie katalog dist. z transpilowanymi plikami javascript z kodem serwera mcp. Zanim przetestujemy nasz serwer w połączeniu ze sztuczną inteligencją, przetestujemy go jeszcze na sucho. Do debugowania serwerów w mcp udostępnione zostało specjalne narzędzie inspektor. Za pomocą tej komendy zostanie uruchomiony specjalny interfejs, który pomoże nam przetestować stworzony serwer mcp. Aplikacja inspektora została uruchomiona na porcie lokalnym 6274, więc otwórzmy ją teraz. Oto interfejs aplikacji do debugowania serwerów mcp. Z lewej strony znajduje się kilka ustawień dotyczących połączenia z serwerem mcp. Nas jednak najbardziej interesuje przycisk connect, aby sprawdzić czy uda się połączyć do serwera. Pod dołem widać teraz zieloną kropkę z napisem connected, więc wszystko działa. W okienku na dole znajduje się historia komunikacji z serwerem mcp. W trakcie połączenia została wysłana jedna wiadomość inicjalizacyjna, a wtedy nasz serwer zwróci informację o swojej nazwie i wersji. U góry w inspektorze znajduje się kilka zakładek. Nas jednak najbardziej interesuje zakładka tools. W tej zakładce możemy zasymulować wykonanie narzędzia z serwera mcp. Najpierw kliknę przycisk list tools. W ten sposób wyświetlona zostanie lista narzędzi dostępnych z naszego serwera. W naszym przypadku jest dostępne tylko jedno narzędzie zmyń światła. W historii komunikacji możemy zobaczyć treść wiadomości, jaka została zwrócona przez serwer. Możemy zobaczyć też tablicę narzędzi. Widzimy też schemat parametrów, jakie są niezbędne do działania narzędzia. Dzięki temu model językowy będzie wiedział, jakie parametry przesłać do serwera mcp, wykonując to narzędzie. Wykonamy teraz ręczny test tego narzędzia. Z listy wybierz narzędzie zmyń światło, a z prawej strony pojawi się formularz z polami odpowiadającymi parametrom narzędzia. Wypełnię teraz te pola odpowiednio i klikam przycisk run tool. Sami zobaczcie, co się teraz wydarzyło. Moja lampka zmieniła kolor, a ja dostałem komunikat, że żarówka została włączona z ustawionym kolorem. Spróbuję teraz ją wyłączyć i ponownie uruchomię narzędzie. Jak widzicie nastała ciemność. Żarówka nam się wyłączyła. Wygląda na to, że nasze narzędzie i serwer mcp działa poprawnie. To teraz najwyższy czas podłączyć nasz serwer do prawdziwej sztucznej inteligencji. Wykorzystamy do tego aplikację CLOT Desktop. Jest to chyba najpopularniejsza aplikacja, która wspiera serwery mcp. W końcu protokół mcp został stworzony przez twórców modeli serii CLOT, czyli firmę Antropic. Istnieje już jednak na rynku duża liczba innych narzędzi, które wspierają protokóły mcp. Link do listy tych narzędzi znajdziesz w opisie. A teraz przejdźmy do ustawień CLOT Desktop i do zakładki Developer. W tym miejscu otrzymamy informację o używanych serwerach mcp. Na razie nie mamy skonfigurowanego żadnego narzędzia, więc klikamy przycisk Edit Config. W tym momencie wskazany zostanie plik konfiguracyjny w formacie JSON, który należy otworzyć dowolnym edytorem. W tym pliku należy skonfigurować serwer mcp. Robimy to za pomocą specjalnie przygotowanej struktury JSON. Jest to obiekt z nazwą serwera jako kluczem. Wewnątrz obiektu znajduje się kilka właściwości, które definiują jak serwer ma zostać uruchomiony. W tym przypadku używamy Node.js do uruchomienia aplikacji. Jako parametr ma być wskazana ścieżka do pliku wynikowego z naszym serwerem mcp. Dodatkowo definiuje także zmienne środowiskowe z kluczami połączenia do API Tuya. Gdy uzupełnisz plik należy go zapisać, a następnie zrestartować całą aplikację Cloud Desktop. Po restarcie aplikacji w okienku czatu widzimy dodatkową ikonę, która wskazuje, że wykorzystujemy jeden serwer mcp. Po kliknięciu w nią widzimy listę narzędzi, które są dostępne. Widzimy tutaj nasze narzędzie Zmień Światło, więc wszystko zostało poprawnie skonfigurowane. Spróbujmy więc teraz wykorzystać to narzędzie. Zacznijmy od promptu Idę spać, zgaś światło. Model życzy nam dobranoc, a następnie zgłasza chęć użycia narzędzia Zmień Światło. Zanim jednak go użyje musimy wyrazić na to zgodę. W okienku, które wyskoczyło klikamy przycisk Hello for this chat. I teraz jak widać światło zgasło. W tym miejscu możemy zobaczyć jakie parametry zostały wysłane do naszego narzędzia oraz jaka odpowiedź została zwrócona. Zrobiło się nieco za ciemno, także włączę teraz żarówkę z powrotem, nie ruszając się z miejsca. Wykonam jeszcze kilka testów zmiany ustawień koloru światła. Dobra, koniec tej zabawy. Nasz serwer mcp do sterowania żarówką jest bardzo prosty, ale oczywiście serwery mcp mogą obsługiwać wiele narzędzi, a te narzędzia mogą być znacznie bardziej rozbudowane i skomplikowane. Razem ze swoim zespołem pracujemy nad zaawansowanym serwerem mcp do obsługi wordpressa, który będzie łączył się przez rest API, aby pobierać dane i zmieniać ustawienia. Będzie także uruchamiał komendy wpcli, tworzył motywy, wtyczki i bloki Gutenberga, a jednocześnie testował i analizował kod, aby zwiększyć dokładność generowanych rozwiązań. Jeśli chciałbyś skorzystać z takiego serwera to zapisz się do listy oczekujących dostępnej pod linkiem w opisie. Istnieje już też duża liczba gotowych do użycia serwerów mcp stworzonych przez społeczność. Link do repozytorium z innymi serwerami również znajdziesz w opisie. Jeśli ten odcinek Ci się podobał to zostaw po sobie łapkę w górę i koniecznie daj znać w komentarzu z jakich serwerów mcp korzystasz albo jakie chciałbyś stworzyć. Do zobaczenia w kolejnym odcinku.