Transcription
Все начинают понимать, насколько важен протокол контекста модели Anthropic. Это первый в истории стандарт для подключения больших языковых моделей (LLM) к вашим сервисам, таким как Gmail, Slack, GitHub, веб-поиск – список можно продолжать. Вы можете использовать его для повышения возможностей ваших LLM, например, для долговременной памяти, как мы увидим через пару минут. Уже существует множество таких серверов MCP, которые связывают нас с различными сервисами, но истинная мощь заключается в создании собственных серверов. Это позволит нам подключать собственных агентов к любым желаемым сервисам, используя простоту и мощь MCP.
В этом видео я подробно объясню весь процесс создания собственных серверов MCP для подключения ваших агентов к чему угодно. Чтобы сделать это видео полезным, я также проведу вас через свой шаблон, который я создал для вас, чтобы вы могли быстро начать работу с созданием собственных серверов MCP. Я потратил много часов на создание идеального фундамента, чтобы избавить вас от больших головных болей, поэтому я очень рад показать вам это, а также просто как создавать такие серверы в целом. Много полезной информации в этом видео сегодня, так что давайте сразу же начнём.
Если вы ещё не знакомы с MCP от Anthropic, я настоятельно рекомендую посмотреть это видео, ссылку на которое я оставлю выше. В целом, три основных ресурса, которые я использовал для изучения MCP и создания собственных серверов MCP, это: официальная документация по MCP (мы смотрим на неё прямо сейчас), список существующих серверов MCP на GitHub и официальный репозиторий GitHub от Anthropic для Python SDK MCP. Разъясню все три очень быстро, а ссылки на них будут в описании этого видео.
Официальная документация очень полезна для общего понимания MCP. В ней есть страницы практически по всему, включая создание собственных серверов и клиентов, которые мы будем использовать в этом видео. Существующий список серверов MCP очень полезен в качестве ориентира. Вы можете использовать эти серверы в качестве примеров для создания собственных, и это просто отличный репозиторий множества серверов, которые мы, вероятно, захотим использовать сами, просто в целом, и для создания собственных серверов. Наконец, Python – это язык, который я буду использовать для создания серверов MCP. Он самый простой и наиболее часто используемый в целом, поэтому его использование в качестве общего руководства по созданию серверов MCP, в частности с использованием Python, очень полезно.
Первый важный вопрос, на который я хочу ответить: что на самом деле означает создание собственного сервера MCP? Для начала давайте перейдем к существующему списку. Вы можете перейти к любому из этих серверов MCP, например, Brave Search, чтобы дать нашей LLM очень мощные возможности веб-поиска. Мы можем прокрутить вниз и увидеть конфигурацию, которую мы добавили в любой клиент MCP. Это любое приложение, которое поддерживает MCP, например, Windsurf, Cursor, N8N, Claw Desktop, ваши собственные агенты ИИ – есть так много разных мест, где мы можем использовать MCP, чтобы предоставить все эти возможности нашим агентам и инструментам. Вы копируете это, а в официальной документации MCP показано, как использовать серверы MCP, как подключить всё это к Cloud Desktop. Таким образом, мы можем перейти к нашему Cloud Desktop и затем следовать этим инструкциям для настройки нашей конфигурации.
Вот как выглядит моя конфигурация. Я просто вставил то, что скопировал с GitHub, в свою конфигурацию Cloud, а затем установил свой ключ API Brave. У меня даже есть несколько разных серверов MCP, чтобы показать вам, как можно использовать столько, сколько вы хотите, комбинируя все эти инструменты, чтобы добавить все эти новые возможности к нашей LLM. У меня даже есть Archon, мой создатель агентов ИИ с открытым исходным кодом, для которого у меня скоро появятся захватывающие обновления. Кстати, следите за этим. Но в любом случае, это наша конфигурация. А вернувшись в Claw Desktop, после перезапуска у вас будет доступ ко всем этим серверам. У меня их сейчас много, но теперь мы можем задать вопрос, на который он сможет ответить только в том случае, если у него есть доступ к веб-поиску. Поэтому я позволю ему использовать сервер Brave MCP для этого чата, и вот, посмотрите, теперь у нас есть актуальная информация, на которую мы обычно не смогли бы ответить из-за ограничения знаний LLM. Вот мощь MCP. Так просто добавить новые возможности к нашим LLM, чтобы вывести их на новый уровень для нас.
Но есть некоторые ограничения. Что, если способ взаимодействия этого сервера MCP с Brave не тот, который мы хотим использовать? Или что, если есть какие-то сервисы или возможности, с которыми мы хотим работать, но для них нет существующего сервера MCP? Вот тогда нам нужно серьёзно взяться за дело и создать собственные серверы MCP. Мы сможем взаимодействовать с нужными нам сервисами и иметь полный уровень настройки и контроля, чтобы наши агенты действительно делали то, что мы хотим. Именно этому я и собираюсь научить вас в этом видео.
Причина, по которой я показал использование существующего сервера MCP, в том, что я хочу доказать вам, что то, что мы собираемся создать вместе, будет работать точно так же, как и все серверы MCP, с которыми вы уже работали. Я действительно готовлю почву, чтобы показать вам, что эти серверы, созданные Anthropic, соответствуют всем лучшим практикам и работают с любым клиентом, который вы можете себе представить. Мы создадим такой же сервер, и я даже покажу вам. Это моя новая обновлённая конфигурация Cloud Desktop. Это сервер MCP, который я создаю в качестве примера в этом видео. Он интегрируется с Mem, которая является библиотекой для предоставления долговременной памяти нашим агентам ИИ. Мы сделаем так, чтобы Claw Desktop запоминал то, что мы говорили в прошлых разговорах. Сейчас у него такой возможности нет. Посмотрите на конфигурацию, она настроена в этом JSON-файле точно так же, как и все наши другие серверы MCP. Очень просто и удобно, и то, как мы взаимодействуем с ним, и то, как мы его создаём, как мы увидим позже, тоже одинаково.
Поэтому я могу вернуться в Claw Desktop и задать ему другой вопрос, например: «Какие у меня воспоминания?» Теперь он будет использовать инструмент, созданный не Anthropic, а мной, и тем, что вы сможете создать после этого. Поэтому я позволю ему получить все воспоминания, и как только он запустит этот инструмент, он скажет мне только одно воспоминание: «Мне нравится курица», потому что я сделал его очень простым, я просто вставил одно воспоминание в базу знаний прямо сейчас. Но да, я смог использовать этот инструмент, который я создал, и получить его. Это так круто! Всё выглядит точно так же, но теперь мы можем добавлять свои собственные возможности.
Поскольку это меня так волнует, я хочу очень быстро показать вам, как мы можем использовать этот сервер MCP по-разному, с чем угодно, что поддерживает MCP. У меня есть этот пользовательский агент ИИ Pantic, который я подключил к своему серверу MCP, работающему локально прямо сейчас. Поэтому я могу зайти в терминал и запустить скрипт, который спросит его обо всех моих воспоминаниях, точно так же, как я делал в Claw Desktop. Поскольку он подключен к тому же серверу MCP, у него есть тот же инструмент, мы получаем тот же ответ. И я могу сделать то же самое в N8N. Я показываю вам все эти разные типы клиентов. У меня есть ещё один, с N8N, подключенным к тому же серверу MCP. Поэтому я могу зайти в свой чат, и как и раньше, я могу спросить: «Какие у меня воспоминания?» Это немного скучно, мы получаем один и тот же ответ каждый раз, но в этом суть. Я показываю вам, как у нас есть один сервер MCP, к которому мы можем подключаться со всех этих разных клиентов, и мы всё построили сами. Посмотрите на это: «В настоящее время у вас есть одно воспоминание: вам нравится курица». Забавно это сформулировано. Это как будто нас бросили на пол сервера, и единственное воспоминание, которое у нас есть, это то, что нам нравится курица. Вот так. Если вы знаете отсылку, вы знаете отсылку. Но это так здорово! Мы можем подключаться ко всем этим клиентам. Поэтому теперь давайте перейдём к созданию этого сервера, и это шаблон, который вы можете использовать для создания чего угодно.
Вот шаблон Python MCP, который я потратил много часов на подготовку для вас. Я действительно пытался включить все лучшие практики для MCP, которые, как я вижу, многие люди не реализуют. Итак, это сервер Mem Zero MCP. Я хотел создать что-то конкретное и практичное, но в то же время достаточно общее, очень базовое, чтобы вы могли просто удалить части, специфичные для Mem Zero, если хотите, и реализовать все свои собственные инструменты, чтобы действительно превратить это в свой собственный сервер MCP, следуя всем различным компонентам, которые я объясню немного позже, что действительно делает этот сервер надежным и поддерживающим различные транспортные протоколы для MCP, что очень важно.
Файл README, который находится в корне этого репозитория GitHub, ссылку на который я оставлю в описании этого видео, показывает, как настроить и запустить всё, и вы можете следовать этим инструкциям для своего собственного сервера после того, как вы настроили его, используя этот шаблон. Очень важно, что просто потому, что вы можете ввести всю документацию в помощник по кодированию ИИ для создания сервера для вас, это не значит, что он будет работать всегда. Поэтому ещё одно очень хорошее применение этого шаблона – вы можете просто скопировать всё в этой главной функции и вставить её как часть вашего запроса к вашему помощнику по кодированию ИИ, когда вы просите его, например, в Windsurf Cursor, создать для вас сервер MCP. Этот пример поможет помощнику по кодированию ИИ в 10 раз лучше, чем любая документация, которую вы можете получить из MCP, чтобы помочь ему понять, как создавать эти серверы. Используйте это в качестве ресурса для себя и для ИИ. Другое дело, что я вижу много серверов MCP, которые просто построены не лучшим образом. Chromobb – хороший пример, это солидный сервер MCP в целом, но способ, которым они создают своих клиентов, просто не идеален. Мне не нужно вдаваться в подробности прямо сейчас, но он просто построен не лучшим образом. И Mem на самом деле выпустила свой собственный сервер MCP. Я не создаю что-то совершенно новое, но если вы погрузитесь в код их сервера MCP, опять же, я не хочу вдаваться в подробности прямо сейчас, вы можете ясно видеть, что они не совсем понимали, как на самом деле работает MCP. Он поддерживает только один транспорт, и они дублируют описание своих инструментов. Здесь происходит много вещей, которые неверны, и я не согласен с некоторыми из их решений. Например, вы должны использовать ключ API Mem Zero. Вы не можете использовать этот сервер MCP бесплатно, как вы можете использовать мой сервер Mem Zero MCP бесплатно. Честно говоря, я просто считаю, что мой – лучшая версия в целом. И да, похоже, никто в данный момент не знает, как действительно правильно создать сервер MCP. Вот что я хочу дать вам в подарок прямо сейчас – это как шаблон, который показывает вам, как действительно хорошо создавать эти серверы.
Ещё одна вещь на скорую руку: если вам нравится этот шаблон, и вы хотите больше ресурсов и шаблонов, которые выглядят так же и действительно дают вам хорошую отправную точку для всего, что вы хотите создать с помощью ИИ, ознакомьтесь с dynamis.ai. Это эксклюзивное сообщество, список ожидания для которого я недавно открыл, и я запущу его позже в этом месяце. У меня есть множество живых мероприятий, курсов, ресурсов и шаблонов, таких как этот сервер MCP, для вас. Вы можете рассматривать это как мой канал YouTube, но ещё глубже, потому что на YouTube я могу делать только столько, сколько могу делать каждую неделю. Я буду продолжать выпускать для вас много ценного контента здесь, но Dynamus – это место, где вы можете углубиться. Проверьте это, если заинтересованы: dynamis.ai. Но давайте вернёмся к этому шаблону для создания сервера MCP, следуя всем этим лучшим практикам, чтобы дать вам хороший старт.
Я не пытаюсь сейчас встать на свой конёк и сказать вам, что всё, что я вам даю, абсолютно идеально, но я говорю вам, что я потратил много часов на изучение других серверов MCP, углубляясь в документацию, создавая вещи сам и учась методом проб и ошибок. Всё это для того, чтобы дать вам этот шаблон, чтобы избавить вас от огромной головной боли. Поэтому, пожалуйста, возьмите это и используйте.
Сейчас я покажу вам, как мы можем использовать этот шаблон и другую документацию для создания сервера MCP, а также хочу пройтись по общей структуре, чтобы вы действительно поняли, что происходит с этими серверами MCP. Потому что в конце концов я не большой поклонник кодирования на основе настроения. Я хочу, чтобы вы действительно понимали, что происходит. Поэтому начнём с документации по Python SDK. Вы можете увидеть на высоком уровне, что входит в сервер. Начать очень просто: вы просто pip install MCP, а затем можете импортировать fast MCP, что очень простой способ для Anthropic быстро запустить сервер. Поэтому с помощью этой единственной строки вы запускаете свой сервер для MCP. А для добавления инструментов вам нужно написать немного кода, например, вот так. И atmcp.tool, а функция, которую вы определяете ниже, теперь добавляется как инструмент к вашему серверу MCP. Поэтому, когда вы подключаете свой сервер к чему-то вроде Cloud Desktop, теперь у него есть возможность вызывать эту функцию calculate BMI, LLM выберет вес и рост, а затем получит ответ. Это как обычный вызов инструмента для агента, который вы бы реализовали с помощью чего-то другого, например, N8N, Crew AI, Langchain или Pantic AI, чего бы то ни было. Вот как мы добавляем инструменты к нашим серверам. Это очень-очень просто. Есть и другие компоненты, которые вы можете подключить к своим серверам, например, у вас могут быть подсказки, которые LLM может получать в качестве шаблона, вы можете делать изображения, есть также ресурсы. Это своего рода данные, которые вы хотите постоянно обновлять для LLM в реальном времени. Вы можете прикрепить все эти разные вещи, но в основном сейчас людей интересует добавление инструментов к нашему серверу, потому что это действительно то, что делает LLM более агентным, когда он может делать эти вещи от нашего имени, используя инструменты, которые у нас есть на сервере MCP. На этом я сосредоточусь в этом видео, но, посмотрев на эту документацию, кажется, что всё довольно просто: мы просто определяем свой сервер, а затем добавляем множество инструментов, и по большей части это действительно так просто, это действительно не так уж плохо.
И в дополнение к этому, как я уже говорил, вы можете использовать помощника по кодированию ИИ, чтобы сделать это ещё проще. Возвращаясь к официальной документации MCP, у них буквально есть вкладка для создания MCP с помощью LLMs. Вы переходите сюда, а затем можете посетить эту страницу для LLM-L.ext. Это предоставляет полную документацию по MCP в формате Markdown, поэтому вы можете скопировать всё здесь и вставить это как часть вашего запроса к вашему LLM, так что он теперь полностью понимает всё с MCP. Это очень хорошо. Вы можете сделать это, я могу зайти в Windsurf, например, вы можете сделать это с любым помощником по кодированию ИИ, который вы хотите, и я могу просто вставить всю документацию. Вот, он теперь полностью понимает MCP. И другое, что вы можете сделать с некоторыми помощниками по кодированию ИИ, такими как Windsurf, это то, что они поддерживают документацию MCP по умолчанию. В Windsurf я могу просто набрать @MCP и нажать Tab, и теперь он будет использовать rag для поиска в документации MCP для меня. Есть и другие способы добавления документации, но да, это очень хорошая отправная точка. А затем вы можете также вставить мой пример для моего шаблона.
Таким образом, ваш запрос будет выглядеть примерно так: используйте документацию MCP, приложенную здесь. Хорошо, тогда у нас есть документация, затем я скажу: используйте также этот сервер Python MCP в качестве примера для сервера MCP, который вы собираетесь создать. Вы даёте этот полный пример прямо здесь, а внизу запроса вы бы сказали: «Теперь я хочу создать свой собственный сервер MCP для интеграции, скажем, с Light RAG, например. Я недавно сделал видео об этом, это действительно мощный инструмент с открытым исходным кодом для RAG на основе графов знаний». Поэтому мы могли бы создать сервер, используя только помощника по кодированию ИИ, чтобы по сути иметь Light RAG как инструмент для Claw Desktop или N8N, чего бы мы ни хотели. И это всё, что должно входить в этот запрос. Я не хочу, чтобы это видео было полностью посвящено использованию ИИ для создания сервера MCP, поэтому я не буду отправлять это и работать с этим прямо сейчас, но это общая структура запроса для использования ИИ для кодирования сервера MCP. Таким образом, то, что он выдаст, вероятно, не будет идеальным сразу, но это даст вам хорошую отправную точку, и, надеюсь, поскольку у него есть этот шаблон, он будет довольно близок к идеалу. Одна из главных моих целей – мы теперь знаем, как использовать помощников по кодированию ИИ для работы с MCP и как вообще устроены серверы MCP. Теперь давайте углубимся в этот шаблон. Я быстро пройдусь по его созданию с нуля. Я просто покажу вам разные компоненты и объясню, как всё это работает вместе, как я реализую лучшие практики для MCP 2.
Первое, что мы должны сделать после обычных импортов вверху нашего скрипта Python, это определить срок службы нашего сервера MCP. Я вижу, что многим серверам MCP этого не хватает. Это очень важная концепция. Причина, по которой нам это нужно, заключается в том, что большинство серверов MCP имеют какой-то клиент, например, подключение к базе данных. Это может быть клиент Mem Zero, как в нашем случае, для установки и извлечения воспоминаний. Это может быть ваш экземпляр Supabase. Мы хотим определить только один из них для всего срока службы сервера MCP. Для всего жизненного цикла мы хотим определить клиента один раз, а затем никогда больше не переопределять его. А затем мы также хотим иметь возможность немного очистить в конце, потому что обычно, когда у вас есть что-то вроде подключения к базе данных, вы хотите вызвать какой-то метод close для корректного завершения работы подключения к базе данных. Вы можете сделать это также в жизненном цикле. Если вы когда-нибудь реализовывали конечную точку API с помощью чего-то вроде Express или FastAPI, вы, вероятно, видели что-то вроде жизненного цикла. Это похоже на шаблон Singleton, если вы увлекаетесь программной инженерией. Я имею в виду, не волнуйтесь, если нет, я просто пытаюсь установить связи для некоторых из вас здесь. Но да, очень важно определить в нашем случае наш клиент Mem Zero, а затем вернуть его. Этот единственный клиент, тот же экземпляр, теперь будет доступен для всех наших вызовов инструментов в будущем, которые мы определим немного позже. Очень-очень важно. Он добавляется как часть этого контекста, который затем будет аргументом, передаваемым всем инструментам MCP в будущем. Мы увидим это, когда определим их.
После жизненного цикла мы можем создать наш сервер Fast MCP. Это будет очень похоже на то, что мы видели в документации Python SDK. У нас здесь просто есть несколько дополнительных параметров, потому что мы даём ему имя и описание. Мы определяем здесь срок службы, очевидно, мы должны включить это в наш сервер, а для транспорта SSE я объясню это позже, мы хотим определить наш хост и порт. Клиент будет подключаться к этому конкретному хосту и порту, чтобы получить доступ к нашему серверу MCP. А теперь мы можем определить все наши инструменты. Мы уже на последнем компоненте нашего сервера MCP. Как мы видели в документации, это mcp.tool или как бы ни назывался ваш сервер, и мы просто определяем функцию, которая представляет одну из возможностей, которые мы предоставляем нашему серверу. В этом случае эта первая функция будет использовать Mem для сохранения воспоминания, чтобы наш агент мог получить его в будущем разговоре. Контекст неявно передаётся в качестве первого параметра. Теперь мы можем получить доступ к клиенту Mem Zero, который мы определили прямо здесь, а второй параметр – всё после первого – выбирается LLM. Он решает, какой текст он хочет сохранить в качестве воспоминания, а также у нас есть этот docstring, и это на самом деле очень важно, потому что всё, что мы напишем здесь, будет описанием инструмента, предоставляемого LLM. Поэтому это скажет ему, когда и как использовать этот конкретный инструмент на нашем сервере. Я даже покажу вам это здесь. Если я перейду к серверу MCP для Git, который у меня сейчас подключен к Windsurf, весь слегка затемнённый текст, который вы видите для всех этих инструментов, который находится под каждым из заголовков, это этот docstring. Всё, что вы здесь напишете, передаётся как описание LLM. Надеюсь, эта связь понятна. Очень важно быть подробным в этом, а что касается фактической функциональности сервера MCP с Mem Zero, я не хочу углубляться в Mem Zero прямо сейчас, потому что это не основная тема этого видео, но вы можете видеть, что я получаю клиента из контекста жизненного цикла вот так, а затем просто использую его для добавления нового воспоминания в нашу базу данных Supabase. Это очень просто и удобно. А затем я просто возвращаю ответ LLM, говоря, что я успешно сохранил воспоминание, или если есть какая-либо ошибка, я также уведомляю об этом LLM. Это на самом деле передастся нам как пользователю, потому что этот ответ передаётся клиенту MCP, такому как Claw Desktop, а Claw Desktop будет использовать эту информацию, как успех, так и ошибку, чтобы сообщить нам, что произошло, когда он использовал этот инструмент. Надеюсь, всё понятно. А для двух других инструментов, которые у нас есть на сервере, я не хочу слишком подробно объяснять их, но они тоже простые и удобные. Итак, у нас есть один инструмент для получения всех воспоминаний, которые у нас есть для нашего текущего пользователя. Опять же, просто получаем клиента, как мы делали раньше, из контекста, на этот раз используя функцию get all для получения всех воспоминаний, которые у нас есть. А если у нас много воспоминаний, например, сотни и сотни, нам может потребоваться поиск конкретных, поэтому у нас также есть инструмент для этого очень похожим образом. Как я уже сказал, держим всё просто, возможно, есть много других инструментов, которые вы могли бы добавить из Mem Zero, но я просто хотел показать вам что-то практичное, но в то же время достаточно простое, чтобы вы действительно могли взять это как шаблон, не вырезая слишком много функциональности. Если хотите, вы можете просто взять все эти инструменты и удалить их, а затем просто добавить свои собственные с помощью, например, atmcp.tool, а затем определить любую функцию, которую вы хотите, если вы хотите подключиться к Brave, Supabase или Light RAG, что бы вы ни хотели сделать, вы можете это сделать. Вот и все инструменты. А последняя часть нашего скрипта – это просто главная функция. Вот где мы действительно запускаем сервер. На данном этапе мы инициализировали всё и определили все инструменты, но теперь мы можем фактически запустить его. Давайте немного приблизим это сейчас, потому что это очень важно. Большинство серверов MCP не очень хорошо понимают это, судя по тому, что я видел. Они обычно заставляют сервер работать только с одним из этих разных типов транспорта, но оба важны для разных целей. И я скажу, что вся эта идея транспорта с помощью либо SSE, либо стандартного ввода-вывода – это самая сложная техническая часть для понимания из всего, что касается MCP, потому что это основной способ, которым наши клиенты и серверы могут…
Общайтесь друг с другом. И если вы действительно хотите углубиться в технические подробности, я бы посоветовал почитать страницу с описанием базовой архитектуры в официальной документации MCP. Я не хочу сейчас вдаваться в подробности, чтобы не утомлять вас. Я хочу сосредоточиться на создании сервера, а не на понимании всех мельчайших деталей. Но у нас есть два разных метода для общения с нашим сервером. Я приближу, чтобы вам было легче читать. Здесь у нас есть стандартный ввод-вывод, у нас есть SSE. И как вы видели в скрипте, я обрабатываю оба. И у каждого есть свои плюсы и минусы.
С стандартным вводом-выводом ваш клиент фактически запускает экземпляр сервера как подпроцесс. Клиент управляет сервером. Это не то, что вы обычно имеете с чем-то вроде HTTP. И причина, по которой вы захотите использовать это, заключается в том, что это идеально подходит для локальных процессов, когда ваш сервер и клиент MCP работают на одной и той же машине. Это очень быстро. Но у нас также есть SSE. Это больше похоже на то, с чем вы можете быть знакомы с HTTP, где у вас есть ваш браузер, ваш клиент, который подключен к серверу, к некоторой конечной точке API. У вас есть это соединение, которое также может быть через интернет. И это очень важно, если вы хотите, чтобы ваш сервер MCP работал не только на той же машине, что и ваш клиент. Честно говоря, я думаю, что это более важно в целом, особенно потому что, я думаю, направление, в котором мы движемся с серверами MCP, таково, что каждый хочет запускать их удаленно, чтобы монетизировать их или просто размещать отдельно от своего клиента. А также для некоторых клиентов, таких как N8N, например, они фактически поддерживают только SSE. И поэтому вам пришлось бы создать свой сервер для SSE, как я делаю прямо сейчас, если мы хотим использовать его в чем-то вроде N8N. Итак, вы можете видеть по этим плюсам и минусам, как мы хотим поддерживать и то, и другое, и это то, что я делаю в данном случае.
И так, есть переменная среды, которую вы можете установить. Если вы хотите посмотреть все эти переменные среды, просто взгляните на файл README, который у меня есть в корне репозитория. Но одна из них — это транспорт, который мы используем, и мы можем установить его на SSE или стандартный ввод-вывод в зависимости от того, как мы хотим разместить наш сервер. Я сделал его настолько адаптируемым, насколько это возможно, что является одной из тех лучших практик, о которых я вам рассказывал, и я действительно старался следовать им во всем, что важно для сервера. И поэтому его очень легко запустить с помощью любого из них. Есть всего одна команда, которую мы вызываем в нашем экземпляре MCP, чтобы запустить с помощью SSE или стандартного ввода-вывода. Он заботится обо всем хостинге под капотом, например, с Starlet для SSE, например, если вы более технически подкованы и знаете, что это значит.
Итак, да, поверьте мне, я очень углубился в исследованиях, чтобы понять все это, поэтому я щажу вас этих подробностей на данном этапе. Мы завершили наш сервер MCP. Итак, возвращаясь к файлу README, мы можем посмотреть инструкции по настройке всего. Итак, у меня есть инструкции по установке как для Python, так и если вы хотите запускать все с помощью Docker, что я бы на самом деле рекомендовал. Я думаю, Docker — просто замечательный инструмент, он делает все более стандартизированным и удобным в работе. А затем вы можете настроить все свои переменные среды, основываясь на этом руководстве. Многое из этого изменится, если вы не используете Mem Zero. Поэтому, если вы создаете свой собственный сервер, многое из этого может измениться, но для этого примера это все, что вам нужно настроить. А затем у меня есть инструкции по запуску с Python и Docker. А также то, как это выглядит для подключения к нему с вашей конфигурацией в вашем клиенте MCP. Я все предусмотрел. Взгляните на это для стандартного ввода-вывода для Python, стандартного ввода-вывода для Docker. У меня есть SSE для Python и Docker. Все четыре способа, которыми вы могли бы захотеть подключиться к этому серверу, у меня есть конфигурация для всего этого.
Итак, что я сейчас сделаю, позвольте мне открыть мой терминал. Я покажу вам здесь. Итак, я скопирую команду для сборки контейнера. Я просто скопирую это, а затем просто вставлю его сюда. А порт, я на самом деле изменю его на 8070, потому что он уже запущен на другом порту. Итак, я соберу контейнер полностью с нуля. Я просто в каталоге, в котором мы работали, создавая наш сервер MCP в этом скрипте Python. Итак, он создает контейнер, на самом деле он довольно быстрый в целом, серверы MCP довольно легкие, что является частью его красоты. Итак, я позволю ему сделать свое дело и запустить все. Он уже экспортирует окончательный контейнер, и затем я могу просто перейти вниз, сюда, и давайте просто скажем, что я хочу запустить его с SSE и Docker прямо здесь. Итак, я просто скопирую эту команду, а затем я могу очистить терминал и запустить эту, и вуаля, теперь наш сервер MCP запущен и готов к подключению к любому клиенту, который мы хотим. Итак, он работает на порту 8070. Итак, например, я могу зайти в N8N, просто чтобы изменить порт с 8060, как я использовал раньше, на 8070 сейчас, а затем я могу задать ему тот же вопрос: «Какие у меня воспоминания?» Итак, я хочу, чтобы он в шестидесятый раз в этом видео сказал мне, что я люблю курицу. Давайте посмотрим, получим ли мы то же самое. Да, любит курицу. Хорошо. И я могу даже зайти в контейнер Docker и в журналы и увидеть, что все запросы от моего агента N8N поступают прямо здесь. Взгляните на это. И мы можем немного продвинуться дальше. Позвольте мне фактически сказать ему, что я также люблю говядину. Курица и говядина — это здорово. Хорошо. Итак, я хочу сохранить обновленное воспоминание или, может быть, второе воспоминание, что я также люблю говядину, просто чтобы увидеть, как используется другой инструмент, так что я не всегда задаю один и тот же вопрос. Хорошо, он обновил воспоминания, отлично. И я могу обновить это, и я могу теперь спросить его: «Какие продукты я люблю?» Итак, теперь он должен сказать, что я люблю курицу и говядину, извлекая оба этих воспоминания. Давайте посмотрим, получим ли мы правильный ответ. Вот и все, вы любите курицу и говядину. Итак, этот сервер отлично работает, и все это использует мощность MCP для этого соединения, и так легко взять это и создать свой сервер для буквально всего, что вы хотите. И, конечно же, дайте мне знать, если у вас есть какие-либо вопросы по этому шаблону, когда вы используете его для себя. Если вы думаете, что я мог бы что-то улучшить в этом шаблоне, сообщите мне об этом, потому что я действительно хочу сделать его идеальной отправной точкой для всех, кто хочет создать свои собственные серверы.
Надеюсь, это видео действительно помогло вам увидеть, как легко создать свой собственный сервер MCP, чтобы подключать своих агентов ИИ буквально к чему угодно. Также у меня скоро выйдет больше контента по MCP для таких вещей, как разработка конкретных вариантов использования и больше способов использования этого очень мощного протокола, а также больше вещей для агентов ИИ. Поэтому следите за этим. Если вам понравилось это видео и вы с нетерпением ждете больше подобных руководств, я был бы очень признателен за лайк и подписку. И с этим я увижу вас в следующем.