Model Context Protocol (MCP): Стандартизация взаимодействия AI-приложений

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Где-то летом 2024 года в некоторых OpenAI сервисах появилась возможность использовать "инструменты".
Инструмент — это функция, которая выполняется на сервере и возвращает некий результат. Например, в ChatGPT можно было использовать инструменты для поиска информации в интернете, для генерации изображений и т.д.

Это был закрытый API, который использовался внутри OpenAI, и как и что там происходило было довольно туманно.

Anthropic (создатель Claude) совершил мини-революцию в AI инструментарии, создав открытый протокол MCP с расширенными возможностями для создания подобных инструментов и даже больше.

Уже сейчас можно подключать MCP серверы к IDE, например, Cursor AI или Cline, и значительно расширить их возможности. Так же это может рассматриваться как, как минимум частичная, замена RAG и fine-tuning.

И если раньше ваше приложение заискивая пыталось выклянчить у чатбота подходящий результат, то теперь доминанта бизнес-логики снова вернулась к нему, а LLM работает простым сервисом.

Model Context Protocol (MCP)

Anthropic выделила три субъекта взаимодействия при данном продвинутом использовании Gen AI - клиент, сервер и LLM.

Клиент (например, IDE, Claude for Desktop или ваша программа) - это начальная точка, с которой начинается взаимодействие.

MCP сервер - это сервис, который предоставляет определённые услуги (например, поиск по локальной файловой системе, в БД или работа по API с GitHub). LLM может использовать эти сервисы для решения поставленной задачи.

LLM - языковая модель, которая обрабатывает запросы и возвращает результат.

Model Context Protocol – это протокол, который стандартизирует интерфейс между клиентом и MCP сервером.

Архитектура MCP

На данный момент поддерживаются только локальные MCP сервера (на той же машине - грубо говоря, просто программы, которые клиент может запустить на хосте), идет работа над поддержкой удаленных.

Основные преимущества MCP

  • Простота подключения к различным сервисам через единый интерфейс

  • Гибкость смены LLM-провайдеров и сервисов

  • Встроенные практики безопасности данных

  • Стандартизация взаимодействия между сервером и клиентом

Транспортный механизм

JSON-RPC 2.0

Данный очень недооцененный в web разработке протокол, давно стал стандартом в web 3.0 и таких вещах как данный MCP.

Как это работает

  1. MCP Server:

    • Предоставляет сервисы в виде инструментов (tools), ресурсов и промптов.

    • Выступает в роли стандартизированного API, через который клиент может запрашивать и выполнять функции сервиса.

  2. Клиент (например, IDE или Claude for Desktop):

    • Инициирует запросы к MCP серверу для получения списка доступных инструментов.

    • Передает полученную информацию о сервисах в LLM вместе с промптом.

  3. LLM (Language Models):

    • Обрабатывает переданный промпт с информацией о доступных инструментах.

    • Определяет, какой инструмент необходим для решения конкретной задачи, и сообщает об этом клиенту.

    • Получает результаты выполнения инструмента и формирует финальный ответ.

Практический пример использования

Сценарий: Интеграция AI-помощника с базой знаний

  1. Инициализация:

    • Пользователь запускает AI-помощника (Клиент).

    • Клиент устанавливает соединение с MCP сервером, предоставляющим необходимые сервисы.

  2. Запрос:

    • Клиент получает список доступных инструментов с сервера и передает их в LLM в виде промпта.

  3. Обработка:

    • LLM анализирует информацию и определяет, какой инструмент требуется для решения задачи.

    • Клиент отправляет обратный запрос на сервер для выполнения выбранного инструмента с указанием параметров.

    • MCP сервер выполняет запрос и возвращает результат клиенту.

  4. Результат:

    • Клиент передает полученный результат в LLM для формирования окончательного ответа, который выводится пользователю.

Инструменты, ресурсы и промпты в MCP

MCP может предоставлять набор сервисов, которые можно разделить на три категории:

1. Инструменты (Tools)

Это функции, которые выполняют конкретные действия и возвращают результат. Примеры включают:

  • Конвертер валют: Клиент запрашивает у сервера конвертацию суммы, а сервер возвращает актуальный курс, например, "1 USD = 0.85 EUR".

  • GitHub Server: Сервер для управления репозиториями, работы с GitHub API и получения данных о проектах. Он позволяет интегрировать функциональность GitHub в приложения с использованием MCP.

  • Web Search Server: Сервер, позволяющий осуществлять поиск информации в интернете через поисковые API (например, Brave Search), что полезно для быстрого получения релевантных данных.

  • Web Scraping Server: Реализация сервера для веб-скрапинга с использованием инструментов автоматизации (например, Puppeteer). Такой сервер может собирать данные с веб-страниц для дальнейшей обработки LLM.

  • Проверка орфографии: Инструмент для анализа текста, исправления опечаток и ошибок, что помогает LLM выдать корректный финальный ответ.

  • Генерация отчетов: Автоматическое создание отчетов на основе собранных данных, например, формирование ежемесячной сводки продаж.

  • Переводчик текстов: Инструмент, позволяющий выполнять автоматический перевод текста с одного языка на другой, актуальный при работе с многоязычными данными.

2. Ресурсы (Resources)

  • База знаний: Сервер предоставляет доступ к базе данных FAQ, технической документации или справочным материалам, что позволяет LLM обрабатывать вопросы с более глубоким контекстом.

  • Внешние API: Интеграция с погодными сервисами или новостными лентами, где сервер получает актуальную информацию.

  • Доступ к статистическим данным: Сервер может предоставлять аналитические метрики или данные о производительности системы для оптимизации работы приложения.

  • Доступ к историческим данным: Предоставление архивных данных, например, курсов валют за прошлые годы, что может пригодиться для анализа динамики изменений.

  • File System Server: Обеспечивает безопасный доступ к локальной файловой системе, позволяя выполнять операции чтения, поиска и управления файлами.

  • Database Server: Сервер для работы с базами данных, предоставляющий доступ к данным, выполнение запросов и анализ схем.

  • Google Drive Server: Сервер для доступа к файлам Google Drive, позволяющий осуществлять операции поиска и чтения документов, полезен для интеграции с облачными хранилищами.

3. Промпты (Prompts)

Промпты – это шаблоны запросов, которые помогают структурировать взаимодействие между клиентом и LLM, определяя, какой инструмент использовать и какие данные запрашивать. Примеры:

  • Шаблон запроса для аналитики: «Проанализируй данные из базы знаний и сформируй краткий отчёт о текущих трендах.»

  • Сценарий выбора инструмента: «Если пользователь запрашивает конвертацию валют, вызови инструмент конвертера и верни результат в виде 'x [исходная валюта] = y [целевая валюта]'.»

  • Пошаговый руководящий промпт: Промпт, который уточняет детали запроса, запрашивая дополнительную информацию, если исходный запрос неоднозначен.

  • Промпт для уточнения деталей: Шаблон, предназначенный для получения дополнительной информации от пользователя, если запрос слишком общий, например, «Уточните, какую именно информацию вы хотите получить по данной теме.»

Что-то из этого LLM и сама умеет делать, но специализированный инструмент будет это делать намного лучше.

Таким образом, MCP сервер может обеспечить стандартизированный интерфейс для взаимодействия между различными сервисами. Подробнее о возможностях и интеграциях можно узнать в официальной документации MCP.

Уже сейчас активно развивается экосистема для создания различных MCP сервисов - mcp.so.

Архитектурные преимущества использования MCP

  • Гибкость интеграций: Легкое подключение новых инструментов без перестройки всей системы

  • Масштабируемость: Возможность добавления специализированных серверов под конкретные задачи

  • Безопасность: Стандартизированный протокол обмена с встроенными механизмами контроля доступа

Разработчики могут экспериментировать с MCP, создавая уникальные серверы, которые добавляют функционал в существующие приложения, существенно улучшая пользовательский опыт.

Выбор инструментов в MCP

В рамках Model Context Protocol существует два основных подхода к выбору инструментов для решения задач:

1. Выбор инструментов LLM

LLM может самостоятельно анализировать доступные инструменты и выбирать наиболее подходящие для решения конкретной задачи. Этот подход реализуется через:

  • Контекстный анализ: LLM оценивает полученный промпт и список доступных инструментов.

  • Семантический выбор: Определение наиболее релевантного инструмента на основе семантического анализа запроса.

  • Цепочка рассуждений: Последовательный выбор и применение нескольких инструментов для комплексного решения задачи.

Пример автономного выбора:

Промпт: "Помоги мне проанализировать репозиторий open-source проекта"

Возможный ход рассуждений LLM:
1. Использовать GitHub Server для получения информации о репозитории
2. Применить инструмент статического анализа кода
3. Сгенерировать отчет с помощью инструмента генерации документации

2. Явное указание инструментов

В некоторых случаях разработчик или пользователь может явно указать, какие инструменты должна использовать LLM:

  • Директивные промпты: Прямое указание конкретных инструментов в промпте.

  • Приоритезация: Можно задать порядок или предпочтительность использования инструментов.

Пример явного указания:

Промпт: "Используй Web Search Server для поиска информации, 
затем GitHub Server для анализа связанных репозиториев. 
Сформируй comprehensive отчет с помощью инструмента генерации отчетов."

Заключение

Таким образом, MCP серверы являются микросервисами, которые могут быть использованы LLM для выполнения вашей задачи. Они значительно расширяют возможности LLM и позволяют приложениям решать более сложные задачи.


Также рекомендую свою прошлую статью здесь - Полезные советы при разработке с AI IDE агентами

Источник: https://habr.com/ru/articles/879970/


Интересные статьи

Интересные статьи

Привет! Меня зовут Максим Гарбарт, я тестировщик компании Битрикс24. Моя работа связана с проверкой одного из важнейших компонентов системы – сервиса авторизации. Для пользователей это, как правило, л...
Движок, он же фреймворк (framework), 1С-Битрикс довольно популярен в странах СНГ.Подкупает он своей универсальностью, собственным маркетплейсом со множеством модулей расширения, как платных так и бесп...
Сейчас опишу интуитивно понятный способ восстановления работоспособности YouTube и обхождения любых блокировок провайдера на Windows компьютере. Уверен, что статью по указке РКН быстро удалят, так что...
Правоохранительные органы Турции арестовали студента, который использовал ИИ для списывания на экзамене TYT (является базовым профессиональным тестом, необходимым для поступления в высшие учебные заве...
Добрый день! Хочу поделиться своим опытом по миграции Корпоративного портала и CRM Битрикс24 с одного физического сервера на 2 виртуальные машины.В связи с нарастающим количеством заявок программистам...