Model Context Protocol: различия между версиями
In.wiki (комментарии | вклад) |
In.wiki (комментарии | вклад) |
||
(не показано 49 промежуточных версий этого же участника) | |||
Строка 11: | Строка 11: | ||
[[File:Model Context Protocol Component diagram.svg|thumb|Взаимосвязь между клиентом и сервером MCP]] | [[File:Model Context Protocol Component diagram.svg|thumb|Взаимосвязь между клиентом и сервером MCP]] | ||
− | Model Context Protocol (MCP) — это | + | '''Model Context Protocol''' ('''MCP''') — это программный фреймворк с открытым исходным кодом, представленный компанией [[Anthropic]] в ноябре 2024 года для стандартизации способа интеграции и обмена данными между системами [[Искусственный Интеллект|искусственного интеллекта]] (ИИ), такими как [[большие языковые модели]] (LLM), и внешними инструментами, системами и источниками данных.<ref name="venturebeat-2024-11-25">{{cite news |first= Emilia |last= David |date= November 25, 2024 |title= Anthropic releases Model Context Protocol to standardize AI-data integration |publisher= [[VentureBeat]] |url= https://venturebeat.com/data-infrastructure/anthropic-releases-model-context-protocol-to-standardize-ai-data-integration/ |access-date= 2025-05-12}}</ref>. MCP предоставляет универсальный интерфейс для чтения файлов, выполнения функций и обработки контекстных [[Промпт (искусственный интеллект)|промптов]]<ref name="venturebeat 2025-03-27">{{cite news |first= Vinay |last= Kumar |date= March 26, 2025 |title= The open source Model Context Protocol was just updated — here's why it's a big deal |publisher= [[VentureBeat]] |url= https://venturebeat.com/ai/the-open-source-model-context-protocol-was-just-updated-heres-why-its-a-big-deal/ |access-date= 2025-05-12 }}</ref> . После анонса протокол был поддержан основными поставщиками ИИ, включая [[OpenAI]] и [[Google DeepMind]]<ref name="TechCrunch 2025-03-25">{{cite news |first= Kyle |last= Wiggers |date= March 25, 2025 |title= OpenAI adopts rival Anthropic's standard for connecting AI models to data |publisher= [[TechCrunch]] |url= https://techcrunch.com/2025/03/26/openai-adopts-rival-anthropics-standard-for-connecting-ai-models-to-data/ }}</ref><ref name="TechCrunch 2025-04-09">{{cite news |first= Kyle |last= Wiggers |date= April 9, 2025 |title= Google to embrace Anthropic's standard for connecting AI models to data |publisher= TechCrunch |url= https://techcrunch.com/2025/04/09/google-says-itll-embrace-anthropics-standard-for-connecting-ai-models-to-data/ |access-date= 2025-05-12}}</ref>. |
+ | |||
+ | == Предыстория == | ||
+ | Протокол был анонсирован компанией Anthropic в ноябре 2024 года как открытый стандарт<ref name="verge 2024-11-25">{{cite news |last=Roth |first=Emma |date=November 25, 2024 |title=Anthropic launches tool to connect AI systems directly to datasets |url=https://www.theverge.com/2024/11/25/24305774/anthropic-model-context-protocol-data-sources |publisher=[[The Verge]]}}</ref> для подключения [[ИИ-помощник|ИИ-помощников]] к системам данных, таким как репозитории контента, инструменты управления бизнесом и среды разработки<ref name="anthropic 2024-11">{{cite web |url= https://www.anthropic.com/news/model-context-protocol |title= Introducing the Model Context Protocol |publisher= Anthropic |date= November 25, 2024 |access-date= 2025-05-12}}</ref> Он призван решить проблему разрозненности информации и устаревших систем<ref name="anthropic 2024-11" />. До появления MCP разработчикам часто приходилось создавать собственные коннекторы для каждого источника данных или инструмента, что приводило к тому, что Anthropic описывала как проблему интеграции данных размером «N×M»<ref name="anthropic 2024-11" />. Более ранние подходы, такие как [[API OpenAI]] 2023 для «вызова функций» и [[фреймворк плагинов ChatGPT]], решали аналогичные проблемы, но требовали коннекторов, специфичных для конкретного поставщика<ref name="ars-usbc">{{cite news |last=Edwards |first=Benj |date=1 April 2025 |title=MCP: The new "USB-C for AI" that's bringing fierce rivals together |url=https://arstechnica.com/information-technology/2025/04/mcp-the-new-usb-c-for-ai-thats-bringing-fierce-rivals-together/ |access-date=2025-05-24 |work=Ars Technica}}</ref>. Авторы MCP отмечают, что протокол намеренно использует принципы организации потока сообщений [[Language Server Protocol]] (LSP) и работает при соединении через Интернет по протоколу [[JSON-RPC|JSON-RPC 2.0]]<ref name=":1">{{Cite web |last=Ouellette |first=Michael |date=2025-05-09 |title=Model context protocol: the next big step in generating value from AI |url=https://www.engineering.com/model-context-protocol-the-next-big-step-in-generating-value-from-ai/ |access-date=2025-06-23 |website=Engineering.com |language=en-US}}</ref>. | ||
+ | |||
+ | == Возможности == | ||
+ | MCP определяет стандартизированную структуру для интеграции систем ИИ с внешними источниками данных и инструментами<ref name="venturebeat 2025-03-27" />. Она включает спецификации для подготовки и преобразования данных, контекстного [[Тэгирование|тэгирования]] [[Метаданные|метаданных]] и взаимодействия с ИИ на различных платформах. Протокол также поддерживает безопасные двунаправленные соединения между источниками данных и инструментами на базе ИИ<ref name="anthropic 2024-11" />. MCP позволяет разработчикам предоставлять доступ к своим данным через серверы MCP или разрабатывать приложения ИИ, называемые клиентами MCP, которые подключаются к этим серверам<ref name="anthropic 2024-11" />. Ключевые компоненты протокола включают формальную спецификацию протокола и [[SDK]], поддержку локального сервера MCP в приложениях [[Claude Desktop]] и открытый репозиторий реализаций сервера MCP<ref name="anthropic 2024-11" />. | ||
+ | |||
+ | == Применение == | ||
+ | MCP применяется в таких областях, как [[разработка программного обеспечения]], [[автоматизация бизнес-процессов]] и автоматизация [[Обработка естественного языка|обработки естественного языка]]. Одним из наиболее распространенных вариантов использования являются приложения-помощники, такие как приложение [[Claude Desktop]], которые развертывают локальные серверы MCP для обеспечения безопасного доступа к системным инструментам и пользовательским файлам. | ||
+ | |||
+ | В корпоративных средах внутренние помощники дополняются MCP для извлечения данных из корпоративных документов, CRM-систем и внутренних баз знаний — такие компании, как [[Block]], интегрировали MCP в свои внутренние инструменты для этой цели<ref name="anthropic 2024-11" />. | ||
+ | |||
+ | MCP также играет важную роль в многоинструментальных рабочих процессах агентов, позволяя агентским системам ИИ координировать несколько инструментов — например, объединяя поиск документов с API обмена сообщениями — для поддержки сложных логических рассуждений в распределенных ресурсах. | ||
+ | |||
+ | В области доступа к данным на естественном языке MCP позволяет таким приложениям, как [[AI2SQL]], связывать языковые модели со структурированными базами данных, позволяя выполнять запросы на простом языке<ref name=":1" />. | ||
+ | |||
+ | Протокол MCP был внедрен в научные исследовательские процессы благодаря интеграции с системами управления ссылками, такими как [[Zotero]]. Многосерверные реализации позволяют исследователям выполнять семантический поиск в своих библиотеках, извлекать аннотации PDF-файлов и создавать обзоры литературы с помощью анализа с использованием ИИ<ref>{{Citation |last=Yu |first=Steven |title=54yyyu/zotero-mcp |date=2025-07-02 |url=https://github.com/54yyyu/zotero-mcp |access-date=2025-07-03}}</ref><ref>{{Citation |last=Taylor |first=Aaron |title=kujenga/zotero-mcp |date=2025-07-02 |url=https://github.com/kujenga/zotero-mcp |access-date=2025-07-03}}</ref><ref>{{Citation |last=Kalia |first=Abhishek |title=kaliaboi/mcp-zotero |date=2025-07-02 |url=https://github.com/kaliaboi/mcp-zotero |access-date=2025-07-03}}</ref>. Протокол становится все более распространенным в инструментах разработки программного обеспечения. | ||
+ | |||
+ | [[Интегрированная среда разработки|Интегрированные среды разработки]] (IDE), такие как [[Zed]], платформы кодирования, такие как [[Replit]], и инструменты кодирования, такие как [[Sourcegraph]], используют MCP, чтобы предоставить помощникам по кодированию на основе ИИ доступ к контексту проекта в режиме реального времени. Эта интеграция особенно ценна для таких рабочих процессов, как [[вайбкодинг]], где необходима постоянная адаптивная помощь<ref name="verge 2024-11-25" />. В сфере разработки веб-приложений такие компании, как [[Wix]], встраивают серверы MCP в свои платформы. Это позволяет инструментам ИИ взаимодействовать с данными веб-сайта в режиме реального времени, обеспечивая динамическую генерацию контента и оперативное редактирование. Эти возможности являются ключевыми для инструментов разработки Wix на основе ИИ<ref>{{Cite web |date=March 27, 2025 |title=Wix just opened the door to quicker and easier coding with new AI tool |url=https://www.techradar.com/pro/website-building/wix-just-opened-the-door-to-quicker-and-easier-coding-with-new-ai-tool |access-date=2025-05-22 |publisher=TechRadar Pro}}</ref><ref>{{Cite web |date=March 27, 2024 |title=Wix Unveils the Wix Model Context Protocol Server for AI-Driven Web App Development |url=https://www.enterpriseaiworld.com/Articles/News/News/Wix-Unveils-the-Wix-Model-Context-Protocol-Server-for-AI-Driven-Web-App-Development |access-date=2025-05-22 |publisher=Enterprise AI World}}</ref>. | ||
+ | |||
+ | == Архитектура и реализация == | ||
+ | Протокол был выпущен с SDK на таких языках программирования, как [[Python]], [[TypeScript]], [[C#]] и [[Java]]<ref name=":1" /><ref>{{Cite web |title=Model Context Protocol |url=https://github.com/modelcontextprotocol |access-date=2025-06-20 |website=GitHub |language=en}}</ref>. | ||
+ | |||
+ | Anthropic поддерживает открытый репозиторий эталонных реализаций MCP-серверов для популярных корпоративных систем, включая [[Google Drive]], [[Slack]], [[GitHub]], [[Git]], [[PostgreSQL]], [[Puppeteer]] и [[Stripe]]<ref name=":0">{{Cite web |last=Bastian |first=Matthias |date=2024-11-25 |title=Anthropic's new open protocol lets AI systems tap into any data source |url=https://the-decoder.com/anthropics-new-open-protocol-lets-ai-systems-tap-into-any-data-source/ |access-date=2025-06-14 |website=The Decoder |language=en-US}}</ref>. | ||
+ | |||
+ | Разработчики могут создавать собственные MCP-серверы для подключения собственных систем или специализированных источников данных к системам ИИ<ref name=":0" />. Открытость протокола позволяет организациям создавать специализированные соединения, сохраняя при этом совместимость с более широкой экосистемой MCP. Системы ИИ могут использовать эти соединения для предоставления помощи, специфичной для конкретной области, с соблюдением прав доступа к данным<ref name="anthropic 2024-11" />. | ||
+ | |||
+ | MCP построен на архитектуре [[клиент-сервер]], которая обеспечивает структурированную связь между моделями ИИ и внешними системами. | ||
+ | |||
+ | [[Файл:Mcpproto.png|thumb|left|Соотношение понятий протокола MCP]] | ||
+ | |||
+ | В рамках описания MCP определены следующие ключевые понятия: | ||
+ | |||
+ | '''Хост''': ИИ-приложение, с которым конечные пользователи взаимодействуют напрямую. Примерами служат Claude Desktop от Anthropic, интегрированные среды разработки с поддержкой ИИ, такие как [[Cursor (среда разработки)|Cursor]], библиотеки вывода, такие как [[HuggingFace Python SDK]], или пользовательские приложения, созданные на основе библиотек, таких как [[LangChain]] или отдельные [[ИИ-агент|ИИ-агенты]]. Хосты инициируют соединения с серверами MCP и координируют общий поток данных между пользовательскими запросами, обработкой LLM и внешними инструментами. | ||
+ | |||
+ | '''Клиент''': компонент в хост-приложении, который управляет взаимодействием с определенным сервером MCP. Каждый клиент поддерживает соединение 1:1 с одним сервером, обрабатывая детали взаимодействия MCP на уровне протокола и выступая посредником между логикой хоста и внешним сервером. | ||
+ | |||
+ | '''Сервер''': внешняя программа или служба, предоставляющая возможности (инструменты, ресурсы, запросы) через протокол MCP. Во многих материалах термины «клиент» и «хост» используются как взаимозаменяемые. С технической точки зрения, хост — это приложение, взаимодействующее с пользователем, а клиент — это компонент внутри хост-приложения, который управляет связью с определенным сервером MCP. | ||
+ | |||
+ | === Коммуникационный поток в типичном процессе работы, использующем MCP === | ||
+ | '''Взаимодействие с пользователем''': пользователь взаимодействует с хост-приложением, выражая намерение или отправляя запрос. | ||
+ | |||
+ | '''Обработка хостом''': хост обрабатывает ввод пользователя, возможно, используя модуль управления доступом (LLM) для понимания запроса и определения необходимых внешних возможностей. | ||
+ | |||
+ | '''Подключение клиента''': хост направляет свой клиентский компонент на подключение к соответствующим серверам. | ||
+ | |||
+ | '''Обнаружение возможностей (capabilities)''': клиент запрашивает у сервера информацию о доступных возможностях (инструментах, ресурсах, запросах). | ||
+ | |||
+ | '''Вызов возможностей''': в зависимости от потребностей пользователя или решения модуля управления доступом (LLM), хост поручает клиенту вызвать определённые возможности сервера. | ||
+ | |||
+ | '''Выполнение на сервере''': сервер выполняет запрошенную функцию и возвращает результаты клиенту. | ||
+ | |||
+ | '''Интеграция результатов''': Клиент передаёт эти результаты обратно на Хост, который включает их в контекст для LLM или представляет их непосредственно пользователю. | ||
+ | |||
+ | Ключевым преимуществом этой архитектуры является её модульность. Один Хост может подключаться к нескольким Серверам одновременно через разных Клиентов. Новые Серверы могут быть добавлены в экосистему без необходимости внесения изменений в существующие Хосты. Возможности можно легко скомпоновать на разных Серверах. | ||
+ | |||
+ | Эта модульность преобразует традиционную задачу интеграции M×N (M ИИ-приложений, подключающихся к N инструментам/сервисам) в более управляемую задачу M+N, где каждому Хосту и Серверу необходимо реализовать стандарт MCP только один раз. | ||
+ | |||
+ | Архитектура может показаться простой, но её преимущество заключается в стандартизации протокола связи и чётком разделении обязанностей между компонентами. | ||
+ | |||
+ | Такая архитектура позволяет создать целостную экосистему, в которой модели ИИ могут беспрепятственно подключаться к постоянно растущему массиву внешних инструментов и источников данных | ||
+ | |||
+ | === JSON-RPC === | ||
+ | В основе MCP лежит формат сообщений [[JSON-RPC 2.0]] для всего взаимодействия между клиентами и серверами. | ||
+ | |||
+ | JSON-RPC — это облегчённый протокол удалённого вызова процедур, использующий JSON для кодирования параметров. | ||
+ | |||
+ | Это делает его: | ||
+ | |||
+ | * Человекочитаемым и простым в отладке | ||
+ | * Независимым от языка, поддерживающим реализацию в любой среде программирования | ||
+ | * Хорошо зарекомендовавшим себя, с чёткими спецификациями и широким распространением | ||
+ | |||
+ | Протокол определяет три типа сообщений: | ||
+ | |||
+ | '''1. Request (запрос)''' | ||
+ | |||
+ | Отправляется от Клиента Серверу для инициирования операции. Сообщение-запрос включает в себя: | ||
+ | |||
+ | * Уникальный идентификатор (id) | ||
+ | * Имя вызываемого метода (например, tools/call) | ||
+ | * Параметры метода (если есть) | ||
+ | |||
+ | Пример запроса: | ||
+ | { | ||
+ | "jsonrpc": "2.0", | ||
+ | "id": 1, | ||
+ | "method": "tools/call", | ||
+ | "params": { | ||
+ | "name": "weather", | ||
+ | "arguments": { | ||
+ | "location": "San Francisco" | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | '''2. Response (ответ)''' | ||
+ | |||
+ | Отправляется от сервера клиенту в ответ на запрос. Ответное сообщение содержит: | ||
+ | |||
+ | * Тот же идентификатор, что и у соответствующего запроса | ||
+ | * Результат (в случае успеха) или ошибку (в случае неудачи) | ||
+ | |||
+ | Пример ответа при успешном выполнении: | ||
+ | { | ||
+ | "jsonrpc": "2.0", | ||
+ | "id": 1, | ||
+ | "result": { | ||
+ | "temperature": 62, | ||
+ | "conditions": "Partly cloudy" | ||
+ | } | ||
+ | } | ||
+ | Пример ответа об ошибке: | ||
+ | { | ||
+ | "jsonrpc": "2.0", | ||
+ | "id": 1, | ||
+ | "error": { | ||
+ | "code": -32602, | ||
+ | "message": "Invalid location parameter" | ||
+ | } | ||
+ | } | ||
+ | '''3. Notification (уведомление)''' | ||
+ | |||
+ | Односторонние сообщения, не требующие ответа. | ||
+ | |||
+ | Обычно отправляются от сервера клиенту для предоставления обновлений или уведомлений о событиях. | ||
+ | |||
+ | Пример уведомления: | ||
+ | { | ||
+ | "jsonrpc": "2.0", | ||
+ | "method": "progress", | ||
+ | "params": { | ||
+ | "message": "Processing data...", | ||
+ | "percent": 50 | ||
+ | } | ||
+ | } | ||
+ | |||
+ | === Транспортный уровень === | ||
+ | Наряду с форматом сообщений — JSON-RPC, MCP также определяет, как эти сообщения передаются между клиентами и серверами. Поддерживаются два основных механизма передачи: | ||
+ | |||
+ | ==== Stdio (стандартный ввод/вывод) ==== | ||
+ | Транспорт [[stdio]] используется для локального взаимодействия, когда клиент и сервер работают на одной машине: Хост-приложение запускает сервер как подпроцесс и взаимодействует с ним, записывая данные в его [[стандартный ввод]] ([[stdin]]) и читая данные из его [[Стандартный вывод|стандартного вывода]] ([[stdout]]). Этот транспорт используется для локальных инструментов, таких как доступ к файловой системе или запуск локальных скриптов. Основные преимущества этого транспорта заключаются в его простоте, отсутствии необходимости в настройке сети и в том, что он находится в безопасной изолированной среде операционной системы. | ||
+ | |||
+ | ==== HTTP + SSE (Server-Sent Events) / Streamable HTTP ==== | ||
+ | Транспорт HTTP+[[Server-sent events|SSE]] используется для удалённого взаимодействия, когда клиент и сервер могут находиться на разных машинах: Обмен данными осуществляется по протоколу [[HTTP]], при этом сервер использует события, отправляемые сервером (SSE), для передачи обновлений клиенту по постоянному соединению. Этот транспорт используется для подключения к удалённым API, облачным сервисам или общим ресурсам. Основные преимущества этого транспорта заключаются в его сетевой работе, интеграции с веб-сервисами и совместимости с бессерверными средами. В последних обновлениях стандарта MCP был представлен транспорт [[Streamable HTTP]]. Он обеспечивает большую гибкость, позволяя серверам динамически обновляться до SSE для потоковой передачи при необходимости, сохраняя при этом совместимость с [[Бессерверная среда|бессерверными средами]]. | ||
+ | |||
+ | === Пример полного цикла обмена информацией в MCP === | ||
+ | Ниже представлен пример полного цикл взаимодействия Клиента (💻) и Сервера (🌐) в контексте протокола MCP. | ||
+ | |||
+ | ==== Инициализация работы ==== | ||
+ | Клиент подключается к серверу, и они обмениваются доступными им версиями протокола и его опциями/возможностями. | ||
+ | {| class="wikitable" | ||
+ | |💻 | ||
+ | |→ инициализация соединения | ||
+ | |🌐 | ||
+ | |- | ||
+ | |💻 | ||
+ | |← | ||
+ | ответ | ||
+ | |🌐 | ||
+ | |- | ||
+ | |💻 | ||
+ | |→ | ||
+ | подтверждение инициализации | ||
+ | |🌐 | ||
+ | |} | ||
+ | Клиент подтверждает завершение инициализации с помощью уведомления (notification). | ||
+ | |||
+ | ==== Обнаружение возможностей ==== | ||
+ | Клиент запрашивает информацию о доступных возможностях сервера, а cервер отвечает списком доступных инструментов. | ||
+ | {| class="wikitable" | ||
+ | |💻 | ||
+ | |→ | ||
+ | список доступных инструментов | ||
+ | |🌐 | ||
+ | |- | ||
+ | |💻 | ||
+ | |← | ||
+ | ответ | ||
+ | |🌐 | ||
+ | |} | ||
+ | Этот процесс можно повторить для каждого инструмента, ресурса или типа подсказки. | ||
+ | |||
+ | ==== Выполнение конкретной задачи ==== | ||
+ | Клиент использует возможности Сервера, основываясь на потребностях Хоста. | ||
+ | {| class="wikitable" | ||
+ | |💻 | ||
+ | |→ | ||
+ | запрос инструмента | ||
+ | |🌐 | ||
+ | |- | ||
+ | |💻 | ||
+ | |← | ||
+ | опциональная нотификация (или несколько) | ||
+ | |🌐 | ||
+ | |- | ||
+ | |💻 | ||
+ | |← | ||
+ | ответ | ||
+ | |🌐 | ||
+ | |} | ||
+ | |||
+ | ==== Завершение работы ==== | ||
+ | Соединение корректно закрывается, когда оно больше не нужно, и сервер подтверждает запрос на завершение работы | ||
+ | {| class="wikitable" | ||
+ | |💻 | ||
+ | |→ | ||
+ | завершение сессии | ||
+ | |🌐 | ||
+ | |- | ||
+ | |💻 | ||
+ | |← | ||
+ | подтверждение завершения сессии | ||
+ | |🌐 | ||
+ | |- | ||
+ | |💻 | ||
+ | |→ | ||
+ | выход | ||
+ | |🌐 | ||
+ | |} | ||
+ | Клиент отправляет финальное сообщение о выходе для завершения завершения операции. | ||
+ | |||
+ | === Возможности (Capabilities) MCP === | ||
+ | Серверы MCP предоставляют клиентам разнообразные возможности (capabilities) через протокол связи. Эти возможности делятся на четыре основные категории, каждая из которых обладает уникальными характеристиками и вариантами использования. Поскольку перевод на русский относящихся к ним терминов ещё не устоялся, здесь, в ряде случаев, приводятся альтернативные русские и оригинальные английские термины. | ||
+ | |||
+ | ==== Инструменты (Tools) ==== | ||
+ | Инструменты — это исполняемые функции или действия, которые модель ИИ может вызывать через протокол MCP. | ||
+ | |||
+ | '''Управление:''' Инструменты обычно управляются моделью, то есть модель ИИ (LLM) решает, когда их вызывать, основываясь на запросе пользователя и контексте. | ||
+ | |||
+ | '''Безопасность:''' Из-за способности выполнять действия с побочными эффектами выполнение инструментов может быть опасным. Поэтому обычно требуется явное одобрение пользователя. | ||
+ | |||
+ | '''Случаи использования:''' Отправка сообщений, создание тикетов, запросы к API, выполнение вычислений. | ||
+ | |||
+ | '''Пример:''' Инструмент прогноза погоды, который получает текущие данные о погоде для заданного местоположения. | ||
+ | |||
+ | ==== Ресурсы ==== | ||
+ | Ресурсы предоставляют доступ только для чтения к источникам данных, позволяя модели ИИ извлекать контекст без выполнения сложной логики. | ||
+ | |||
+ | '''Управление:''' Ресурсы контролируются приложением, то есть хост-приложение обычно решает, когда к ним обращаться. | ||
+ | |||
+ | '''Характер:''' Они предназначены для извлечения данных с минимальными вычислениями, аналогично конечным точкам GET в REST API. | ||
+ | |||
+ | '''Безопасность:''' Поскольку они доступны только для чтения, они обычно представляют меньший риск для безопасности, чем инструменты. | ||
+ | |||
+ | '''Случаи использования:''' Доступ к содержимому файлов, извлечение записей базы данных, чтение информации о конфигурации. | ||
+ | |||
+ | '''Пример:''' Ресурс, предоставляющий доступ к содержимому файлов. | ||
+ | |||
+ | ==== Промпты (prompts, подсказки) ==== | ||
+ | [[Промпт (искусственный интеллект)|Промпты]] — это предопределенные шаблоны или рабочие процессы, которые управляют взаимодействием между пользователем, моделью ИИ и возможностями сервера. | ||
+ | |||
+ | '''Управление:''' Подсказки контролируются пользователем и часто представлены в виде параметров в пользовательском интерфейсе хост-приложения. | ||
+ | |||
+ | '''Назначение:''' Они структурируют взаимодействие для оптимального использования доступных инструментов и ресурсов. | ||
+ | |||
+ | '''Выбор:''' Пользователи обычно выбирают подсказку до того, как модель ИИ начнет обработку, задавая контекст для взаимодействия. | ||
+ | |||
+ | '''Случаи использования''': Стандартные рабочие процессы, специализированные шаблоны задач, управляемые взаимодействия. | ||
+ | |||
+ | '''Пример:''' Шаблон подсказки для создания обзора кода. | ||
+ | |||
+ | ==== Sampling (передача образца) ==== | ||
+ | Эта возможность позволяет серверам запрашивать у клиента (в частности, у хост-приложения) выполнение LLM-взаимодействий. | ||
+ | |||
+ | '''Управление:''' Передача образца инициируется сервером, но требует взаимодействия клиента и хоста. | ||
+ | |||
+ | '''Назначение:''' Обеспечивает серверное агентское поведение и потенциально рекурсивные или многошаговые взаимодействия. | ||
+ | |||
+ | '''Безопасность:''' Как и инструменты, операции взаимодействия по образцу обычно требуют одобрения пользователя. | ||
+ | |||
+ | '''Способы использования:''' Сложные многошаговые задачи, автономные рабочие процессы агентов, интерактивные процессы. | ||
+ | |||
+ | '''Пример:''' Сервер может запросить у клиента анализ обработанных им данных. | ||
+ | |||
+ | == Внедрение == | ||
+ | В марте 2025 года [[OpenAI]] официально приняла MCP, после решения интегрировать стандарт во все свои продукты, включая [[ChatGPT]], пакет разработчика приложений [[OpenAI Agents SDK]] и [[API Responses]]. [[Сэм Альтман]] описал принятие MCP как шаг к стандартизации взаимодействия с инструментами ИИ. До принятия OpenAI потенциальные преимущества MCP широко обсуждались в сообществе разработчиков, особенно в плане упрощения разработки в многомодельных средах<ref name="TechCrunch 2025-03-25" /><ref name="venturebeat 2025-03-27" />. Внедрив MCP, OpenAI присоединяется к другим организациям, таким как [[Block]], [[Replit]] и [[Sourcegraph]], внедряющим протокол в свои платформы. Такое широкое внедрение подчёркивает потенциал MCP как универсального открытого стандарта для взаимодействия и взаимодействия систем ИИ<ref name="TechCrunch 2025-03-25" />. MCP может быть интегрирован с [[Microsoft Semantic Kernel]]<ref> {{Cite web |title= Integrating Model Context Protocol Tools with Semantic Kernel: A Step-by-Step Guide |first= Mark |last= Wallace |date= March 5, 2025 |website= Semantic Kernel Dev Blog, Microsoft |url= https://devblogs.microsoft.com/semantic-kernel/integrating-model-context-protocol-tools-with-semantic-kernel-a-step-by-step-guide/ |access-date= 2025-05-12 }}</ref> и [[Azure OpenAI]]<ref> {{cite web |author1= mrajguru |date= March 16, 2025 |title= Model Context Protocol (MCP): Integrating Azure OpenAI for Enhanced Tool Integration and Prompting |website= AI - Azure AI services Blog, Microsoft |url= https://techcommunity.microsoft.com/blog/azure-ai-services-blog/model-context-protocol-mcp-integrating-azure-openai-for-enhanced-tool-integratio/4393788 |access-date= 2025-05-12 }}</ref>. Серверы MCP могут быть развернуты в [[Cloudflare]]<ref>{{cite web |author1= Brendan Irvine-Broque |author2= Dina Kozlov |author3= Glen Maddern |date= March 25, 2025 |title= Build and deploy Remote Model Context Protocol (MCP) servers to Cloudflare |publisher= [[Cloudflare]] |url= https://blog.cloudflare.com/remote-model-context-protocol-servers-mcp/ |access-date= 2025-05-12}}</ref>. [[Демис Хассабис]], генеральный директор [[Google DeepMind]], подтвердил в апреле 2025 года поддержку MCP в будущих моделях [[Gemini]] и связанной с ними инфраструктуре, описав протокол как «быстро становящийся открытым стандартом для эпохи [[Агент ИИ|агентов ИИ]]»<ref name="TechCrunch 2025-04-09" />. | ||
+ | |||
+ | [[Microsoft]] вложила значительные средства в MCP для улучшения интеграции ИИ в своей экосистеме, включая [[GitHub]], [[Microsoft 365]] и [[Azure]]. GitHub, наряду с Microsoft, присоединился к руководящему комитету MCP на конференции [[Microsoft Build 2025]], предоставив службу реестра для обнаружения и управления серверами MCP. Сервер [[Azure MCP]], находящийся в общедоступной предварительной версии, подключает агентов ИИ к таким сервисам Azure, как хранилище, базы данных и аналитика журналов, а Microsoft 365 поддерживает MCP для создания агентов ИИ и приложений с интеграцией с [[Copilot]]. В мае 2025 года Microsoft добавила встроенную поддержку MCP в [[Copilot Studio]], предлагая ссылки на любой сервер MCP [[одним щелчком мыши]], новые списки инструментов, [[Потоковая передача данных|потоковую передачу данных]], а также полную трассировку и аналитику. | ||
+ | |||
+ | В этом релизе MCP позиционировался как мост по умолчанию для Copilot к внешним базам знаний, API и [[Dataverse]]<ref>{{Cite web |last=Desai |first=Zankar |date=2025-05-29 |title=Model Context Protocol (MCP) is now generally available in Microsoft Copilot Studio |url=https://www.microsoft.com/en-us/microsoft-copilot/blog/copilot-studio/model-context-protocol-mcp-is-now-generally-available-in-microsoft-copilot-studio/ |access-date=2025-08-03 |website=Microsoft Copilot Blog |language=en-US}}</ref> . Кроме того, Microsoft совместно с Anthropic разработала официальный C# SDK для MCP, доступный в виде [[Пакет NuGet|пакета NuGet]] с открытым исходным кодом (ModelContextProtocol), который обеспечивает бесшовную интеграцию ИИ в экосистему .NET для создания серверов и клиентов MCP<ref>{{Cite web |last=Mike |first=Maria |date=2025-04-02 |title=Microsoft partners with Anthropic to create official C# SDK for Model Context Protocol |url=https://devblogs.microsoft.com/blog/microsoft-partners-with-anthropic-to-create-official-c-sdk-for-model-context-protocol |access-date=2025-08-01 |website=Microsoft Developer Blog}}</ref>. С тех пор было добавлено множество серверов MCP, что позволяет интегрировать LLM с различными приложениями<ref>{{Cite web |last=Awan |first=Abid Ali |title=10 Awesome MCP Servers |url=https://www.kdnuggets.com/10-awesome-mcp-servers |access-date=2025-05-12 |website=[[KDnuggets]]}}</ref>. | ||
+ | |||
+ | === MCP, Информаторий и дружественные вики-проекты === | ||
+ | Возможность организации MCP-сервера для [[Информаторий|Информатория]] и других [[Дружественные вики-проекты|дружественных вики-проектов]] находится в стадии обсуждения. | ||
+ | |||
+ | === MCP и Википедия === | ||
+ | Существует ряд независимых реализаций MCP-сервера, обеспечивающих доступ к [[Википедия|Википедии]] и другим ресурсам [[Wikimedia Foundation]]. Кроме того, сам фонд Wikimedia Foundation предоставляет на коммерческой основе доступ к [[Wikimedia Enterprise API]]. Доступ к этому API возможен через специализированный MCP-сервер. | ||
+ | |||
+ | == Принятие == | ||
+ | [[The Verge]] утверждает, что MCP отвечает растущему спросу на [[ИИ-агент|ИИ-агентов]], учитывающих контекст и способных безопасно извлекать данные из различных источников.<ref name="verge 2024-11-25" /> | ||
+ | |||
+ | Быстрое внедрение протокола OpenAI, Google DeepMind и такими разработчиками инструментов, как [[Zed]] и [[Sourcegraph]], свидетельствует о растущем консенсусе относительно его полезности<ref name="TechCrunch 2025-03-25" /><ref name="beebom_mcp">{{cite web |last=Sha |first=Arjun |date=April 14, 2025 |title=What is Model Context Protocol (MCP) Explained |url=https://beebom.com/model-context-protocol-mcp-explained/ |website=Beebom.com}}</ref>. В апреле 2025 года исследователи безопасности опубликовали анализ, в котором говорилось о наличии множества нерешённых проблем безопасности MCP, включая [[Промпт-инъекция|промпт-инъекцию]]<ref>{{cite web |first= Ravie |last= Lakshmanan |date= 30 April 2025 |title= Researchers Demonstrate How MCP Prompt Injection Can Be Used for Both Attack and Defense |publisher= thehackernews.com |url= https://thehackernews.com/2025/04/experts-uncover-critical-mcp-and-a2a.html }}</ref>, проблемы с правами доступа к инструментам, которая приводит к тому, что комбинирование инструментов может привести к краже файлов<ref>{{cite web |first1= Luca |last1= Beurer-Kellner |first2= Marc |last2= Fischer |date= 1 April 2025 |title= MCP Security Notification: Tool Poisoning Attacks |publisher= InvariantLabs |url= https://invariantlabs.ai/blog/mcp-security-notification-tool-poisoning-attacks }}</ref>, а похожие инструменты могут незаметно подменять доверенные<ref>{{cite web |first1= Kasimir |last1= Schulz |first2= Jason |last2= Martin |first3= Marcus |last3= Kan |first4= Kenneth |last4= Yeung |first5= Conor |last5= McCauley |first6= Leo |last6= Ring |date= 10 April 2025|title= MCP: Model Context Pitfalls in an Agentic World |publisher= hiddenlayer.com |url= https://hiddenlayer.com/innovation-hub/mcp-model-context-pitfalls-in-an-agentic-world/}}</ref>. | ||
+ | |||
+ | MCP сравнивают с [[OpenAPI]], аналогичной спецификацией, предназначенной для описания API<ref>{{cite web |last1=MacManus |first1=Richard |title=MCP: The Missing Link Between AI Agents and APIs |url=https://thenewstack.io/mcp-the-missing-link-between-ai-agents-and-apis/ |website=The New Stack |access-date=29 May 2025 |date=13 March 2025}}</ref><ref>{{cite web |last1=Fanelli |first1=Alessio |title=Why MCP Won |url=https://www.latent.space/p/why-mcp-won |website=www.latent.space |access-date=29 May 2025 |language=en}}</ref>. | ||
+ | |||
+ | == См. также == | ||
+ | |||
+ | * [[Language Server Protocol]] | ||
+ | * [[UDDI]] | ||
+ | * [[OpenAPI]] | ||
+ | |||
+ | == Литература == | ||
+ | * {{cite arXiv|eprint=2503.23278 |last1=Hou |first1=Xinyi |last2=Zhao |first2=Yanjie |last3=Wang |first3=Shenao |last4=Wang |first4=Haoyu |title=Model Context Protocol (MCP): Landscape, Security Threats, and Future Research Directions |date=2025 |class=cs.CR }} | ||
+ | * {{cite news |first= Benj |last= Edwards |date= April 1, 2025 |title= MCP: The new "USB-C for AI" that's bringing fierce rivals together |publisher= [[Ars Technica]] |url= https://arstechnica.com/information-technology/2025/04/mcp-the-new-usb-c-for-ai-thats-bringing-fierce-rivals-together }} | ||
+ | * {{cite news |first= Fiona |last= Jackson |date= March 28, 2025 |title= OpenAI Agents Now Support Rival Anthropic's Protocol, Making Data Access 'Simpler, More Reliable' |publisher= [[TechRepublic]] |url= https://www.techrepublic.com/article/news-openai-anthropic-model-context-protocol/ }} | ||
+ | * {{cite web |first= Colin |last= Masson |date= March 25, 2025 |title= Context Is the Missing Link: The Emergence of the Model Context Protocol in Industrial AI |publisher= ARC Advisory Group |url= https://www.arcweb.com/blog/context-missing-link-emergence-model-context-protocol-industrial-ai }} | ||
+ | * {{cite web |author1= Jimin Kim |author2= Anita Lewis |author3= Justin Lewis |author4= Laith Al-Saadoon |author5= Paul Vincent |author6= Pranjali Bhandari |title= Introducing AWS MCP Servers for code assistants (Part 1) |date= April 1, 2025 |publisher= [[Amazon AWS]] |url= https://aws.amazon.com/blogs/machine-learning/introducing-aws-mcp-servers-for-code-assistants-part-1/ }} | ||
+ | * {{cite web |first= Zankar |last= Desai |date= March 19, 2025 |title= Introducing Model Context Protocol (MCP) in Copilot Studio: Simplified Integration with AI Apps and Agents |publisher= Microsoft Copilot Studio Blog, [[Microsoft]] |url= https://www.microsoft.com/en-us/microsoft-copilot/blog/copilot-studio/introducing-model-context-protocol-mcp-in-copilot-studio-simplified-integration-with-ai-apps-and-agents/ }} | ||
+ | * {{cite web |first=Tim |last=Wagner |date=May 13, 2025 |title=Understanding Model Context Protocol (MCP) |website=Vendia |publisher= |url=https://www.vendia.com/blog/understanding-model-context-protocol-mcp/}} | ||
+ | * [https://habr.com/ru/articles/899088/ Model Context Protocol (MCP) – универсальный протокол для взаимодействия с ИИ, и почему это замечательно]. | ||
+ | |||
+ | == Ссылки == | ||
+ | *[https://modelcontextprotocol.io/ официальный сайт проекта] | ||
+ | * {{GitHub|https://github.com/modelcontextprotocol}} | ||
+ | * [https://openai.github.io/openai-agents-python/mcp/ SDK documentation from OpenAI] | ||
+ | * [https://huggingface.co/learn/mcp-course/ обучающий курс на huginface] | ||
== Примечания == | == Примечания == | ||
+ | <references /> | ||
+ | [[Категория:Программное обеспечение для машинного обучения]] | ||
+ | [[Категория:Протоколы программного обеспечения Искусственного Интеллекта]] | ||
+ | [[Категория:Протоколы прикладного уровня]] |
Текущая версия от 00:28, 25 августа 2025
Developed by | Anthropic |
---|---|
Introduced | ноябрь 25, 2024 |
Website | modelcontextprotocol.io/ |
Model Context Protocol (MCP) — это программный фреймворк с открытым исходным кодом, представленный компанией Anthropic в ноябре 2024 года для стандартизации способа интеграции и обмена данными между системами искусственного интеллекта (ИИ), такими как большие языковые модели (LLM), и внешними инструментами, системами и источниками данных.[1]. MCP предоставляет универсальный интерфейс для чтения файлов, выполнения функций и обработки контекстных промптов[2] . После анонса протокол был поддержан основными поставщиками ИИ, включая OpenAI и Google DeepMind[3][4].
Предыстория[править | править код]
Протокол был анонсирован компанией Anthropic в ноябре 2024 года как открытый стандарт[5] для подключения ИИ-помощников к системам данных, таким как репозитории контента, инструменты управления бизнесом и среды разработки[6] Он призван решить проблему разрозненности информации и устаревших систем[6]. До появления MCP разработчикам часто приходилось создавать собственные коннекторы для каждого источника данных или инструмента, что приводило к тому, что Anthropic описывала как проблему интеграции данных размером «N×M»[6]. Более ранние подходы, такие как API OpenAI 2023 для «вызова функций» и фреймворк плагинов ChatGPT, решали аналогичные проблемы, но требовали коннекторов, специфичных для конкретного поставщика[7]. Авторы MCP отмечают, что протокол намеренно использует принципы организации потока сообщений Language Server Protocol (LSP) и работает при соединении через Интернет по протоколу JSON-RPC 2.0[8].
Возможности[править | править код]
MCP определяет стандартизированную структуру для интеграции систем ИИ с внешними источниками данных и инструментами[2]. Она включает спецификации для подготовки и преобразования данных, контекстного тэгирования метаданных и взаимодействия с ИИ на различных платформах. Протокол также поддерживает безопасные двунаправленные соединения между источниками данных и инструментами на базе ИИ[6]. MCP позволяет разработчикам предоставлять доступ к своим данным через серверы MCP или разрабатывать приложения ИИ, называемые клиентами MCP, которые подключаются к этим серверам[6]. Ключевые компоненты протокола включают формальную спецификацию протокола и SDK, поддержку локального сервера MCP в приложениях Claude Desktop и открытый репозиторий реализаций сервера MCP[6].
Применение[править | править код]
MCP применяется в таких областях, как разработка программного обеспечения, автоматизация бизнес-процессов и автоматизация обработки естественного языка. Одним из наиболее распространенных вариантов использования являются приложения-помощники, такие как приложение Claude Desktop, которые развертывают локальные серверы MCP для обеспечения безопасного доступа к системным инструментам и пользовательским файлам.
В корпоративных средах внутренние помощники дополняются MCP для извлечения данных из корпоративных документов, CRM-систем и внутренних баз знаний — такие компании, как Block, интегрировали MCP в свои внутренние инструменты для этой цели[6].
MCP также играет важную роль в многоинструментальных рабочих процессах агентов, позволяя агентским системам ИИ координировать несколько инструментов — например, объединяя поиск документов с API обмена сообщениями — для поддержки сложных логических рассуждений в распределенных ресурсах.
В области доступа к данным на естественном языке MCP позволяет таким приложениям, как AI2SQL, связывать языковые модели со структурированными базами данных, позволяя выполнять запросы на простом языке[8].
Протокол MCP был внедрен в научные исследовательские процессы благодаря интеграции с системами управления ссылками, такими как Zotero. Многосерверные реализации позволяют исследователям выполнять семантический поиск в своих библиотеках, извлекать аннотации PDF-файлов и создавать обзоры литературы с помощью анализа с использованием ИИ[9][10][11]. Протокол становится все более распространенным в инструментах разработки программного обеспечения.
Интегрированные среды разработки (IDE), такие как Zed, платформы кодирования, такие как Replit, и инструменты кодирования, такие как Sourcegraph, используют MCP, чтобы предоставить помощникам по кодированию на основе ИИ доступ к контексту проекта в режиме реального времени. Эта интеграция особенно ценна для таких рабочих процессов, как вайбкодинг, где необходима постоянная адаптивная помощь[5]. В сфере разработки веб-приложений такие компании, как Wix, встраивают серверы MCP в свои платформы. Это позволяет инструментам ИИ взаимодействовать с данными веб-сайта в режиме реального времени, обеспечивая динамическую генерацию контента и оперативное редактирование. Эти возможности являются ключевыми для инструментов разработки Wix на основе ИИ[12][13].
Архитектура и реализация[править | править код]
Протокол был выпущен с SDK на таких языках программирования, как Python, TypeScript, C# и Java[8][14].
Anthropic поддерживает открытый репозиторий эталонных реализаций MCP-серверов для популярных корпоративных систем, включая Google Drive, Slack, GitHub, Git, PostgreSQL, Puppeteer и Stripe[15].
Разработчики могут создавать собственные MCP-серверы для подключения собственных систем или специализированных источников данных к системам ИИ[15]. Открытость протокола позволяет организациям создавать специализированные соединения, сохраняя при этом совместимость с более широкой экосистемой MCP. Системы ИИ могут использовать эти соединения для предоставления помощи, специфичной для конкретной области, с соблюдением прав доступа к данным[6].
MCP построен на архитектуре клиент-сервер, которая обеспечивает структурированную связь между моделями ИИ и внешними системами.
В рамках описания MCP определены следующие ключевые понятия:
Хост: ИИ-приложение, с которым конечные пользователи взаимодействуют напрямую. Примерами служат Claude Desktop от Anthropic, интегрированные среды разработки с поддержкой ИИ, такие как Cursor, библиотеки вывода, такие как HuggingFace Python SDK, или пользовательские приложения, созданные на основе библиотек, таких как LangChain или отдельные ИИ-агенты. Хосты инициируют соединения с серверами MCP и координируют общий поток данных между пользовательскими запросами, обработкой LLM и внешними инструментами.
Клиент: компонент в хост-приложении, который управляет взаимодействием с определенным сервером MCP. Каждый клиент поддерживает соединение 1:1 с одним сервером, обрабатывая детали взаимодействия MCP на уровне протокола и выступая посредником между логикой хоста и внешним сервером.
Сервер: внешняя программа или служба, предоставляющая возможности (инструменты, ресурсы, запросы) через протокол MCP. Во многих материалах термины «клиент» и «хост» используются как взаимозаменяемые. С технической точки зрения, хост — это приложение, взаимодействующее с пользователем, а клиент — это компонент внутри хост-приложения, который управляет связью с определенным сервером MCP.
Коммуникационный поток в типичном процессе работы, использующем MCP[править | править код]
Взаимодействие с пользователем: пользователь взаимодействует с хост-приложением, выражая намерение или отправляя запрос.
Обработка хостом: хост обрабатывает ввод пользователя, возможно, используя модуль управления доступом (LLM) для понимания запроса и определения необходимых внешних возможностей.
Подключение клиента: хост направляет свой клиентский компонент на подключение к соответствующим серверам.
Обнаружение возможностей (capabilities): клиент запрашивает у сервера информацию о доступных возможностях (инструментах, ресурсах, запросах).
Вызов возможностей: в зависимости от потребностей пользователя или решения модуля управления доступом (LLM), хост поручает клиенту вызвать определённые возможности сервера.
Выполнение на сервере: сервер выполняет запрошенную функцию и возвращает результаты клиенту.
Интеграция результатов: Клиент передаёт эти результаты обратно на Хост, который включает их в контекст для LLM или представляет их непосредственно пользователю.
Ключевым преимуществом этой архитектуры является её модульность. Один Хост может подключаться к нескольким Серверам одновременно через разных Клиентов. Новые Серверы могут быть добавлены в экосистему без необходимости внесения изменений в существующие Хосты. Возможности можно легко скомпоновать на разных Серверах.
Эта модульность преобразует традиционную задачу интеграции M×N (M ИИ-приложений, подключающихся к N инструментам/сервисам) в более управляемую задачу M+N, где каждому Хосту и Серверу необходимо реализовать стандарт MCP только один раз.
Архитектура может показаться простой, но её преимущество заключается в стандартизации протокола связи и чётком разделении обязанностей между компонентами.
Такая архитектура позволяет создать целостную экосистему, в которой модели ИИ могут беспрепятственно подключаться к постоянно растущему массиву внешних инструментов и источников данных
JSON-RPC[править | править код]
В основе MCP лежит формат сообщений JSON-RPC 2.0 для всего взаимодействия между клиентами и серверами.
JSON-RPC — это облегчённый протокол удалённого вызова процедур, использующий JSON для кодирования параметров.
Это делает его:
- Человекочитаемым и простым в отладке
- Независимым от языка, поддерживающим реализацию в любой среде программирования
- Хорошо зарекомендовавшим себя, с чёткими спецификациями и широким распространением
Протокол определяет три типа сообщений:
1. Request (запрос)
Отправляется от Клиента Серверу для инициирования операции. Сообщение-запрос включает в себя:
- Уникальный идентификатор (id)
- Имя вызываемого метода (например, tools/call)
- Параметры метода (если есть)
Пример запроса:
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "weather", "arguments": { "location": "San Francisco" } } }
2. Response (ответ)
Отправляется от сервера клиенту в ответ на запрос. Ответное сообщение содержит:
- Тот же идентификатор, что и у соответствующего запроса
- Результат (в случае успеха) или ошибку (в случае неудачи)
Пример ответа при успешном выполнении:
{ "jsonrpc": "2.0", "id": 1, "result": { "temperature": 62, "conditions": "Partly cloudy" } }
Пример ответа об ошибке:
{ "jsonrpc": "2.0", "id": 1, "error": { "code": -32602, "message": "Invalid location parameter" } }
3. Notification (уведомление)
Односторонние сообщения, не требующие ответа.
Обычно отправляются от сервера клиенту для предоставления обновлений или уведомлений о событиях.
Пример уведомления:
{ "jsonrpc": "2.0", "method": "progress", "params": { "message": "Processing data...", "percent": 50 } }
Транспортный уровень[править | править код]
Наряду с форматом сообщений — JSON-RPC, MCP также определяет, как эти сообщения передаются между клиентами и серверами. Поддерживаются два основных механизма передачи:
Stdio (стандартный ввод/вывод)[править | править код]
Транспорт stdio используется для локального взаимодействия, когда клиент и сервер работают на одной машине: Хост-приложение запускает сервер как подпроцесс и взаимодействует с ним, записывая данные в его стандартный ввод (stdin) и читая данные из его стандартного вывода (stdout). Этот транспорт используется для локальных инструментов, таких как доступ к файловой системе или запуск локальных скриптов. Основные преимущества этого транспорта заключаются в его простоте, отсутствии необходимости в настройке сети и в том, что он находится в безопасной изолированной среде операционной системы.
HTTP + SSE (Server-Sent Events) / Streamable HTTP[править | править код]
Транспорт HTTP+SSE используется для удалённого взаимодействия, когда клиент и сервер могут находиться на разных машинах: Обмен данными осуществляется по протоколу HTTP, при этом сервер использует события, отправляемые сервером (SSE), для передачи обновлений клиенту по постоянному соединению. Этот транспорт используется для подключения к удалённым API, облачным сервисам или общим ресурсам. Основные преимущества этого транспорта заключаются в его сетевой работе, интеграции с веб-сервисами и совместимости с бессерверными средами. В последних обновлениях стандарта MCP был представлен транспорт Streamable HTTP. Он обеспечивает большую гибкость, позволяя серверам динамически обновляться до SSE для потоковой передачи при необходимости, сохраняя при этом совместимость с бессерверными средами.
Пример полного цикла обмена информацией в MCP[править | править код]
Ниже представлен пример полного цикл взаимодействия Клиента (💻) и Сервера (🌐) в контексте протокола MCP.
Инициализация работы[править | править код]
Клиент подключается к серверу, и они обмениваются доступными им версиями протокола и его опциями/возможностями.
💻 | → инициализация соединения | 🌐 |
💻 | ←
ответ |
🌐 |
💻 | →
подтверждение инициализации |
🌐 |
Клиент подтверждает завершение инициализации с помощью уведомления (notification).
Обнаружение возможностей[править | править код]
Клиент запрашивает информацию о доступных возможностях сервера, а cервер отвечает списком доступных инструментов.
💻 | →
список доступных инструментов |
🌐 |
💻 | ←
ответ |
🌐 |
Этот процесс можно повторить для каждого инструмента, ресурса или типа подсказки.
Выполнение конкретной задачи[править | править код]
Клиент использует возможности Сервера, основываясь на потребностях Хоста.
💻 | →
запрос инструмента |
🌐 |
💻 | ←
опциональная нотификация (или несколько) |
🌐 |
💻 | ←
ответ |
🌐 |
Завершение работы[править | править код]
Соединение корректно закрывается, когда оно больше не нужно, и сервер подтверждает запрос на завершение работы
💻 | →
завершение сессии |
🌐 |
💻 | ←
подтверждение завершения сессии |
🌐 |
💻 | →
выход |
🌐 |
Клиент отправляет финальное сообщение о выходе для завершения завершения операции.
Возможности (Capabilities) MCP[править | править код]
Серверы MCP предоставляют клиентам разнообразные возможности (capabilities) через протокол связи. Эти возможности делятся на четыре основные категории, каждая из которых обладает уникальными характеристиками и вариантами использования. Поскольку перевод на русский относящихся к ним терминов ещё не устоялся, здесь, в ряде случаев, приводятся альтернативные русские и оригинальные английские термины.
Инструменты (Tools)[править | править код]
Инструменты — это исполняемые функции или действия, которые модель ИИ может вызывать через протокол MCP.
Управление: Инструменты обычно управляются моделью, то есть модель ИИ (LLM) решает, когда их вызывать, основываясь на запросе пользователя и контексте.
Безопасность: Из-за способности выполнять действия с побочными эффектами выполнение инструментов может быть опасным. Поэтому обычно требуется явное одобрение пользователя.
Случаи использования: Отправка сообщений, создание тикетов, запросы к API, выполнение вычислений.
Пример: Инструмент прогноза погоды, который получает текущие данные о погоде для заданного местоположения.
Ресурсы[править | править код]
Ресурсы предоставляют доступ только для чтения к источникам данных, позволяя модели ИИ извлекать контекст без выполнения сложной логики.
Управление: Ресурсы контролируются приложением, то есть хост-приложение обычно решает, когда к ним обращаться.
Характер: Они предназначены для извлечения данных с минимальными вычислениями, аналогично конечным точкам GET в REST API.
Безопасность: Поскольку они доступны только для чтения, они обычно представляют меньший риск для безопасности, чем инструменты.
Случаи использования: Доступ к содержимому файлов, извлечение записей базы данных, чтение информации о конфигурации.
Пример: Ресурс, предоставляющий доступ к содержимому файлов.
Промпты (prompts, подсказки)[править | править код]
Промпты — это предопределенные шаблоны или рабочие процессы, которые управляют взаимодействием между пользователем, моделью ИИ и возможностями сервера.
Управление: Подсказки контролируются пользователем и часто представлены в виде параметров в пользовательском интерфейсе хост-приложения.
Назначение: Они структурируют взаимодействие для оптимального использования доступных инструментов и ресурсов.
Выбор: Пользователи обычно выбирают подсказку до того, как модель ИИ начнет обработку, задавая контекст для взаимодействия.
Случаи использования: Стандартные рабочие процессы, специализированные шаблоны задач, управляемые взаимодействия.
Пример: Шаблон подсказки для создания обзора кода.
Sampling (передача образца)[править | править код]
Эта возможность позволяет серверам запрашивать у клиента (в частности, у хост-приложения) выполнение LLM-взаимодействий.
Управление: Передача образца инициируется сервером, но требует взаимодействия клиента и хоста.
Назначение: Обеспечивает серверное агентское поведение и потенциально рекурсивные или многошаговые взаимодействия.
Безопасность: Как и инструменты, операции взаимодействия по образцу обычно требуют одобрения пользователя.
Способы использования: Сложные многошаговые задачи, автономные рабочие процессы агентов, интерактивные процессы.
Пример: Сервер может запросить у клиента анализ обработанных им данных.
Внедрение[править | править код]
В марте 2025 года OpenAI официально приняла MCP, после решения интегрировать стандарт во все свои продукты, включая ChatGPT, пакет разработчика приложений OpenAI Agents SDK и API Responses. Сэм Альтман описал принятие MCP как шаг к стандартизации взаимодействия с инструментами ИИ. До принятия OpenAI потенциальные преимущества MCP широко обсуждались в сообществе разработчиков, особенно в плане упрощения разработки в многомодельных средах[3][2]. Внедрив MCP, OpenAI присоединяется к другим организациям, таким как Block, Replit и Sourcegraph, внедряющим протокол в свои платформы. Такое широкое внедрение подчёркивает потенциал MCP как универсального открытого стандарта для взаимодействия и взаимодействия систем ИИ[3]. MCP может быть интегрирован с Microsoft Semantic Kernel[16] и Azure OpenAI[17]. Серверы MCP могут быть развернуты в Cloudflare[18]. Демис Хассабис, генеральный директор Google DeepMind, подтвердил в апреле 2025 года поддержку MCP в будущих моделях Gemini и связанной с ними инфраструктуре, описав протокол как «быстро становящийся открытым стандартом для эпохи агентов ИИ»[4].
Microsoft вложила значительные средства в MCP для улучшения интеграции ИИ в своей экосистеме, включая GitHub, Microsoft 365 и Azure. GitHub, наряду с Microsoft, присоединился к руководящему комитету MCP на конференции Microsoft Build 2025, предоставив службу реестра для обнаружения и управления серверами MCP. Сервер Azure MCP, находящийся в общедоступной предварительной версии, подключает агентов ИИ к таким сервисам Azure, как хранилище, базы данных и аналитика журналов, а Microsoft 365 поддерживает MCP для создания агентов ИИ и приложений с интеграцией с Copilot. В мае 2025 года Microsoft добавила встроенную поддержку MCP в Copilot Studio, предлагая ссылки на любой сервер MCP одним щелчком мыши, новые списки инструментов, потоковую передачу данных, а также полную трассировку и аналитику.
В этом релизе MCP позиционировался как мост по умолчанию для Copilot к внешним базам знаний, API и Dataverse[19] . Кроме того, Microsoft совместно с Anthropic разработала официальный C# SDK для MCP, доступный в виде пакета NuGet с открытым исходным кодом (ModelContextProtocol), который обеспечивает бесшовную интеграцию ИИ в экосистему .NET для создания серверов и клиентов MCP[20]. С тех пор было добавлено множество серверов MCP, что позволяет интегрировать LLM с различными приложениями[21].
MCP, Информаторий и дружественные вики-проекты[править | править код]
Возможность организации MCP-сервера для Информатория и других дружественных вики-проектов находится в стадии обсуждения.
MCP и Википедия[править | править код]
Существует ряд независимых реализаций MCP-сервера, обеспечивающих доступ к Википедии и другим ресурсам Wikimedia Foundation. Кроме того, сам фонд Wikimedia Foundation предоставляет на коммерческой основе доступ к Wikimedia Enterprise API. Доступ к этому API возможен через специализированный MCP-сервер.
Принятие[править | править код]
The Verge утверждает, что MCP отвечает растущему спросу на ИИ-агентов, учитывающих контекст и способных безопасно извлекать данные из различных источников.[5]
Быстрое внедрение протокола OpenAI, Google DeepMind и такими разработчиками инструментов, как Zed и Sourcegraph, свидетельствует о растущем консенсусе относительно его полезности[3][22]. В апреле 2025 года исследователи безопасности опубликовали анализ, в котором говорилось о наличии множества нерешённых проблем безопасности MCP, включая промпт-инъекцию[23], проблемы с правами доступа к инструментам, которая приводит к тому, что комбинирование инструментов может привести к краже файлов[24], а похожие инструменты могут незаметно подменять доверенные[25].
MCP сравнивают с OpenAPI, аналогичной спецификацией, предназначенной для описания API[26][27].
См. также[править | править код]
Литература[править | править код]
- Hou, Xinyi; Zhao, Yanjie; Wang, Shenao; Wang, Haoyu (2025). "Model Context Protocol (MCP): Landscape, Security Threats, and Future Research Directions". arXiv:2503.23278 [cs.CR].
- Edwards, Benj (April 1, 2025). "MCP: The new "USB-C for AI" that's bringing fierce rivals together". Ars Technica.
- Jackson, Fiona (March 28, 2025). "OpenAI Agents Now Support Rival Anthropic's Protocol, Making Data Access 'Simpler, More Reliable'". TechRepublic.
- Masson, Colin. Context Is the Missing Link: The Emergence of the Model Context Protocol in Industrial AI . ARC Advisory Group (25 марта 2025).
- Laith Al-Saadoon; Pranjali Bhandari; Paul Vincent; Anita Lewis; Jimin Kim; Justin Lewis. Introducing AWS MCP Servers for code assistants (Part 1) . Amazon AWS (1 апреля 2025).
- Desai, Zankar. Introducing Model Context Protocol (MCP) in Copilot Studio: Simplified Integration with AI Apps and Agents . Microsoft Copilot Studio Blog, Microsoft (19 марта 2025).
- Wagner, Tim. Understanding Model Context Protocol (MCP) . Vendia (13 мая 2025).
- Model Context Protocol (MCP) – универсальный протокол для взаимодействия с ИИ, и почему это замечательно.
Ссылки[править | править код]
- официальный сайт проекта
- Проект Model Context Protocol на сайте GitHub
- SDK documentation from OpenAI
- обучающий курс на huginface
Примечания[править | править код]
- ↑ David, Emilia (November 25, 2024). "Anthropic releases Model Context Protocol to standardize AI-data integration". VentureBeat. Дата обращения: 12 мая 2025.
- ↑ 2,0 2,1 2,2 Kumar, Vinay (March 26, 2025). "The open source Model Context Protocol was just updated — here's why it's a big deal". VentureBeat. Дата обращения: 12 мая 2025.
- ↑ 3,0 3,1 3,2 3,3 Wiggers, Kyle (March 25, 2025). "OpenAI adopts rival Anthropic's standard for connecting AI models to data". TechCrunch.
- ↑ 4,0 4,1 Wiggers, Kyle (April 9, 2025). "Google to embrace Anthropic's standard for connecting AI models to data". TechCrunch. Дата обращения: 12 мая 2025.
- ↑ 5,0 5,1 5,2 Roth, Emma (November 25, 2024). "Anthropic launches tool to connect AI systems directly to datasets". The Verge.
- ↑ 6,0 6,1 6,2 6,3 6,4 6,5 6,6 6,7 Introducing the Model Context Protocol . Anthropic (25 ноября 2024). Дата обращения: 12 мая 2025.
- ↑ Edwards, Benj (1 April 2025). "MCP: The new "USB-C for AI" that's bringing fierce rivals together". Ars Technica. Дата обращения: 24 мая 2025.
- ↑ 8,0 8,1 8,2 Ouellette, Michael. Model context protocol: the next big step in generating value from AI (амер. англ.). Engineering.com (9 мая 2025). Дата обращения: 23 июня 2025.
- ↑ Yu, Steven (2025-07-02), 54yyyu/zotero-mcp, Дата обращения: 3 июля 2025
- ↑ Taylor, Aaron (2025-07-02), kujenga/zotero-mcp, Дата обращения: 3 июля 2025
- ↑ Kalia, Abhishek (2025-07-02), kaliaboi/mcp-zotero, Дата обращения: 3 июля 2025
- ↑ Wix just opened the door to quicker and easier coding with new AI tool . TechRadar Pro (27 марта 2025). Дата обращения: 22 мая 2025.
- ↑ Wix Unveils the Wix Model Context Protocol Server for AI-Driven Web App Development . Enterprise AI World (27 марта 2024). Дата обращения: 22 мая 2025.
- ↑ Model Context Protocol (англ.). GitHub. Дата обращения: 20 июня 2025.
- ↑ 15,0 15,1 Bastian, Matthias. Anthropic's new open protocol lets AI systems tap into any data source (амер. англ.). The Decoder (25 ноября 2024). Дата обращения: 14 июня 2025.
- ↑ Wallace, Mark. Integrating Model Context Protocol Tools with Semantic Kernel: A Step-by-Step Guide . Semantic Kernel Dev Blog, Microsoft (5 марта 2025). Дата обращения: 12 мая 2025.
- ↑ mrajguru. Model Context Protocol (MCP): Integrating Azure OpenAI for Enhanced Tool Integration and Prompting . AI - Azure AI services Blog, Microsoft (16 марта 2025). Дата обращения: 12 мая 2025.
- ↑ Brendan Irvine-Broque; Dina Kozlov; Glen Maddern. Build and deploy Remote Model Context Protocol (MCP) servers to Cloudflare . Cloudflare (25 марта 2025). Дата обращения: 12 мая 2025.
- ↑ Desai, Zankar. Model Context Protocol (MCP) is now generally available in Microsoft Copilot Studio (амер. англ.). Microsoft Copilot Blog (29 мая 2025). Дата обращения: 3 августа 2025.
- ↑ Mike, Maria. Microsoft partners with Anthropic to create official C# SDK for Model Context Protocol . Microsoft Developer Blog (2 апреля 2025). Дата обращения: 1 августа 2025.
- ↑ Awan, Abid Ali. 10 Awesome MCP Servers . KDnuggets. Дата обращения: 12 мая 2025.
- ↑ Sha, Arjun. What is Model Context Protocol (MCP) Explained . Beebom.com (14 апреля 2025).
- ↑ Lakshmanan, Ravie. Researchers Demonstrate How MCP Prompt Injection Can Be Used for Both Attack and Defense . thehackernews.com (30 апреля 2025).
- ↑ Fischer, Marc; Beurer-Kellner, Luca. MCP Security Notification: Tool Poisoning Attacks . InvariantLabs (1 апреля 2025).
- ↑ Martin, Jason; Ring, Leo; McCauley, Conor; Kan, Marcus; Schulz, Kasimir; Yeung, Kenneth. MCP: Model Context Pitfalls in an Agentic World . hiddenlayer.com (10 апреля 2025).
- ↑ MacManus, Richard. MCP: The Missing Link Between AI Agents and APIs . The New Stack (13 марта 2025). Дата обращения: 29 мая 2025.
- ↑ Fanelli, Alessio. Why MCP Won (англ.). www.latent.space. Дата обращения: 29 мая 2025.