# Swift SDK

> Официальный Swift SDK для MCP, выпуск 0.12.1 - работает только в эпохе Legacy до редакции 2025-11-25, новых изменений в ветке main после выпуска нет

Страница: https://mcpdoc.ru/sdk/swift/
Указатель сайта: https://mcpdoc.ru/llms.txt

Swift SDK - официальный SDK третьего уровня (Tier 3). Выпуск 0.12.1 понимает редакции до `2025-11-25` включительно и работает только через рукопожатие `initialize`. Редакции `2026-07-28` в нём нет. Ветка `main` на 4 октября 2026 указывает на то же изменение, что и метка выпуска: неопубликованной работы над новой редакцией в ней нет.

сверено с выпуском 0.12.1 4 октября 2026

Совместимость Legacy редакция 2025-11-25 и старше: рукопожатие initialize и сессии

- **Проверенная версия:** 0.12.1, выпуск от 2026-05-07

- **Новейшая поддерживаемая редакция:** 2025-11-25

- **С сервером только Modern:** не работает

- **С сервером только Legacy:** работает

- **Переход на старую редакцию:** нет

- **Использует устаревшее:** Roots, Sampling, Logging, динамическая регистрация клиента (DCR)

- **Сохраняет удалённое в редакции 2026-07-28:** сессии, рукопожатие initialize

- **Расширение Tasks:** нет

- **Расширение MCP Apps:** нет

- **Проверено:** 2026-10-04

- **Источник:** [github.com](https://github.com/modelcontextprotocol/swift-sdk/releases/tag/0.12.1)

## Что это

В [README выпуска](https://github.com/modelcontextprotocol/swift-sdk/blob/0.12.1/README.md) пакет назван «Official Swift SDK for the Model Context Protocol». Он содержит и клиента, и сервер.

В [списке официальных SDK](https://modelcontextprotocol.io/docs/sdk) у Swift третий уровень (Tier 3). По [правилам уровней](https://modelcontextprotocol.io/community/sdk-tiers) третий уровень - это экспериментальные, частично реализованные или специализированные SDK. Минимальных требований по прохождению тестов соответствия для него нет.

Кто сопровождает SDK, ни README, ни список официальных SDK не говорят.

## Выпуск и установка

Проверенный выпуск - 0.12.1, [опубликован на GitHub](https://github.com/modelcontextprotocol/swift-sdk/releases/tag/0.12.1) 7 мая 2026. Отдельного реестра у пакетов Swift нет: пакет подключается по адресу репозитория и метке. Предварительных выпусков нет, линия одна - 0.x.

По README нужен Swift 6.0 или новее (Xcode 16 или новее).

| Платформа | Минимальная версия |
|---|---|
| macOS | 13.0 |
| iOS и Mac Catalyst | 16.0 |
| watchOS | 9.0 |
| tvOS | 16.0 |
| visionOS | 1.0 |
| Linux | дистрибутивы с `glibc` или `musl` |

```swift title="Package.swift"
dependencies: [
    .package(url: "https://github.com/modelcontextprotocol/swift-sdk.git", from: "0.11.0")
]
```

```swift title="Package.swift, зависимость цели"
.target(
    name: "YourTarget",
    dependencies: [
        .product(name: "MCP", package: "swift-sdk")
    ]
)
```

Пример взят из документации выпуска 0.12.1 и здесь не запускался.

В README выпуска 0.12.1 нижняя граница записана как `from: "0.11.0"`. Такое условие допускает и 0.12.1. README там же предупреждает: до версии 1.0 выпуск с новым вторым числом может ломать совместимость.

## Какие редакции понимает выпуск

В файле [`Versioning.swift`](https://github.com/modelcontextprotocol/swift-sdk/blob/0.12.1/Sources/MCP/Base/Versioning.swift) четыре редакции: `2025-11-25`, `2025-06-18`, `2025-03-26`, `2024-11-05`. Все они относятся к эпохе Legacy. README говорит то же: SDK реализует клиента и сервер по редакции `2025-11-25`.

Строк `2026-07-28` и `server/discover` в исходном коде и README выпуска нет.

Клиент, собранный на выпуске 0.12.1, не сможет работать с сервером, который понимает только Modern: такой сервер не отвечает на `initialize`. Сервер, собранный на 0.12.1, не сможет обслужить клиента, который понимает только Modern: такой клиент не начинает с `initialize`. Связь возможна, если другая сторона поддерживает обе эпохи.

## Что клиент отправляет по умолчанию

По коду [`Client.swift`](https://github.com/modelcontextprotocol/swift-sdk/blob/0.12.1/Sources/MCP/Client/Client.swift) вызов `client.connect(transport:)` сам отправляет `initialize` с версией `Version.latest`, то есть `2025-11-25`. Метод возвращает результат рукопожатия, по нему можно проверить возможности сервера.

Авторизация у клиента выключена, пока вы не передадите `OAuthAuthorizer` в `HTTPClientTransport(authorizer:)`.

## Что принимает сервер

По тому же файлу `Versioning.swift` сервер отвечает версией, которую попросил клиент, если она есть в списке. Если нет, сервер отвечает самой новой из своих, то есть `2025-11-25`.

Встроенные транспорты из README выпуска:

| Транспорт | Что о нём сказано в README |
|---|---|
| `StdioTransport` | stdio; платформы Apple и Linux с `glibc` |
| `HTTPClientTransport` | клиент Streamable HTTP |
| `StatelessHTTPServerTransport` | сервер HTTP «запрос - ответ», без сеансов и без потока SSE |
| `StatefulHTTPServerTransport` | сервер HTTP с сеансами и потоком SSE для сообщений от сервера |
| `InMemoryTransport` | связь внутри одного процесса, для тестов |
| `NetworkTransport` | свой транспорт на Network framework, только платформы Apple |

`StatelessHTTPServerTransport` - сервер без сеансов внутри старой эпохи. Версию протокола он проверяет по тому же списку из четырёх редакций Legacy. К жизненному циклу без состояния из редакции `2026-07-28` он не относится.

## Минимальный сервер

```swift title="Сервер на stdio"
import MCP

// Create a server with given capabilities
let server = Server(
    name: "MyModelServer",
    version: "1.0.0",
    capabilities: .init(
        completions: .init(),
        logging: .init(),
        prompts: .init(listChanged: true),
        resources: .init(subscribe: true, listChanged: true),
        tools: .init(listChanged: true)
    )
)

// Create transport and start server
let transport = StdioTransport()
try await server.start(transport: transport)

// Now register handlers for the capabilities you've enabled
```

Пример взят из документации выпуска 0.12.1 и здесь не запускался.

Инструменты регистрируются обработчиками `server.withMethodHandler(ListTools.self)` и `server.withMethodHandler(CallTool.self)`. Полный пример с инструментами есть в разделе «Tools» того же README.

## Минимальный клиент

```swift title="Клиент"
import MCP

// Initialize the client
let client = Client(name: "MyApp", version: "1.0.0")

// Create a transport and connect
let transport = StdioTransport()
let result = try await client.connect(transport: transport)

// Check server capabilities
if result.capabilities.tools != nil {
    // Server supports tools (implicitly including tool calling if the 'tools' capability object is present)
}
```

Пример взят из документации выпуска 0.12.1 и здесь не запускался.

Для удалённого сервера README показывает `HTTPClientTransport(endpoint:streaming:)`.

## Расширения

**Tasks.** В выпуске нет. Строки `tasks/` в исходном коде и README выпуска поиск не нашёл.

**MCP Apps.** В выпуске нет. Строки `io.modelcontextprotocol/ui` в исходном коде и README выпуска поиск не нашёл.

## Устаревшие функции в выпуске

| Функция | Как с ней обходится выпуск 0.12.1 |
|---|---|
| `initialize` | Единственный способ установить связь |
| Сеансы | `StatefulHTTPServerTransport` ведёт сеансы |
| Roots, Sampling, Logging | Описаны в README как рабочие возможности: `client.withRootsHandler`, `client.withSamplingHandler`, `client.setLoggingLevel` |
| Динамическая регистрация клиента (RFC 7591) | Клиент OAuth применяет её «при необходимости» - это третий шаг в разделе «Authentication» README |
| HTTP+SSE из `2024-11-05` | Среди встроенных транспортов в README его нет |

## Выпуск и ветка main

На 4 октября 2026 ветка `main` и метка `0.12.1` указывают на одно и то же изменение `a0ae212`. Оно датировано 29 апреля 2026, выпуск опубликован 7 мая 2026. Более поздних изменений в `main` нет.

Опубликованного плана развития в репозитории на метке выпуска нет. Сроков поддержки `2026-07-28` SDK не называет.

## Что неизвестно

- Будет ли поддержка редакции `2026-07-28` и когда: плана и сроков SDK не публикует.
- Кто сопровождает SDK: README и список официальных SDK этого не говорят.
- Умеет ли `HTTPClientTransport` откатываться на старый транспорт HTTP+SSE при работе со старым сервером: README об этом молчит, код транспорта на этот счёт здесь не разбирался.

## Что читать дальше

- [Все SDK](https://mcpdoc.ru/sdk/) - сравнение официальных SDK по эпохам.
- [Редакции и версии](https://mcpdoc.ru/protocol/versions/) - чем Modern отличается от Legacy.
- [Две эпохи на одном сервере](https://mcpdoc.ru/deployment/dual-era/) - как сервер старой эпохи сосуществует с новыми клиентами.
- [Устаревшие функции](https://mcpdoc.ru/protocol/deprecations/) - сроки для Roots, Sampling, Logging и HTTP+SSE.
