Где-то летом 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.
Как это работает
-
MCP Server:
-
Предоставляет сервисы в виде инструментов (tools), ресурсов и промптов.
-
Выступает в роли стандартизированного API, через который клиент может запрашивать и выполнять функции сервиса.
-
-
Клиент (например, IDE или Claude for Desktop):
-
Инициирует запросы к MCP серверу для получения списка доступных инструментов.
-
Передает полученную информацию о сервисах в LLM вместе с промптом.
-
-
LLM (Language Models):
-
Обрабатывает переданный промпт с информацией о доступных инструментах.
-
Определяет, какой инструмент необходим для решения конкретной задачи, и сообщает об этом клиенту.
-
Получает результаты выполнения инструмента и формирует финальный ответ.
-

Практический пример использования
Сценарий: Интеграция AI-помощника с базой знаний
-
Инициализация:
-
Пользователь запускает AI-помощника (Клиент).
-
Клиент устанавливает соединение с MCP сервером, предоставляющим необходимые сервисы.
-
-
Запрос:
-
Клиент получает список доступных инструментов с сервера и передает их в LLM в виде промпта.
-
-
Обработка:
-
LLM анализирует информацию и определяет, какой инструмент требуется для решения задачи.
-
Клиент отправляет обратный запрос на сервер для выполнения выбранного инструмента с указанием параметров.
-
MCP сервер выполняет запрос и возвращает результат клиенту.
-
-
Результат:
-
Клиент передает полученный результат в 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