Протокол MCP
В новой видеолекции по MCP разбираемся с организацией протокола MCP.
Протокол MCP включает два уровня:
- Уровень данных (Data Layer) – определяет протокол для коммуникации между клиентом и сервером MCP. Использует формат JSON-RPC 2.0.
- Транспортный уровень (Transport Layer) – задает механизмы передачи данных между клиентом и сервером MCP.
На уровне данных можно отправлять три типа сообщений: запрос, ответ и уведомление. В лекции показаны небольшие примеры таких сообщений.
На транспортном уровне MCP сейчас есть два механизма:
- Stdio – для связи с MCP-сервером используются стандартные потоки ввода/вывода (в Python для этого применяются функции print() и input()). Подходит для локального сервера MCP.
- Streamable HTTP – для связи с удаленным сервером MCP по протоколу HTTP/HTTPS. Streamable означает, что данные большого объема можно передавать в нескольких сообщениях, которые образуют поток (stream). Также сервер в любое время может отправить клиенту сообщение Server-Sent Event, не дожидаясь получения запроса GET или POST.
Оба варианта транспортного уровня (Stdio и Streamable HTTP) используются для передачи сообщений уровня данных MCP в формате JSON-RPC 2.0.
Важно отметить, что не следует путать транспортный уровень MCP с транспортным уровнем интернет и компьютерных сетей (стек TCP/IP). В компьютерных сетях на транспортном уровне работают протоколы TCP и UDP. Транспортный уровень MCP может быть реализован вообще без сетевого взаимодействия с помощью Stdio, если сервер запущен локально. В случае с удаленным сервером MCP сеть используется, но в качестве транспорта служит протокол HTTP или HTTPS (похожим образом работает протокол DNS over HTTPS).
Далее в курсе будем подробно рассматривать уровень данных, а также два типа транспорта в MCP.
протокол mcp
mcp stdio
mcp json-rpc 2.0
mcp http