# Запросы MCP (/ru/docs/requests/mcp-requests)

Запрос MCP — это сохранённый вызов одного из [MCP-серверов](/docs/mcp-servers) рабочего пространства: вызов
инструмента, чтение ресурса, промпт или любой метод JSON-RPC. Сохраняйте вызовы, которые делаете часто, добавляйте
проверки и запускайте их в [Прогоне](/docs/requests/runner), как любые другие запросы.

<Shot id="requests-mcp-call" alt="Agent tools › search_catalog: меню сервера Alpenglow MCP, выбран «Инструмент», аргументы в JSON, ниже поля инструмента, и результат с зелёным значком «Результат»" />

## Пробный вызов на странице MCP-серверов [#try-a-call-from-the-mcp-servers-page]

Быстрее всего начать на самом сервере:

1. Откройте страницу **MCP-серверы** и выберите сервер, например **Alpenglow MCP**, который указывает на
   `https://demo.echolot.dev/mcp`.
2. Выберите **Проверка**, если сервер ещё не проверялся. Страница перечислит **Инструменты**, **Ресурсы** и **Промпты**
   сервера.
3. Нажмите инструмент, ресурс или промпт. Откроется лист с его аргументами.
4. Заполните их — в **Форме**, построенной по схеме ввода, или как **JSON** — и выберите **Вызвать**.
5. Ниже появится результат с **Результат** или **Ошибка** и временем, которое заняло выполнение.
6. Выберите **Сохранить как запрос**, чтобы оставить вызов с его аргументами как запрос MCP.

<Shot id="requests-mcp-call-panel" alt="Лист вызова инструмента search_catalog на странице MCP-серверов: форма с полями query и limit и результат JSON ниже" />

## Создание запроса MCP [#create-an-mcp-request]

Выберите **Новый вызов MCP** в меню **+** рядом с **Запросы** в боковой панели. Панель редактора содержит вызов:

1. Выберите сервер в меню в её начале. **MCP-серверы…** в том же меню открывает страницу MCP-серверов.
2. Выберите, что вызывать: **Инструмент**, **Ресурс**, **Промпт** или **Метод**.
3. Введите цель: **Имя инструмента**, **URI ресурса**, **Имя промпта** или метод JSON-RPC, например `ping`. Имена из
   последней проверки сервера предлагаются по мере ввода в разделе **С сервера**.
4. Выберите **Вызвать** (<kbd>⌘</kbd><kbd>R</kbd>). Пока вызов выполняется, **Отменить** (<kbd>⌘</kbd><kbd>.</kbd>)
   останавливает его.

| Операция | Что отправляется | Что такое аргументы |
| --- | --- | --- |
| **Инструмент** | `tools/call` с именем инструмента | Аргументы инструмента |
| **Ресурс** | `resources/read` с URI | Не используются |
| **Промпт** | `prompts/get` с именем промпта | Аргументы промпта |
| **Метод** | Любой метод JSON-RPC | Параметры метода |

В редакторе есть вкладки: **Документация**, **Аргументы**, **Переменные**, **Тесты** и **Настройки**. У запросов MCP нет
собственных заголовков, авторизации и скриптов: настройки подключения сервера, его заголовки и вход находятся на
странице MCP-серверов. См. [добавление серверов](/docs/mcp-servers/adding-servers).

## Аргументы [#arguments]

Вкладка **Аргументы** содержит объект JSON с `{{variables}}`:

```json
{
  "query": "ultralight tent",
  "limit": 3
}
```

Если последняя проверка сервера знает инструмент, вкладка показывает его описание над редактором, а ниже — его поля,
например `Fields: query*, limit`; звёздочка отмечает обязательное поле. **Заполнить по схеме** заменяет аргументы всеми
полями схемы ввода инструмента — чтобы было с чего начать.

В рабочем пространстве Alpenglow в **Agent tools** есть два вызова: **search_catalog** с аргументами выше и
**order_status**, который запрашивает `{"order_id": "ord_7Hk2Lw"}`.

## Результаты [#results]

Область ответа показывает результат в виде JSON на вкладке **Тело**, как любой [ответ](/docs/requests/responses).
Значок в сводке ответа читается **Результат** зелёным или **Ошибка** красным, с версией протокола, на которой говорит
сервер. Наведите на него указатель, чтобы увидеть, кто ответил или что пошло не так.

Вызов может завершиться неудачей двумя способами, и Echolot их различает:

- Сервер отвечает ошибкой: результат инструмента, помеченный как ошибка, или ошибка JSON-RPC. Значок читается
  **Ошибка**, а тело содержит то, что сказал сервер.
- Ответа на вызов нет вовсе: сервер недоступен, не запускается или нарушает протокол. Область ответа объясняет
  причину. Проверьте сервер на странице MCP-серверов: журнал сообщений показывает каждое сообщение последней проверки.

Каждый вызов сохраняется в [Истории](/docs/workspaces/history).

## Проверки для MCP [#checks-for-mcp]

На вкладке **Тесты**:

- **Ошибка MCP** равна `false` — проходит, если вызов удался. Неудача показывает сообщение сервера.
- **Схема вывода инструмента** проверяет `structuredContent` результата по `outputSchema`, которую объявляет
  инструмент. Проверка не проходит, если инструмент её не объявляет или в результате нет `structuredContent`.
- **Значение JSON** проверяет любое значение результата, например `$.structuredContent.results.length` больше `0` или
  `$.content[0].type` равно `text`.

Все проверки и сравнения см. в разделе [скрипты и тесты](/docs/requests/scripts-and-tests).

<Edition only="appstore">
  Версия из App Store вызывает MCP-серверы по HTTP. Серверы, которые запускаются как локальная программа (stdio),
  остаются в рабочем пространстве, но для вызовов к ним нужна версия для прямой загрузки или инструмент командной
  строки.
</Edition>

## Из командной строки [#from-the-command-line]

`echolot run` запускает сохранённые запросы MCP с их проверками, а `echolot mcp check` проверяет сервер. См.
[echolot mcp](/docs/cli/mcp).
