Mcp Intro
Если вы еще не смотрели Model Context Protocol (MCP), то рекомендую ознакомиться, хотя бы по диагонали. Документация - https://modelcontextprotocol.io/introduction Спецификация протокола - https://spec.modelcontextprotocol.io/specification/2024-11-05/
Для решаемой задачи “нужен API, чтобы соединять мир с LLM, но чем закончится, непонятно”, API получился неплохим. Простой (построен на базе JSON-RPC 2.0), компактный (JSON-Schema занимает 2000 LOC) и расширяемый через capabilities. В протоколе есть синхронная коммуникация через request/response и асинхронная через односторонние notifications. Примитивы приятные: структура для ошибок и id для “склеивания запросов и ответов” предусмотрены, а непонятных полей нет:
{
jsonrpc: "2.0",
id: string | number,
result?: {
[key: string]: unknown;
},
error?: {
code: number,
message: string,
data?: unknown;
}
}
Взаимодействие двуфазное. На старте клиент и сервер обмениваются версиями и “возможностями” (capabilities), которые могут предоставлять друг другу.
Сейчас описаны такие “возможности”:
- client:roots - способность предоставлять список “папок” файловой системы. Пока непонятно.
- client:sampling - поддержка запросов к LLM клиента со стороны сервера. Название странное, но окей. Через эту же capability, по идее, можно спрашивать что-то и у пользователя.
- server:prompts - умение предоставлять клиенту “полезные” промпты в контексте данного сервера, среди которых пользователь уже может выбрать, что ему нужно.
- server:resources - предоставление доступа к ресурсам. Ресурсы могут быть текстовыми и бинарными. Идентифицируются по uri (https://, file://, git://). Пока только чтение и подписка на изменение, записи нет.
- server:tools - тут все понятно, полная аналогия с обычными tools.
- server:logging - возможность отправлять логи клиенту.
В возможностях смутило отсутствие версионности внутри одной возможности. Для экспериментальных, например, пришлось делать отдельную. Боюсь, дальше будет хаос с совместимостью или какой-нибудь костыль, типа версий в именах. Ну или добавят в следующих версиях.
Текущий роадмап: https://modelcontextprotocol.io/development/roadmap
- удалённые подключения MCP
- референсная имплементация клиента
- управление пакетами для MCP серверов
- поддержка агентoв