MCPのSwift・PHP・Kotlin SDKは今どこまで使えるか
MCP公式SDKのうちTier 3の3言語(Swift・PHP・Kotlin)の実装範囲とバージョンを、リリース日やREADMEの記述から具体的に比べます。
Swift・PHP・KotlinのMCP SDKは何が違うか
MCPの公式SDKは10言語に提供されており、Swift・PHP・KotlinはいずれもTier 3(実験的、または部分実装)に分類されています。ただし3言語の実態は一様ではありません。Tierの数字だけでは、どの仕様バージョンに対応し、どれくらいの頻度で更新されるかまでは分かりません。
3言語に共通するのは、パッケージのバージョンがまだ1.0に届いていない点です。Swiftは0.12系、PHPは0.8系、Kotlinは0.15系です。Tierの基準ページはStable Releaseを、-alphaや-betaなどの識別子が付かない1.0.0以上のバージョンと例示しています。Tier 3ではこの安定版が不要で、Tier 2に上がるには最低1回の安定版が要ります。
Tierの判定基準そのものはMCP SDK Tierシステムとはで扱っています。この記事では3言語の中身を、バージョン・対応環境・仕様追従・更新の動きから比べます。
3言語のスペック早見表
| 項目 | Swift | PHP | Kotlin |
|---|---|---|---|
| 最新バージョン | Swift0.12.1 | PHP0.8.1 | Kotlin0.15.0 |
| 対応環境 | SwiftApple各OS、Linux(glibc/musl) | PHPPHP(Composer) | KotlinJVM・Native・JS・Wasm |
| 最小要件 | SwiftSwift 6.0+(Xcode 16+) | PHPPHP 8.1+ | KotlinKotlin 2.2+、JVMは11+ |
| 書き方 | Swiftasync/awaitベースのAPI | PHPPHP 8のAttribute(#[McpTool]) | Kotlinコルーチンベース |
| 主なトランスポート | Swiftstdio・Streamable HTTP・HTTPサーバー2種 | PHPSTDIO・HTTP | Kotlinstdio・Streamable HTTP・SSE・WebSocket |
最新バージョンはGitHubのタグとPackagistの公開情報にもとづく値です。更新が速いので、実装前に各パッケージマネージャー(Swift Package Manager・Packagist・Maven Central)で最新値を引き直してください。
更新の動きを日付で並べると何が見えるか
同じTier 3でも、リリースの間隔はかなり違います。GitHubのタグとPackagistに載っている日付を並べると、直近のリリースは次のとおりです。
3言語の直近リリース日
- 2026年4月29日Swift 0.12.1
Swiftの最新タグです。0.11.0は2026年2月19日、0.12.0は2026年3月24日でした。
- 2026年7月28日Kotlin 0.15.0
0.12.0が2026年4月29日、0.13.0が6月2日、0.14.0が6月30日と、約1か月おきに出ています。
- 2026年8月29日PHP 0.8.1
0.8.0は2026年8月24日、0.7.1は8月10日、0.7.0は7月14日です。初版の0.1.0は2025年11月20日でした。
PHPはPackagist上で12バージョンが並びます。一方、Swiftの最新タグ0.12.1は、READMEが「latest」と呼ぶ仕様2025-11-25の時代のものです。READMEの導入例もfrom: "0.11.0"のままで、最新タグより1つ古い値になっています。更新の動きが速いのはPHPとKotlin、間隔が空いているのはSwiftです。
自分の状況ならどの言語を選ぶか
状況別の選び方
Swift
Apple製アプリにMCPクライアントやサーバーを組み込む場合の選択肢です。認証まわりの記述が厚いのも特徴です。
PHP
SymfonyやCakePHP、Drupalなどの上にMCPサーバーを足す場合に向きます。Attributeを付けるだけで公開できます。
Kotlin
JVMを中心に、Native・JS・Wasmも1つのコードベースで狙う場合に向きます。トランスポートは4種類から選べます。
Swift SDK — Appleプラットフォーム前提の実装
Swift SDKはSwift 6.0以上(Xcode 16以上)を要求します。対応プラットフォームはmacOS 13以降・iOS/Mac Catalyst 16以降・watchOS 9以降・tvOS 16以降・visionOS 1.0以降です。加えて、glibcまたはmuslベースのLinux(Ubuntu・Debian・Fedora・Alpineが名指しされています)にも対応します。
ただし同じREADMEの中で、トランスポート別の対応欄は少し食い違います。プラットフォーム表はmuslを含めていますが、StdioTransportの対応欄は「Apple platforms, Linux with glibc」です。Alpineのようなmusl環境でstdioのサーバーを作るなら、この対応欄を個別に見る必要があります。HTTP系のトランスポートは「All platforms with Foundation」と書かれています。
サーバー側のHTTPトランスポートは2種類です。StatelessHTTPServerTransportはセッション管理もSSEストリーミングもない単純なリクエスト・レスポンス型で、サーバーレスやエッジ関数向けと説明されています。StatefulHTTPServerTransportは、セッション管理とSSEによるサーバーからの通知を備えます。ほかにテスト用のインメモリ、Apple専用のNetwork frameworkを使うトランスポートもあります。
認証は厚く書かれています。OAuth 2.1ベースの認可コードフロー・クライアント資格情報フロー・カスタムトークンプロバイダーまでが、READMEで説明されています。elicitation(サーバーからユーザーへの構造化入力の依頼)も、クライアント側のハンドラーとサーバー側のrequestElicitationの両方が載っています。OAuthのようなURL型のelicitationには、専用のオーバーロードがあります。
対応する仕様バージョンは、READMEが「latest」と呼ぶ2025-11-25です。最新の2026-07-28版ではなく、トランスポート説明の一部には2025-06-18版の仕様ページへのリンクも残っています。最新仕様の機能を前提にする実装では、対応状況を個別に確かめる必要があります。
PHP SDK — Symfonyの設計思想を引き継いだ若いSDK
PHP SDKはPHP FoundationとSymfonyプロジェクトの協業で開発され、Symfonyのコーディング規約と後方互換性ポリシーを踏襲しています。最初のメジャーリリースまでは、Symfonyの方針でいう「experimental」の扱いです。計画はリポジトリ内のROADMAP.mdにまとめられています。
要求バージョンはPHP 8.1以上です。実装はPHP 8のAttributeが中心になります。メソッドに#[McpTool]を、リソースには#[McpResource(uri: "...")]を付けると、Server::builder()->setDiscovery(...)がディレクトリ内のクラスを自動検出して、サーバーの機能として公開します。
周辺エコシステムはすでに動き始めています。READMEの一覧には、API PlatformのMCP統合、DrupalのMCPサーバーモジュール、CakePHPプラグインが載っています。KirbyのMCPサーバー、Netteのインスペクター、Symfony向けのAIアシスタントMCPサーバーとバンドルも並びます。「実験的」という一語だけで見送ると、フレームワーク側の実装が先に進んでいる点を見落とします。
PHP SDKは、2026-07-28の改訂にあたるステートレス方式と、それ以前のinitializeハンドシェイク方式の両方を提供します。ハンドシェイク世代のサーバーは、クライアントが2026-07-28を名指ししてきたとき、最新のハンドシェイク世代の版を代案として返します。代案は拒否ではありません。続けるか切るかは、クライアントが決めます。
適合性テスト(Conformance Tests)の結果は、READMEにサーバー・クライアント別、仕様バージョン別のバッジで載ります。計測は週次です。2026-07-28向けの数値はテストフレームワークのalpha版に対して走らせているため、上流が新しいシナリオを出すたびに動きます。Swift・KotlinのREADMEに、同種のバッジはありません。
Kotlin SDK — Kotlin Multiplatformで4ターゲット
KotlinはKotlin Multiplatformを採用し、JVM・Native・JS・Wasmを単一のコードベースで狙います。必要なKotlinは2.2以上、JVMは11以上です。アーティファクトは3つに分かれています。
io.modelcontextprotocol:kotlin-sdk— クライアントとサーバーを含む統合版(umbrella)io.modelcontextprotocol:kotlin-sdk-client— クライアント専用io.modelcontextprotocol:kotlin-sdk-server— サーバー専用
機能面では、サーバー側のprompts・resources・tools・completion・logging・paginationがREADMEで説明されています。クライアント側はrootsとsamplingです。対応トランスポートはstdio・Streamable HTTP・SSE・WebSocketの4種です。Streamable HTTPには、セッションを持つmcpStreamableHttp()と、持たないmcpStatelessStreamableHttp()のヘルパーが用意されています。
elicitationはクライアント機能として一覧表に載っていますが、READMEの該当節は「TODO: add elicitation section」というコメントだけで、本文がありません。使う前に、サンプルコードやソースを直接読む前提になります。Tier 3にはドキュメントの最低ラインがないため、これは規定違反ではありません。
つまずきやすい点が2つあります。1つ目は、Ktorのエンジン依存を自分で足す点です。READMEは「エンジン依存を推移的には追加しない」と書いており、クライアントならktor-client-cio、サーバーならktor-server-nettyを例にしています。2つ目は、mcpStreamableHttp()などのヘルパーがContentNegotiationとMcpJsonを自動で入れる点です。自分でも入れると警告が出ます。
ブラウザベースのクライアントから接続する場合は、KtorのCORSプラグインも必要です。MCP Inspectorで試すときが典型で、READMEは、MCP固有のヘッダーを許可・公開する設定を求めています。
導入コマンドの違い
3言語ともパッケージマネージャーからの導入は数行で済みますが、作法は言語ごとに違います。
Swiftはパッケージマネージャーで依存を宣言する方式です。
dependencies: [
.package(url: "https://github.com/modelcontextprotocol/swift-sdk.git", from: "0.12.1")
]PHPはComposerでインストールし、Attributeを付けたクラスをそのままサーバーとして起動します。
composer require mcp/sdkKotlinはMaven Centralのアーティファクトをビルドスクリプトに追加します。サーバー専用を選ぶ場合は、Ktorのエンジンも合わせて宣言します。
dependencies {
implementation("io.modelcontextprotocol:kotlin-sdk-server:$mcpVersion")
implementation("io.ktor:ktor-server-netty:$ktorVersion") // エンジンは利用側で選ぶ
}Claude Codeから見て何が変わるか
Claude Codeは、接続先のMCPサーバーがどの言語のSDKで書かれているかを意識しません。stdioまたはHTTPのトランスポートでJSON-RPCメッセージを正しくやり取りできれば、Tier 3のSDKで書かれたサーバーにも通常どおり接続できます。判断が要るのは、サーバーを自分で実装する側です。
その判断では、Tierの数字よりも、READMEに書かれた対応仕様・最小言語バージョン・トランスポートの対応欄のほうが手戻りを減らします。TypeScriptとPythonでの実装手順はMCPサーバー自作ガイド、Goで書く場合はGoでMCPサーバーを書く公式SDKの使い方にあります。
Tier 2に上がるには何が要るか
Tier 3の3言語が上のTierへ進むための条件を、基準ページは次のように挙げています。
- 適合性テストの合格率が80%以上(Tier 3は下限なし)
- 安定版を最低1回公開する
- コア機能を扱う基本的なドキュメントを備える
- 依存の更新方針と、Tier 1に向けた計画(またはTier 2に留まる理由の説明)を公開する
昇格は、SDKの保守者が根拠を添えてissueを立て、SDK Working Groupの承認を受ける流れです。逆にTier 2のSDKは、最新の安定版に対する適合性テストの20%超が4週間続けて落ちるとTier 3に降格されます。
まとめ
Swiftは仕様2025-11-25で止まり、リリースの間隔も空いています。PHPは2026-07-28と従来方式の両対応で更新も頻繁です。Kotlinは月次で更新される一方、elicitationの説明がまだありません。最新仕様の機能が要る実装なら、PHPかKotlinから当たるという順序になります。Java・C#・Goを含む10言語全体のTier一覧はMCP SDK Tierシステムとはにあります。