---
metadata:
  - name: generator
    content: Diplodoc Platform v5.54.4
alternate:
  - https://sourcecraft.dev/portal/docs/en/code-assistant/operations/agent/mcp/server-transports.md
  - https://sourcecraft.dev/portal/docs/ru/code-assistant/operations/agent/mcp/server-transports.md
  - href: ru/code-assistant/operations/agent/mcp/server-transports.md
    type: text/markdown
    title: Markdown version
  - href: ../../../llms.txt
    type: text/markdown
    title: llms.txt
title: "Транспорт MCP в плагине Code\_Assistant для VS Code"
description: "Транспортные механизмы MCP в плагине Code\_Assistant для VS Code: STDIO, Streamable HTTP и SSE."
---
> **Documentation Index:** Fetch the complete configuration index at https://sourcecraft.dev/portal/docs/ru/llms.txt


# Транспорт MCP в плагине Code Assistant для VS Code

<!-- source: ru/_includes/code-assistant/only-in-vscode.md -->
{% note warning %}

Функциональность доступна только в Visual Studio Code.

{% endnote %}
<!-- endsource: ru/_includes/code-assistant/only-in-vscode.md -->

Протокол контекста модели (MCP) поддерживает три основных механизма транспорта для связи между Code Assistant и MCP-серверами: стандартный ввод/вывод (STDIO), Streamable HTTP (современный стандарт) и Server-Sent Events (SSE) (устаревший способ). Каждый из них имеет свои особенности, преимущества и области применения.

## Транспорт STDIO {#stdio}

Транспорт STDIO работает локально на вашем компьютере и использует стандартные потоки ввода-вывода.

### Как работает транспорт STDIO {#how-stdio-works}

1. Клиент (Code Assistant) запускает MCP-сервер как дочерний процесс.
1. Связь осуществляется через потоки процесса: клиент записывает в STDIN сервера, сервер отвечает через STDOUT.
1. Каждое сообщение разделяется символом новой строки.
1. Сообщения форматируются в виде JSON-RPC 2.0.

```text
Клиент                    Сервер
   |                         |
   |---- JSON сообщение ---->| (через STDIN)
   |                         | (обрабатывает запрос)
   |<---- JSON сообщение ----| (через STDOUT)
   |                         |
```

### Характеристики STDIO {#stdio-characteristics}

* Локальность — работает на том же компьютере, что и Code Assistant.
* Производительность — очень низкая задержка и накладные расходы из-за неиспользования сети.
* Простота — прямая связь процессов без настройки сети.
* Взаимодействие — один клиент на один сервер.
* Безопасность — транспорт более безопасен, так как отсутствует сетевое воздействие.

### Когда использовать STDIO {#when-to-use-stdio}

STDIO идеально подходит для следующих сценариев:
* Локальных интеграций и инструментов, работающих на том же компьютере.
* Операций, требующих высокой безопасности.
* Сценариев с низкой задержкой.
* Одноклиентских сценариев — один экземпляр Code Assistant на сервер.
* Инструментов командной строки или расширений IDE.

### Пример реализации транспорта STDIO {#stdio-example}

```typescript
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';

const server = new Server({name: 'local-server', version: '1.0.0'});
// Регистрация инструментов...

// Использование транспорта STDIO
const transport = new StdioServerTransport(server);
transport.listen();
```

## Транспорт Streamable HTTP {#streamable-http}

Streamable HTTP — это современный стандарт для удаленной связи MCP-серверов, заменяющий устаревший транспорт HTTP+SSE. Он работает через HTTP/HTTPS и позволяет более гибко реализовывать серверы.

### Как работает транспорт Streamable HTTP {#how-streamable-http-works}

1. Сервер предоставляет единый HTTP-эндпоинт (MCP-эндпоинт), который поддерживает методы POST и GET.
1. Клиент (Code Assistant) отправляет запросы на этот эндпоинт с использованием HTTP-запроса POST.
1. Сервер обрабатывает запрос и отправляет ответ.
1. Опционально сервер может использовать Server-Sent Events (SSE) для потоковой передачи нескольких сообщений или уведомлений клиенту.

```text
Клиент                             Сервер
   |                                  |
   |---- HTTP POST /mcp_endpoint ---->| (запрос клиента)
   |                                  | (обрабатывает запрос)
   |<--- HTTP Response / SSE Stream --| (ответ сервера / поток)
   |                                  |
```

### Характеристики Streamable HTTP {#streamable-http-characteristics}

* Современный стандарт — предпочтительный метод для новых удаленных MCP-серверов.
* Удаленный доступ — может быть размещен на другом компьютере, отличном от того, на котором запущен Code Assistant.
* Масштабируемость — может обрабатывать несколько клиентских подключений одновременно.
* Протокол — работает через стандартный HTTP/HTTPS.
* Гибкость — поддерживает как простые запросы-ответы, так и продвинутую потоковую передачу.
* Единый эндпоинт — использует один URL для всей связи MCP.
* Аутентификация — могут использоваться стандартные механизмы аутентификации HTTP.

### Пример реализации транспорта Streamable HTTP {#streamable-http-example}

Конфигурация `settings.json`:

```json
"mcp.servers": {
  "StreamableHTTPMCPName": {
    "type": "streamable-http",
    "url": "http://localhost:8080/mcp"
  }
}
```

Для реализации серверной части обратитесь к документации MCP SDK по `StreamableHTTPClientTransport`.

### Обратная совместимость с HTTP+SSE {#stdio-compatibility}

Начиная с версии протокола 2024-11-05 клиенты и серверы могут поддерживать обратную совместимость с устаревшим транспортом HTTP+SSE.

Чтобы поддержать на сервере старых клиентов, продолжайте размещать как SSE-эндпоинт (`/events`), так и POST-эндпоинт (`/message`) старого транспорта, наряду с новым MCP-эндпоинтом, определенным для транспорта Streamable HTTP.

## Транспорт SSE (устаревший) {#sse-transport}

Server-Sent Events (SSE) — это устаревший метод удаленной связи через HTTP/HTTPS. Для новых реализаций **рекомендуется транспорт Streamable HTTP**. SSE остается доступным для совместимости с более старыми MCP-серверами.

### Как работает транспорт SSE {#how-sse-works}

1. Клиент (Code Assistant) подключается к SSE-эндпоинту сервера через HTTP GET-запрос.
1. Устанавливается постоянное соединение, через которое сервер может отправлять события клиенту.
1. Для связи клиент-сервер клиент выполняет HTTP POST-запросы на отдельный эндпоинт.
1. Связь осуществляется через два канала:
    * Поток событий (GET) — обновления от сервера к клиенту.
    * Эндпоинт сообщений (POST) — запросы клиента к серверу.

### Пример реализации транспорта SSE {#sse-http-example}

```typescript
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js';
import express from 'express';

const app = express();
const server = new Server({name: 'remote-server', version: '1.0.0'});
// Регистрация инструментов...

// Использование транспорта SSE
const transport = new SSEServerTransport(server);
app.use('/mcp', transport.requestHandler());
app.listen(3000, () => {
  console.log('MCP server listening on port 3000');
});
```

## Локальное развертывание или хостинг {#local-or-hosting}

Выбор между транспортами STDIO и SSE напрямую влияет на то, как вы будете развертывать и управлять вашими MCP-серверами.

### Локальное развертывание STDIO {#stdio-local-deployment}

Серверы STDIO работают локально на том же компьютере, что и Code Assistant. Это имеет несколько важных последствий:
* Установка — исполняемый файл сервера должен быть установлен на каждом компьютере пользователя.
* Дистрибуция — необходимо предоставлять установочные пакеты для разных операционных систем.
* Обновления — каждую инсталляцию нужно обновлять отдельно.
* Ресурсы — используются ресурсы локального компьютера (CPU, RAM, диск).
* Контроль доступа — использование разрешений на действия с файлами в операционной системе локального компьютера.
* Интеграция — простая интеграция с локальными системными ресурсами (файлы, процессы).
* Исполнение — запускается и останавливается вместе с Code Assistant (жизненный цикл дочернего процесса).
* Зависимости — все зависимости должны быть установлены на компьютере пользователя.

#### Практический пример {#stdio-installation-example}

Инструмент локального поиска файлов с использованием STDIO будет:
* Работать на компьютере пользователя.
* Иметь прямой доступ к локальной файловой системе.
* Запускаться по запросу Code Assistant.
* Не требовать настройки сети.
* Требовать установки вместе с Code Assistant или через менеджер пакетов.

### Хостинг Streamable HTTP или SSE {#sse-hosting}

Streamable HTTP (рекомендуется) и устаревшие серверы SSE могут быть развернуты на удаленных серверах и доступны через сеть:
* Установка — устанавливается один раз на сервере, который доступен для многих пользователей.
* Дистрибуция — одно развертывание обслуживает нескольких клиентов.
* Обновления — централизованные обновления сразу влияют на всех пользователей.
* Ресурсы — используются ресурсы сервера, а не локальных компьютеров.
* Контроль доступа — управляется через системы аутентификации и авторизации.
* Интеграция — более сложная интеграция с пользовательскими ресурсами.
* Исполнение — работает как независимая служба (часто непрерывно).
* Зависимости — управляются на сервере, а не на компьютерах пользователей.

#### Практический пример {#sse-installation-example}

Инструмент запросов к базе данных с использованием SSE будет:
* Работать на центральном сервере.
* Подключаться к базам данных с серверными учетными данными.
* Быть постоянно доступным для нескольких пользователей.
* Требовать правильной настройки сетевой безопасности.
* Развертываться с использованием контейнерных или облачных технологий.

### Гибридные подходы {#hybrid-approaches}

Некоторые сценарии выигрывают от гибридного подхода:
* STDIO с сетевым доступом — локальный сервер STDIO, который действует как прокси для удаленных сервисов.
* SSE с локальными командами — удаленный сервер SSE, который может запускать операции на клиентском компьютере через обратные вызовы.
* Шаблон шлюза — серверы STDIO для локальных операций, которые подключаются к серверам SSE для специализированных функций.

## Выбор типа транспорта {#choosing-between-transports}

| Параметр | STDIO | Streamable HTTP | SSE (устаревший) |
| --- | --- | --- | --- |
| Расположение | Локально | Локально или удаленно | Локально или удаленно |
| Количество клиентов | Один | Несколько | Несколько |
| Производительность | Низкая задержка | Более высокая задержка (сетевые накладные расходы) | Более высокая задержка (сетевые накладные расходы) |
| Сложность настройки | Просто | Сложно (требуется HTTP-сервер) | Сложно (требуется HTTP-сервер, опционально два эндпоинта) |
| Безопасность | Внутренне безопасен | Требуются явные меры безопасности | Требуются явные меры безопасности |
| Сетевой доступ | Не требуется | Требуется | Требуется |
| Масштабируемость | Ограничена локальным компьютером | Может распределяться по сети | Может распределяться по сети |
| Рекомендация | Идеально для локальных инструментов | Современный стандарт для всех новых серверов | Для существующих старых серверов |

#### Полезные ссылки {#see-also}

* [Что такое MCP](https://sourcecraft.dev/portal/docs/ru/code-assistant/operations/agent/mcp/what-is-mcp.md)
* [Обзор MCP](https://sourcecraft.dev/portal/docs/ru/code-assistant/operations/agent/mcp/overview.md)
* [MCP в плагине Code Assistant для VS Code](https://sourcecraft.dev/portal/docs/ru/code-assistant/operations/agent/mcp/using-mcp-in-ca.md)
* [Работа с MCP-сервером SourceCraft](https://sourcecraft.dev/portal/docs/ru/code-assistant/operations/agent/mcp/work-with-mcp.md)
* [Отличия MCP и REST API](https://sourcecraft.dev/portal/docs/ru/code-assistant/operations/agent/mcp/mcp-vs-api.md)
* [MCP-серверы SourceCraft и Yandex Cloud](https://sourcecraft.dev/portal/docs/ru/code-assistant/operations/agent/mcp/recommended-mcp-servers.md)
