MCP (1/4), общая инфа Второй месяц собираюсь написать про MCP, так что больше не могу молчать, да к тому же его завезли уже почти во все __вайб__-IDE, включая Cursor (но с нюансами, об этом в третьей части). Можно для начала рассмотреть диаграмму, а дальше будет кратко про MCP в целом (этот пост), про MCP-сервер - в частности (второй пост), список текущих проблем + решений части из них (третий пост) и немного о практике внедрения (четвертый пост). Итак, что такое MCP (Model Context Protocol)? Это открытый протокол от Anthropic, стандартизирующий процесс общения между LLM и внешними системами и упрощающий построение агентских систем. Какие это внешние системы могут быть? Да любые, с которыми можно либо обмениваться данными, либо вызывать у них какие-то функции: ● базы данных, вики, Интернет ● таск-трекеры, мессенджеры, репозитории, почта ● файловая система, сервера, контейнеры ● reddit, youtube, прочие соцсети ● умные лампочки дома, кофеварка, кондиционер, ~~кот~~ Словом, что угодно, что выставляет наружу хоть какой-то интерфейс, с которым можно программно взаимодействовать. Какие проблемы решает MCP? ● делает универсальной интеграцию внешних систем с LLM - и это, пожалуй, самое важное, что позволило распространиться этому протоколу с такой скоростью ● обеспечивает доступ LLM к тем системам, которые могут быть чисто внутренними, даже не имеющим доступ в Интернет ● позволяет модели оставаться в пределах единого контекста при решении многоэтапной задачи Какие компоненты нужны для работы с MCP? Помимо внешней системы и LLM: ● MCP-хост - программа, которой нужно связать между собой LLM и внешнюю систему - Cursor/Cline/Claude Desktop/etc. Как правило, это та программа, с которой непосредственно общается пользователь в режиме чата ● MCP-клиент - программный клиент протокола MCP для связи хоста и сервера, является частью хоста. Вот тут есть список примеров хостов-клиентов и тех фич, которые они поддерживают: https://modelcontextprotocol.io/clientsMCP-сервер - легковесная программа, выступающая в роли прокси/гейтвея, которая общается с внешней системой, используя её API. Сам же сервер наружу выставляет MCP-специфичный интерфейс, с которым взаимодействует хост. Тут можно посмотреть на примеры серверов: https://modelcontextprotocol.io/examples Что входит в интерфейс MCP-сервера? Из существенного: ● Tools, инструменты - по сути, описания функций, которые могут быть вызваны клиентами. Когда список инструментов передается LLM, она сама решает, какой из них вызвать для решения своей задачи ● Resources, ресурсы - описания и сами наборы данных, которые сервер может предоставить клиентам для чтения и включения в контекст для LLM. К примеру, в случае БД это могут быть схемы таблиц, для файлового хранилища - списки файлов и содержимое самих файлов. Предполагается, что ресурсы должны быть явно выбраны пользователем или клиентом для передачи модели, но не запрещается переложить выбор и на саму модель ● Prompts, промпты - заготовки промптов, которые пользователь может выбрать в хост-программе. Промпты могут быть параметризованными и принимать какие-то динамические значения от пользователя Какие LLM можно использовать? Заявляется, что протокол открытый и его можно использовать с любыми LLM, где есть Structured Outputs / Function Calling. Тут Anthropic, конечно, слегка лукавит, т.к. у них есть преимущество в том плане, что они выпускают лучшие в настоящее время агентские модели, и они вполне могли тюнить тот же Sonnet на работу именно с чем-то MCP-подобным. Так что пока что для лучших результатов стоит выбирать именно модели Anthropic. #ai #mcp