Строка 73: |
Строка 73: |
| | | |
| Такая архитектура позволяет создать целостную экосистему, в которой модели ИИ могут беспрепятственно подключаться к постоянно растущему массиву внешних инструментов и источников данных | | Такая архитектура позволяет создать целостную экосистему, в которой модели ИИ могут беспрепятственно подключаться к постоянно растущему массиву внешних инструментов и источников данных |
| + | |
| + | === JSON-RPC === |
| + | В основе MCP лежит формат сообщений J[[SON-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 |
| + | } |
| + | } |
| | | |
| == Внедрение == | | == Внедрение == |