Dogłębna analiza MCP, część 1: Czym właściwie jest MCP?

Jeśli interesujesz się AI, z pewnością słyszałeś o protokole Model Context Protocol (MCP). Odkąd firma Anthropic ogłosiła ten nowy standard w listopadzie 2024 r., jego popularność gwałtownie wzrosła. Istnieją MCP do wysyłania wiadomości e-mail, MCP do przeszukiwania sieci, MCP, które uruchamiają inne MCP. MCP pozwalają skromnym LLM wysyłać pull requesty i rezerwować bilety lotnicze. W maju firma Microsoft ogłosiła nawet wprowadzenie rejestru MCP dla systemu Windows, który pozwala aplikacjom udostępniać funkcjonalność agentom AI

Dziękujemy! Ale jak? Czym jest MCP? Jak się tego używa? Dlaczego stało się to o wiele bardziej popularne niż wcześniejsze działania? W jaki sposób pozwala chatbotom działać w prawdziwym świecie? A jak możesz zbudować własny?

Kiedy zdecydowaliśmy się zbudować własny serwer MCP dla API DeepL, wydawało się to trudnym zadaniem. Ale kiedy już naprawdę zrozumiesz, jak działają MCP, w jaki sposób umożliwiają one agentom odkrywanie i korzystanie z narzędzi oraz jak można zbudować podstawowy serwer MCP za pomocą 10 linii kodu, nie będzie to już takie straszne. W tej serii postów postaramy się wyjaśnić ten temat. Zbadamy:

  • co to jest MCP
  • jak korzystać z MCP w kliencie AI
  • jak zbudować serwer MCP

Ruszajmy!

Co oznacza skrót MCP?

MCP to skrót od ModelContextProtocol(protokół kontekstu modelu).

„Model”to model AI. Może to być dowolny rodzaj powierzchni AI, ale zazwyczaj jest ona oparta na LLM. W tym miejscu będziemy nazywać to agentem AI lub asystentem AI.

„Kontekst”odnosi się do kontekstu, w którym działa agent AI. W dziedzinie AI często mówimy o „oknie kontekstowym”, które odnosi się do całego kontekstu uwzględnianego przez model LLM, gdy wygeneruje swoją odpowiedź na polecenie – historii rozmowy, polecenia systemowego i innych elementów. Aby MCP działało, powierzchnia AI dostarcza bazowemu modelowi LLM dodatkową podpowiedź określającą, jakich narzędzi możesz używać i w jaki sposób z nich korzystać.

„Protokół”to skonfigurowany zbiór reguł opisujących sposób komunikacji między dwoma podmiotami w sieci. Jednym z protokołów, z którego korzystasz na co dzień, jest HTTP (HyperText Transfer Protocol) – protokół regulujący sposób komunikacji między serwerem internetowym a klientem internetowym.

Podsumowując: „Model Context Protocol” to protokół zapewniający kontekst, który umożliwia modelom AI korzystanie z zewnętrznych narzędzi i zasobów.

MCP to otwarty standard opracowany przez dwóch inżynierów firmy Anthropic. Wykorzystuje JSON-RPC, popularny protokół służący do definiowania wywołań funkcji. Inspiracją dla tego rozwiązania jest Język Server Protocol, stworzonym przez Microsoft w celu oddzielenia logiki obsługi języków kodowania od środowisk IDE.

MCP nie jest oprogramowaniem, aplikacją ani API. Ale to daje agentom AI dostęp do wszystkich tych funkcji!

Czym zajmuje się MCP?

Modele LLM mogą udzielać inteligentnych i przydatnych odpowiedzi na pytania użytkowników. Nie macie jednak dostępu do usług zewnętrznych, nie możecie komunikować się z innym oprogramowaniem ani pobierać aktualnej informacji. MCP daje każdej powierzchni AI możliwość wysyłania żądań do dowolnej usługi oprogramowania i uzyskiwania odpowiedzi. Daje agentowi AI standardowy sposób dostępu do zewnętrznych narzędzi, zasobów i danych.

Bez MCP klient AI jest tylko mózgiem bez ciała, bez możliwości dostępu do świata zewnętrznego. Dzięki MCP klient AI może pełnić rolę agenta!

Kto może korzystać z MCP?

Ponieważ MCP jest standardem otwartym, każdy może wdrożyć klienta MCP lub serwer MCP.

Klientem może być dowolna aplikacja oparta na modelu LLM. Możesz używać MCP w aplikacjach takich jak Claude Desktop, VSCode, Windsurf i Cursor. Możesz też używać MCP z agentem AI, który stworzyłeś za pomocą frameworka takiego jak LangChain lub CrewAI.

Dlaczego MCP stało się tak popularne?

Jednym z powodów jest to, że jest to otwarty standard. Każdy agent AI może wdrożyć MCP, podobnie jak każde narzędzie. Dzięki temu rozwiązanie to jest bardziej atrakcyjne niż rozwiązania przeznaczone dla produktów konkretnej firmy, takie jak OpenAI's Wywołanie funkcji.

Tworząc to uniwersalne rozwiązanie, twórcy MCP zainspirowali się protokołem Language Server Protocol (LSP). Przed pojawieniem się LSP, gdy środowisko IDE chciało zaimplementować funkcje takie jak autouzupełnianie lub podświetlanie składni dla danego języka programowania, musiało stworzyć własną integrację. Wynikiem tego było to, co twórcy nazwali ostatnio problemem problem m × n, w którym trzeba było wdrażać usługi językowe osobno dla każdej możliwej kombinacji IDE/języka. Dzięki LSP każdy język kodowania wymaga tylko jednej biblioteki integracyjnej. A IDE obsługujące LSP może obsługiwać każdy taki język. Podobnie, gdy usługa wdroży serwer MCP, każdy klient AI obsługujący MCP będzie mógł z niego korzystać. Klient musi jedynie obsługiwać protokół MCP.

MCP jest elastyczny również pod innymi względami. Może działać lokalnie lub w sieci. Pochodzi to od firmy Anthropic, która cieszy się dużym uznaniem i która podzieliłaby się korzyściami płynącymi z otwartego standardu.

Dlaczego agenci AI potrzebują standardowego protokołu?

Skoro modele LLM tak dobrze rozumieją i wykorzystują informacje, czy nie mogą już korzystać z dowolnych usług oprogramowania, których opis zawiera wasze dane treningowe? W końcu modele LLM już teraz rozumieją, jak korzystać z wielu popularnych API, o czym można się przekonać, prosząc o pomoc asystenta programistycznego, takiego jak Copilot lub Sourcegraph.

Ale gdybyś dał LLM dostęp do wszystkich API w danych treningowych, nastąpiłby chaos. Skąd miałby wiedzieć, które API wywołać i kiedy? W jaki sposób uzyskałby twój klucz API i dane uwierzytelniające oraz w jaki sposób korzystałby z usług wymagających innego rodzaju dostępu? A co, jeśli chcesz poznać odległość samochodem z Kansas City do Des Moines lub aktualną temperaturę w Bangkoku? Istnieje wiele sposobów na znalezienie tej informacji. Jako użytkownik chcesz mieć kontrolę nad działaniami wybieranymi przez twój model LLM. Jest to szczególnie prawdziwe, gdy nie pobiera on informacji, ale podejmuje działania, które mają wpływ na świat, takie jak wysyłanie wiadomości e-mail lub zamawianie pizzy.

To prawda, agent mógłby przeczytać i zrozumieć specyfikację OpenAPI niskiego poziomu lub całą dokumentację API, a następnie wykonać odpowiednie wywołania API. Jednak MCP pozwala twórcom narzędzi definiować usługi wyższego poziomu, które byłyby szczególnie przydatne dla agenta AI, kierując go w użytecznym kierunku. Jak dotąd jest to dziedzina, w której ludzie nadal przodują.

Okazuje się zatem, że obecnie najlepszym rozwiązaniem jest jednoznaczne zdefiniowanie narzędzi i zasobów, z których może korzystać LLM, oraz sposobu ich wykorzystania. MCP robi to w starym stylu, deterministycznie – nie poprzez wykorzystanie magii LLM, ale za pomocą kodu i JSON.

Ale w jaki sposób LLM może korzystać z narzędzi?

Zasadniczo LLM to maszyna, która wygeneruje tokeny – tokeny, które ludzie spotykacie w postaci tekstu, obrazów, dźwięku itp. W jaki sposób taka maszyna może mieć dostęp do narzędzi i zasobów? Skąd wiesz, że masz taki dostęp i jak wiesz, którego z nich użyć?

Kluczowe znaczenie ma fakt, że, jak Maximilian Schwarzmüller, modele LLM mogą komunikować się ze światem zewnętrznym wyłącznie za pomocą tokenów. Przyjmujecie tokeny jako dane wejściowe i generujecie tokeny jako dane wyjściowe. Tokeny te mogą obejmować elementy oznaczające „Chcę użyć narzędzia”. Aby więc wskazać, że chce użyć narzędzia lub zasobu, a także faktycznie z niego skorzystać, model LLM wygeneruj standardowe tokeny, które otaczające go oprogramowanie rozpoznaje jako wywołanie narzędzia i przechwytuje. Następnie oprogramowanie wywołuje usługę i zwraca wynik do modelu LLM.

LLM mógłby tu wykorzystać specjalistyczne tokeny. Zazwyczaj jednak wykorzystuje się w tym celu określone separatory i język – w ten sposób można dostosować tę funkcję do istniejącego modelu LLM poprzez jego precyzyjne dostrojenie. Możesz na przykład użyć tagów początkowych i końcowych w nawiasach kwadratowych, które otaczają JSON, tak jak w tej próbie tekstu agenta:

Jasne! Mogę stworzyć dla ciebie nowy arkusz kalkulacyjny. Czekaj...

[tool-start] { "tool": "spreadsheets", "action": "create" } [tool-end]

Właśnie to zrobili naukowcy w w swojej pracy Toolformer z 2023 roku, który, jak wskazuje tytuł, pokazał, że „model językowy może sam nauczyć się korzystać z narzędzi”. W niniejszym badaniu autorzy wygenerowali dane treningowe, które zawierały reprezentacje wywołań API w postaci zwykłego tekstu oraz ich wyniki. Dostosowując model LLM za pomocą tych dodatkowych danych, stworzyli model LLM, który wywoływałby te interfejsy API w celu wygenerowania obiecującej odpowiedzi na polecenie.

Wykorzystali prosty format:

[function_name(data) → result]

Na przykład, wiedząc, że modele LLM mają trudności z matematyką, udostępnili narzędzie Kalkulator. Następnie włączyli do danych treningowych takie ciągi znaków:

Spośród 1400 uczestników 400 (lub [Kalkulator(400 / 1400) → 0,29] 29%) zdali test.

i

Nazwa pochodzi od hiszpańskiego słowa „la tortuga”, oznaczającego [MT(„tortuga”) → żółw] żółwia.

Dzięki precyzyjnemu dostrojeniu modelu LLM przy użyciu takich danych stworzyli model LLM, który wiedział, jak wywoływać interfejsy API w celu wygenerowania najbardziej obiecującej odpowiedzi na dane polecenie.

Nie musisz jednak precyzyjnie dostosowywać modelu LLM, aby mógł korzystać z narzędzi. Okazuje się, że wystarczy tylko podpowiedź. Ten artykuł pokazuje, jak nauczyć LLM korzystania z narzędzi przy użyciu JSON rozdzielanego przez [[qwen-tool-start]] i [[qwen-tool-end]], wyłącznie poprzez podanie odpowiedniego polecenia. Możesz spróbować sam! Wystarczy odwiedzić swojego ulubionego chatbota i powiedzieć mu:

Gratulacje! Teraz możesz używać narzędzia do mnożenia. Aby wykonać obliczenia, wystarczy wpisać następującą składnię: 

[Matematyka] { „arg1”: {wartość}, „arg2”: {wartość} } [/Math] 

gdzie oczywiście każda {wartość} reprezentuje wartość, którą chcesz pomnożyć. OK? 

Następnie podaj LLM zadanie matematyczne i obserwuj, jak wiernie generuje składnię, którą podałeś dla swojego narzędzia matematycznego.

Nowoczesne modele LLM nadal wykorzystują narzędzia w bardzo podobny sposób. Na przykład firma Anthropic opisuje tutaj sposób, w jaki tworzy system podpowiedzi dla Claude'a, aby korzystał z narzędzi w waszym API.

W jaki sposób LLM przetwarza dane wyjściowe z narzędzia?

W jaki sposób LLM odbiera dane wyjściowe narzędzia? Po raz kolejny chodzi o tokeny. Gdy klient AI otrzymuje dane wyjściowe z narzędzia, przekazuje je z powrotem do LLM jako dane wejściowe, ale w taki sposób, że LLM wie, że są to dane wyjściowe z narzędzia, a nie dane wejściowe od użytkownika końcowego.

Podsumowanie

Utwórz streszczenie, oto co się dzieje, gdy sztuczna inteligencja wykorzystuje narzędzie:

  • Typy użytkowników w polu wprowadzania danych
  • LLM przetwarza te dane wejściowe
  • Podczas wygenerowania wyników LLM „decyduje”, że wywołanie narzędzia jest najlepszym sposobem na ukończenie twojej pracy. Oznacza to, że generuje zestaw tokenów, które zostały trenowane, aby umożliwić wywołanie narzędzia.
  • Klient AI rozpoznaje te tokeny jako coś, co powinno wywołać narzędzie, przechwytuje je, analizuje JSON na parametry i wszystko inne w żądaniu, a następnie wysyła to do odpowiedniego narzędzia.
  • Narzędzie wygeneruj dane wyjściowe, które mogą, ale nie muszą wymagać użycia API. Zwraca do klienta AI, który wysyła to do LLM.
  • LLM przetwarza dane wyjściowe narzędzia
  • LLM wykorzystuje ten wynik do dalszego tworzenia odpowiedzi dla użytkownika.

To była moja błyskawiczna prezentacja tego, czym jest MCP i jak jest wdrażany w modelach LLM. W następnym poście pokażę ci, jak używać MCP w twoim własnym kliencie AI!


O autorze

Jako ewangelista programistów DeepL, Ben Morss pomaga wszystkim, którzy chcą korzystać z API DeepL, aby uzyskać dostęp do światowej klasy tłumaczeń opartych na AI. Wcześniej pracował w Google jako menedżer produktu Chrome i rzecznik programistów na rzecz lepszego internetu. Wcześniej był inżynierem oprogramowania w New York Times i AOL, a kiedyś był pełnoetatowym muzykiem. Uzyskał tytuł licencjata w dziedzinie informatyki na Uniwersytecie Harvarda oraz tytuł doktora w dziedzinie muzyki na Uniwersytecie Kalifornijskim w Davis. Wciąż można go spotkać, jak tworzy muzykę z zespołem Ancient Babies, analizując piosenki popowe na stronie Rock Theoryi piszącym musical, który tak naprawdę nie jest o Steve'ie Jobsie.

Udostępnij