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

в 8:23, , рубрики: AI, claude, cursor, llm, MCP, OpenAI

Где-то летом 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

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

На данный момент поддерживаются только локальные 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):

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

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

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

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

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

Сценарий: Интеграция 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 агентами

Автор: gmtd

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js