Swift SDK
Официальный Swift SDK для MCP, выпуск 0.12.1 - работает только в эпохе Legacy до редакции 2025-11-25, новых изменений в ветке main после выпуска нет
сверено с выпуском 0.12.1 4 октября 2026
Что это
Заголовок раздела «Что это»В README выпуска пакет назван «Official Swift SDK for the Model Context Protocol». Он содержит и клиента, и сервер.
В списке официальных SDK у Swift третий уровень (Tier 3). По правилам уровней третий уровень - это экспериментальные, частично реализованные или специализированные SDK. Минимальных требований по прохождению тестов соответствия для него нет.
Кто сопровождает SDK, ни README, ни список официальных SDK не говорят.
Выпуск и установка
Заголовок раздела «Выпуск и установка»Проверенный выпуск - 0.12.1, опубликован на GitHub 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 |
dependencies: [ .package(url: "https://github.com/modelcontextprotocol/swift-sdk.git", from: "0.11.0")].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 четыре редакции: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05. Все они относятся к эпохе Legacy. README говорит то же: SDK реализует клиента и сервер по редакции 2025-11-25.
Строк 2026-07-28 и server/discover в исходном коде и README выпуска нет.
Что клиент отправляет по умолчанию
Заголовок раздела «Что клиент отправляет по умолчанию»По коду 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 |
Минимальный сервер
Заголовок раздела «Минимальный сервер»import MCP
// Create a server with given capabilitieslet 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 serverlet 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.
Минимальный клиент
Заголовок раздела «Минимальный клиент»import MCP
// Initialize the clientlet client = Client(name: "MyApp", version: "1.0.0")
// Create a transport and connectlet transport = StdioTransport()let result = try await client.connect(transport: transport)
// Check server capabilitiesif 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
Заголовок раздела «Выпуск и ветка 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 - сравнение официальных SDK по эпохам.
- Редакции и версии - чем Modern отличается от Legacy.
- Две эпохи на одном сервере - как сервер старой эпохи сосуществует с новыми клиентами.
- Устаревшие функции - сроки для Roots, Sampling, Logging и HTTP+SSE.