Подключить внешний MCP-сервер к MCP Hub
Примечание
Функциональность находится на стадии Preview.
Если у вас уже есть развернутый внешний MCP-сервер, например, на smithery.ai
Чтобы добавить существующий внешний MCP-сервер в MCP Hub:
-
В консоли управления
выберите каталог, на который у вашего аккаунта есть ролиserverless.mcpGateways.editorиiam.serviceAccounts.userили выше. -
В списке сервисов выберите AI Studio.
-
На панели слева выберите MCP-серверы и нажмите кнопку Создать MCP-сервер. В открывшемся окне:
-
В блоке Способ добавления выберите опцию
Подключить. -
В блоке Инструменты нажмите кнопку Добавить инструменты и в открывшемся окне:
-
В поле Транспорт выберите тип транспортного механизма, который будет использоваться для взаимодействия с MCP-сервером. Доступные типы:
- Streamable HTTP
— современный и актуальный транспортный механизм. AI-агент сможет получать обновления (события) с сервера без необходимости поддерживать постоянное HTTP-соединение. - HTTP with SSE
— устаревший транспортный механизм. AI-агент сможет получать обновления с сервера через одно постоянное HTTP-соединение.
- Streamable HTTP
-
В поле URL укажите URL, по которому доступен внешний MCP-сервер. Например:
https://mcp.example.com. -
В поле Тип авторизации укажите аутентификационные данные, которые будут передаваться в запросах:
-
Токен доступа— чтобы передавать токен доступа в заголовке авторизации запроса.Чтобы добавить в запрос дополнительные заголовки, нажмите кнопку
Добавить заголовок. -
Без авторизации— чтобы не использовать аутентификацию.
-
-
Нажмите кнопку Подключиться.
-
В открывшемся окне Добавление инструментов выберите инструменты, которые доступны в шаблоне и которые вы хотите добавить в создаваемый MCP-сервер, затем нажмите кнопку Добавить.
Примечание
Один MCP-сервер может содержать до 50 инструментов.
-
-
В блоке Параметры сервера:
-
В поле Имя задайте имя создаваемого MCP-сервера. Требования к имени:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
(Опционально) Добавьте создаваемому серверу описание и метки, воспользовавшись соответствующими кнопками.
-
В поле Доступ выберите тип создаваемого сервера:
- Приватный — чтобы создать приватный MCP-сервер, для доступа к которому потребуется аутентификация.
- Публичный — чтобы создать публичный MCP-сервер, доступный без аутентификации.
-
В поле Сервисный аккаунт выберите сервисный аккаунт, от имени которого MCP-сервер будет работать с сервисами и ресурсами Yandex Cloud. Сервисному аккаунту должны быть назначены роли, достаточные для доступа к этим ресурсам и сервисам.
-
(Опционально) Включите опцию Указать сеть, чтобы указать облачную сеть, в которой будут размещены экземпляры MCP-сервера.
-
(Опционально) Включите опцию Запись логов и задайте параметры логирования, чтобы вести журнал логов создаваемого MCP-сервера.
-
-
Нажмите кнопку Сохранить.
-
Примечание
Ниже приведен пример создания простого MCP-сервера, содержащего один инструмент. Чтобы создать MCP-сервер с несколькими инструментами, добавьте описания этих инструментов в виде отдельных JSONtools. Подробнее о параметрах, доступных при создании MCP-сервера, читайте в справочнике API в разделе McpGateway.Create.
-
Получите IAM-токен, необходимый для аутентификации.
-
Сохраните полученный IAM-токен в переменную окружения:
export IAM_TOKEN="<содержимое_IAM_токена>" -
Создайте файл с телом запроса (например,
body.json):body.json
{ "folderId": "<идентификатор_каталога>", "name": "<имя_MCP-сервера>", "description": "<описание_MCP-сервера>", "serviceAccountId": "<идентификатор_сервисного_аккаунта>", "public": "true|false", "tools": [ { "name": "<имя_инструмента>", "description": "<описание_инструмента>", "inputJsonSchema": "<JSON-схема_инструмента>", "action": { "mcpCall": { "url": "<URL_MCP-сервера>", "toolCall": { "toolName": "<имя_инструмента>", "parametersJson": "<передаваемые_параметры>" }, "transport": "<транспортный_механизм>", "unauthorized": {} } } } ] }Где:
-
folderId— идентификатор каталога, в котором создается MCP-сервер. Вашему аккаунту на этот каталог должны быть назначены ролиserverless.mcpGateways.editorиiam.serviceAccounts.userили выше. -
name— имя создаваемого MCP-сервера. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
description— произвольное описание MCP-сервера. -
serviceAccountId— идентификатор сервисного аккаунта, от имени которого MCP-сервер будет работать с сервисами и ресурсами Yandex Cloud. Сервисному аккаунту должны быть назначены роли, достаточные для доступа к этим ресурсам и сервисам. -
public— параметр, определяющий тип создаваемого сервера. Возможные значения:true— чтобы создать публичный MCP-сервер.false— чтобы создать приватный MCP-сервер.
-
tools— описание добавляемых в MCP-сервер инструментов:-
name— имя добавляемого инструмента. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
description— произвольное описание инструмента. -
inputJsonSchema— JSON -схема, описывающая входные параметры инструмента.JSON-схема:
{ properties?: { [key: string]: object }; required?: string[]; type: “object”; }Пример JSON-структуры
{ "type": "object", "properties": { "location": { "type": "string", "description": "City name or zip code" } }, "required": ["location"] } -
action.mcpCall— описание параметров, специфичных для настройки подключения внешнего MCP-сервера:-
url— URL, по которому доступен внешний MCP-сервер. Например:https://mcp.example.com. -
toolName— имя добавляемого инструмента. Требования к имени:- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
parametersJson— параметры, передаваемые в инструмент, в формате jq-шаблона . -
transport— тип транспортного механизма, который будет использоваться для взаимодействия с MCP-сервером. Доступные типы:STREAMABLE — современный и актуальный транспортный механизм. AI-агент сможет получать обновления (события) с сервера без необходимости поддерживать постоянное HTTP-соединение.SSE — устаревший транспортный механизм. AI-агент сможет получать обновления с сервера через одно постоянное HTTP-соединение.
-
"unauthorized": {}— передайте это значение, если внешний MCP-сервер не требует аутентификации. Если аутентификация нужна, вместо поляunauthorizedпередайте в теле запроса заголовок авторизацииheaderили полеserviceAccount. Подробнее читайте в справочнике API в разделе McpGateway.Create.
-
Пример тела запроса
{ "folderId": "b1gt6g8ht345********", "name": "my-external-mcp-server", "description": "my sample external MCP-server", "serviceAccountId": "ajegtlf2q28a********", "public": "true", "tools": [ { "name": "tool-name", "description": "tool description", "inputJsonSchema": "{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"City name or zip code\"}},\"required\":[\"location\"]}", "action": { "mcpCall": { "url": "https://mcp.example.com", "toolCall": { "toolName": "tool-name", "parametersJson": "//( . )" }, "transport": "SSE", "unauthorized": {} } } } ] } -
-
-
Воспользуйтесь методом REST API McpGateway.Create, чтобы создать новый MCP-сервер в каталоге:
curl \ --request POST \ --header "Authorization: Bearer $IAM_TOKEN" \ --data "@body.json" \ "https://serverless-mcp-gateway.api.cloud.yandex.net/mcpgateway/v1/mcpGateways"Результат:
{ "done": false, "metadata": { "@type": "type.googleapis.com/yandex.cloud.serverless.mcpgateway.v1.CreateMcpGatewayMetadata", "mcpGatewayId": "db815a8nma7u********", "folderId": "b1gt6g8ht345********" }, "id": "db8o404e7f2v********", "description": "Create MCP Gateway", "createdAt": "2025-12-22T18:04:42.776181560Z", "createdBy": "ajeol2afu1js********", "modifiedAt": "2025-12-22T18:04:42.776181560Z" }Сохраните идентификатор созданного MCP-сервера (значение поля
mcpGatewayId) — он понадобится на следующем шаге. -
Дождитесь завершения создания MCP-сервера и посмотрите подробную информацию о нем, указав его идентификатор, сохраненный на предыдущем шаге:
curl \ --request GET \ --header "Authorization: Bearer $IAM_TOKEN" \ "https://serverless-mcp-gateway.api.cloud.yandex.net/mcpgateway/v1/mcpGateways/<идентификатор_MCP-сервера>"Результат
{ "tools": [ { "action": { "mcpCall": { "toolCall": { "toolName": "tool-name", "parametersJson": "//( . )" }, "unauthorized": {}, "url": "https://mcp.example.com", "transport": "SSE" } }, "name": "tool-name", "description": "tool description", "inputJsonSchema": "{\"type\":\"object\",\"properties\":{\"location\":{\"type\":\"string\",\"description\":\"City name or zip code\"}},\"required\":[\"location\"]}" } ], "logOptions": { "disabled": false }, "public": true, "id": "db815a8nma7u********", "folderId": "b1gt6g8ht345********", "createdAt": "2025-12-22T18:04:42.819804Z", "name": "my-external-mcp-server", "description": "my sample external MCP-server", "status": "ACTIVE", "baseDomain": "https://db815a8nma7u********.99igvxy3.mcpgw.serverless.yandexcloud.net", "serviceAccountId": "ajegtlf2q28a********", "cloudId": "b1gia87mbaom********" }
В результате в MCP Hub будет создан MCP-сервер, содержащий добавленные инструменты и доступный AI-агентам.
Использовать Responses API для обращения к внешнему MCP-серверу
Вместо MCP Hub для обращения к внешнему MCP-серверу из AI-агента вы можете использовать Responses API. Для этого достаточно просто указать URL-адрес сервера и API-ключ с заданной областью действия yc.serverless.mcpGateways.invoke.
Пример подключения MCP-сервера через Responses API:
from openai import OpenAI
# Создаем клиента
client = openai.OpenAI(
api_key="<API-ключ>",
base_url="https://rest-assistant.api.cloud.yandex.net/v1",
project="<идентификатор_каталога>"
)
# Пример вызова MCP через Responses API
response = client.responses.create(
model="gpt://<идентификатор_каталога>/yandexgpt",
input=[
{
"role": "user",
"content": "Найди клиента с именем Иван Иванов в CRM"
}
],
# MCP-инструменты, доступные модели
tools=[
{
"server_label": "crm_lookup",
"server_url": "<URL_MCP-сервера>",
"type": "mcp",
"metadata": {
"description": "Поиск клиента в CRM по имени"
}
}
]
)
print(response.output_text)