modelcontextprotocol/php-sdk
The official PHP SDK for Model Context Protocol servers and clients. Maintained in collaboration with The PHP Foundation.
MCP PHP SDK – クイック概要
概要 – Model Context Protocol(MCP)サーバーとクライアントを記述できるファーストパーティPHPライブラリです。MCPは、ツール、リソース、プロンプトなどのAI関連機能をLLMに公開するためのプロトコルです(「関数呼び出し」を思い浮かべてください。ただし、フレームワークに依存しません)。SDKは、SymfonyやLaravelなどのフレームワークを問わず、あらゆるPHPコードベースで動作します。
主なコンポーネント
- サーバービルダー –
#[McpTool]属性と#[McpResource]属性を持つプレーンなPHPクラスを、MCP準拠のサーバーに変換します。 - トランスポート – STDIO(ローカルプロセス用)またはHTTPで通信します。トランスポート層はプラグイン可能です。
- クライアントAPI – ツールの検出、呼び出し、サーバー開始要求の処理、セッション/認証の管理を行います。
- プロトコル世代 – 従来の
initializeハンドシェイクと、新しいステートレスリビジョン2026-07-28の両方をサポートします。 - 適合性テスト – 公式のMCP適合性テストフレームワークに対する毎週のCI実行を行い、バッジで現在の合格率を表示します。
インストール
composer require mcp/sdk
自動検出機能を使用する場合は、symfony/finderも必要です。
始め方
- サーバー – クラスを記述し、メソッドに
#[McpTool](関数)または#[McpResource](データ)を注釈してから、ビルダーを実行します:exit(Server::builder() ->setServerInfo('Calculator', '1.0.0') ->setDiscovery(__DIR__, ['.'], excludeDirs: ['vendor']) ->build() ->run(new StdioTransport())); - クライアント – クライアントを構築し、STDIOまたはHTTPで接続し、ツールを一覧表示し、ツールを呼び出してから切断します:
$client = Client::builder() ->setClientInfo('My App', '1.0.0') ->build(); $client->connect(new StdioTransport(command: 'php', args: ['/path/to/server.php'])); $result = $client->callTool('add', ['a'=>5,'b'=>3]); $client->disconnect();
ドキュメントと例 – 完全なドキュメントはhttps://php.sdk.modelcontextprotocol.ioにあります。入門、サーバー内部、トランスポート、プロトコルバージョン、高度な拡張機能、APIリファレンスのセクションがあります。サンプルプロジェクトはリポジトリの*Examples*ページに一覧表示されています。
エコシステム – このSDKに基づくMCP統合を既に提供しているPHPフレームワークがいくつかあります:
- API Platform(
api-platform/mcp) - Kirby CMS(
bnomei/kirby-mcp) - Drupal(
drupal/mcp_server) - CakePHP(
josbeir/cakephp-synapse) - Symfony(
symfony/mcp-bundle、symfony/ai-mate)
コントリビューション – 通常のGitHubワークフローに従ってください:問題を開き、PRを送信し、CIチェックを実行します。このプロジェクトはSymfonyのコーディング標準と後方互換性の約束に従います。
ライセンス – 新しいコントリビューションはApache-2.0、レガシーコードはMITのままです。詳細はLICENSEファイルを参照してください。
結論 – Model Context Protocolを介してLLMにPHPベースの機能(ツール、設定、プロンプトなど)を公開する必要がある場合、MCP PHP SDKは、サーバー側とクライアント側の両方、複数のトランスポート、および活発な適合性テストを備えた、既製の標準準拠の方法を提供します。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト