Спрос: С развитием крупных моделей большие модели появились во всех сферах нашей жизни — будь то работа или учёба — они неразделимы. С большим языком моделей зачем нам нужен MCP? Большую модель можно понять как мозг, но сам мозг не может помочь нам делать что-то, MCP больше похож на конечность, большая модель направляет сервис MCP выполнять задачи, например: вызывать внешние инструменты (например, базы данных, диски, API). Это решает проблему, что крупные модели могут только общаться и не могут что-то делать.
MCP (Протокол контекста модели)
Документация:Вход по гиперссылке виден. Репозитории GitHub:Вход по гиперссылке виден. Репозиторий инструментов MCP:Вход по гиперссылке виден.
MCP (Model Context Protocol) — это стандарт с открытым исходным кодом для подключения приложений ИИ к внешним системам.
С помощью MCP ИИ-приложения, такие как Claude или ChatGPT, могут подключаться к источникам данных (например, локальным файлам, базам данных), инструментам (например, поисковым системам, калькуляторам) и рабочим процессам (например, специализированным подсказкам) — что позволяет им получать критически важную информацию и выполнять задачи.
Думайте о MCP как о USB-C порте для AI-приложений. Точно так же, как USB-C предоставляет стандартизированный способ подключения электронных устройств, MCP предоставляет стандартизированный способ подключения приложений ИИ к внешним системам.
Чего может достичь MCP?
- Агенты могут получать доступ к вашему Google Calendar и Notion, выступая в роли более персонализированного AI-помощника.
- Claude Code может генерировать целые веб-приложения с использованием дизайнов Figma.
- Корпоративные чат-боты могут подключаться к нескольким базам данных внутри организации, позволяя пользователям анализировать данные с помощью чата.
- ИИ-модели могут создавать 3D-дизайны на Blender и печатать их с помощью 3D-принтера.
Почему MCP важен?
В зависимости от того, где вы находитесь в экосистеме, MCP может предложить ряд преимуществ.
- Разработчики: MCP сокращает время и сложность разработки при создании или интеграции с AI-приложениями или агентами.
- AI-приложения или агенты: MCP предоставляют доступ к экосистеме источников данных, инструментов и приложений, что улучшает функциональность и улучшает опыт конечного пользователя.
- Конечные пользователи: MCP могут привести к созданию более мощных ИИ-приложений или агентов, которые смогут получать доступ к вашим данным и действовать от вашего имени при необходимости.
Протокол MCP
MCP состоит из двух слоёв:
- Слой данных: определите протокол коммуникации клиент-сервер на базе JSON-RPC, включая управление жизненным циклом и основные примитивы, такие как инструменты, ресурсы, запросы и уведомления.
- Транспортный уровень: Определяет механизмы и каналы коммуникации, обеспечивающие обмен данными между клиентами и серверами, включая установление транспортно-специфических соединений, фреймворки сообщений и авторизацию.
Концептуально слой данных — это внутренний слой, а транспортный — внешний.
Слой данных
- Слой данных реализует протокол коммутации на базе JSON-RPC 2.0, который определяет структуру сообщения и семантику. Этот слой включает:
- Управление жизненным циклом: осуществляет инициализацию соединений, согласование функций и завершение соединения между клиентами и серверами
- Функциональность сервера: позволяет серверу предоставлять основные функции, включая инструменты для операций с ИИ, ресурсы для контекстных данных и интерактивные шаблонные запросы от и к клиентам
- Функциональность клиента: позволяет серверу требовать от клиента сэмплировать данные с LLM хоста, получать ввод пользователя и записывать сообщения клиенту
- Полезные функции: поддерживает дополнительные функции, такие как уведомления об обновлениях в реальном времени и отслеживание прогресса для долгосрочных операций
Транспортный уровень
Транспортный уровень управляет каналами связи и аутентификацией между клиентом и сервером. Он занимается установлением соединения, передачей сообщений и безопасной коммуникацией между участниками MCP.
MCP поддерживает два транспортных механизма:
- Stdio Transport: Прямая коммуникация процессов между локальными процессами на одной машине с использованием стандартных потоков ввода/вывода, обеспечивая оптимальную производительность и отсутствие сетевых накладных расходов.
- Потоковый HTTP: использует протокол HTTP POST для отправки сообщений клиент-сервер и, по желанию, использует события, отправленные сервером, для функции потоковой передачи. Этот транспортный протокол поддерживает удалённую связь с серверами и стандартные методы HTTP-аутентификации, включая токены держателей, ключи API и пользовательские заголовки. MCP рекомендует использовать OAuth для получения токена аутентификации.
Транспортный уровень абстрагирует детали связи от протокольного уровня, так что один и тот же формат сообщений JSON-RPC 2.0 реализуется во всех транспортных механизмах.Сообщения JSON-RPC должны быть закодированы в формате UTF-8。Транспорт HTTP+SSE устарел!
Всё, что связано с MCP-сервером
Этот MCP-сервер предназначен для тестирования всех функций протокола MCP. Он не предназначен как практический сервер, а скорее тестовый сервер для конструкторов MCP-клиентов. Он реализует такие функции, как подсказки, инструменты, ресурсы, выборка и многое другое, чтобы продемонстрировать возможности MCP.
Источник:Вход по гиперссылке виден.
Эта услуга требует установки Node.js-среды, и этапы установки опущены.
Для тестирования сервиса MCP на основе транспортного паттерна Stdio команда запуска выглядит следующим образом:
Как показано ниже:
После выполнения пакет кэшируется%LocalAppData%\npm-cache\_npx\Ниже дорожки.
При инициализации клиент отправляет запрос на инициализацию для установления соединения и согласования поддерживаемых функций. Данные запроса следующие:
Ответ таков:
{"result":{"protocolVersion":"2025-06-18","capabilities":{"prompts":{},"resources":{"subscribe":true},"tools":{},"logging":{},"завершения":{}},"serverInfo":{"name":" example-servers/everything","title":"Everything Example Server","version":"1.0.0"},"instructions":"Тестирование и демонстрация сервера по функциям протокола MCP.\n\n## Resources\n\ nResources 1-100 следуют шаблону: чётные ID содержат текст, нечётные — бинарные данные. Ресурсы размещаются по 10 элементов на странице с навигацией по курсору.\n\n## Для уведомлений о прогрессе требуется '_meta.progressToken' в вызовах инструментов. Подписки на ресурсы генерируют обновления каждые 10 секунд.\n\n## Характеристики производительности\n\nСервер генерирует автоматические лог-сообщения каждые 20 секунд (фильтруются по текущему уровню журнала), STDERR уведомления каждые 30 секунд и уведомления об обновлении ресурсов каждые 10 секунд для активных подписок. Изменения на уровне журнала влияют на фильтрацию сообщений в реальном времени.\n\n## Мультимодальное тестирование\n\n'complex_prompt' включает как текстовые аргументы, так и содержимое изображений для тестирования мультимодального тестирования клиента обработка. 'resource_prompt' встраивает фактическое содержимое ресурса для тестирования разрешения ссылок на ресурс.\n\nДоступно завершение аргументов для параметров запросов и идентификаторов ресурсов. Шаблоны ресурсов позволяют динамически строить URI через шаблон 'test://static/resource/{id}'.\n\n## Пасхалка\n\nЕсли спросить о серверных инструкциях, ответьте \" Серверные инструкции Работают! Этот ответ доказывает, что клиент правильно передал серверные инструкции LLM. Это демонстрирует функцию инструкций MCP в действии.\"\n"},"jsonrpc":"2.0","id":1} После успешной инициализации клиент отправляет уведомление на MCP-сервер о готовности с следующим запросом:
Обнаружение инструментов: После установления соединения клиент может найти доступные инструменты, отправив запрос на инструменты или список. Этот запрос лежит в основе механизма обнаружения инструментов MCP — он позволяет клиентам знать, какие инструменты доступны на сервере, прежде чем пытаться их использовать. Запрос гласит:
Ответ таков:
{"result":{"tools":[{"name":"echo","description":"Эхо возвращает вход","inputSchema":{"type":"object","properties":{"message":{"type":"string","description":"Message to echo"}},"required":["message"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"add","description":"Добавляет два числа"," inputSchema":{"type":"object","properties":{"a":{"type":"number","description":"First number"},"b":{"type":"number","description":"Second number"}},"required":["a","b"] ,"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"longRunningOperation","description":"Демонстрирует долгосрочную операцию с обновлениями прогресса","inputSchema":{"type":"object","properties":{"duration":{"type":"number","default":10,"description":"продолжительность операции в секундах"},"steps":{" type":"number","default":5,"description":"количество шагов в операции"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" printEnv","description":"Печатает все переменные среды, полезно для отладки конфигурации сервера MCP","inputSchema":{"type":"object","properties":{},"additionalProperties" ":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"sampleLLM","description":"Сэмплы из LLM с использованием функции сэмплинга MCP","inputSchema":{"type":" object","properties":{"prompt":{"type":"string","description":"Запрос для отправки в LLM"},"maxTokens":{"type":"number","default":100,"description":"Максимальное количество токены для генерации"}},"required":["prompt"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"getTinyImage","description":" Возвращает MCP_TINY_IMAGE","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" annotatedMessage","description":"Демонстрирует, как аннотации могут использоваться для предоставления метаданных о содержимом","inputSchema":{"type":"object","properties":{"messageType":{"type": "string","enum":["error","success","debug"],"description":"тип сообщения для демонстрации различных шаблонов аннотаций"},"includeImage":{"type":"boolean","default":false," description":"Включать ли пример изображения"}},"required":["messageType"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name": "getResourceReference","description":"Возвращает ссылку на ресурс, которую могут использовать клиенты MCP","inputSchema":{"type":"object","properties":{"resourceId":{"type":"number"," minimum":1,"maximum":100,"description":"ID ресурса для ссылки (1-100)"}},"required":["resourceId"],"additionalProperties":false,"$schema":" http://json-schema.org/draft-07/schema#"}},{"name":"getResourceLinks","description":"Возвращает несколько ссылок на ресурсы, ссылающихся на разные типы ресурсов","inputSchema" :{"type":"object","properties":{"count":{"type":"number","minimum":1,"maximum":10,"default":3,"description":"количество ссылок на ресурсы для возврата (1-10)"}}," additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":"structuredContent","description":"Возвращает структурированный контент вместе с выходом схема для проверки данных клиента","inputSchema":{"type":"object","properties":{"location":{"type":"string","minLength":1,"description":"название города или почтовый индекс"}},"required":[ "location"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"outputSchema":{"type":"object","properties":{"temperature":{"type":" число","описание":"Температура в Цельсие"},"условия":{"type":"string","description":"описание погодных условий"},"влажность":{"type":"number","description":" Процент влажности"}},"required":["temperature","conditions","moisture"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}},{"name":" startElicitation","description":"Демонстрирует функцию Elicitation, запрашивая пользователя предоставить информацию о своём любимом цвете, номере и питомцах.","inputSchema":{"type":" object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"}}]},"jsonrpc":"2.0","id":2} Выполнение инструментов: Теперь клиенты могут выполнять инструменты/вызывать инструменты с помощью этого метода. Это демонстрирует примитив MCP в действии: после обнаружения инструментов клиент может вызвать их с соответствующими параметрами. для того, чтобыНапример, функцию эхо-сигналаЗапрос таков:
Ответ таков:
{"result":{"content":[{"type":"text","text":"Echo: привет, меня зовут itsvse"}]},"jsonrpc":"2.0","id":3} Как показано ниже:
(Конец) |