Перейти к содержимому
Выберите тему

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
Package.swift
dependencies: [
.package(url: "https://github.com/modelcontextprotocol/swift-sdk.git", from: "0.11.0")
]
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 четыре редакции: 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
Сервер на 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.

Клиент
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 его нет

На 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 об этом молчит, код транспорта на этот счёт здесь не разбирался.