Сценарий из mcp-everything. Актуально на 2026-10-24.
Первый шаг любой автоматизации Yandex Cloud: обменять ключ сервисного аккаунта или OAuth-токен на IAM-токен.
import time, jwt, requests # pip install pyjwt cryptography requests
key = {"service_account_id": "<id сервисного аккаунта>", "id": "<id ключа>", "private_key": open("private.pem").read()}
now = int(time.time())
token = jwt.encode({"aud": "https://iam.api.cloud.yandex.net/iam/v1/tokens", "iss": key["service_account_id"],
"iat": now, "exp": now + 3600},
key["private_key"], algorithm="PS256", headers={"kid": key["id"]})
iam = requests.post("https://iam.api.cloud.yandex.net/iam/v1/tokens", json={"jwt": token}).json()["iamToken"]
https://iam.api.cloud.yandex.nethttps://resource-manager.api.cloud.yandex.nethttps://compute.api.cloud.yandex.nethttps://operation.api.cloud.yandex.netТип: Bearer-токен
Все запросы, кроме получения токена, передают IAM-токен в заголовке:
IAM-токен получают методом POST /iam/v1/tokens в обмен на OAuth-токен аккаунта на Яндексе или JWT сервисного аккаунта.
Authorization: Bearer <IAM-токен>
Хост iam.api.cloud.yandex.net. Передаётся ровно одно из полей.
| Параметр | Где | Тип | Обяз. | Описание |
|---|---|---|---|---|
yandexPassportOauthToken |
body | string | нет | OAuth-токен аккаунта на Яндексе, до 4000 символов |
jwt |
body | string | нет | JWT сервисного аккаунта, до 8000 символов |
id, created_at, created_by, modified_at, done, metadata и одно из полей response/error. Отслеживайте статус по id.done: true означает завершение операции, в том числе с ошибкой. Поле error может появиться раньше — пока сервис откатывает изменения.Create/Update поле response содержит созданный или изменённый ресурс.pageSize, memory, cores) передаются строками.pageSize и pageToken, следующая страница — по nextPageToken из ответа.Если этого недостаточно — официальная документация: https://yandex.cloud/ru/docs/api-design-guide/ Вся интеграция одним документом: https://mcp-everything.ru/integrations/yandex-cloud.md