🈂️
MCPサーバーはPHPでもつくれまぁす!(SDKがないので、案外大変)
モチベーション
- 今後MCPサーバーをつくれないといけない(諸説ある)
- PHPでかけないといけない(主観)
- PHPにはSDKがない(まあ当然か??)
- だれも(シンプルな)PHPでかいてない…参考にならない…
- https://github.com/topics/mcp-server?l=php
- (Laravel…?なぜ…?)
Tips
- ゼロから書くと詰む(AI活用しても永遠に接続や通信エラーが消えない)
- 「SSEは実装できそうだし、STDIOな実装なら楽やろ」からの半日消費
- Python サンプルを順番に参考にした
- 特にライブラリのSDKがないと無理ゲーだった、コピった。
- 「エラーが読みづらすぎる!!!」
- 「デバッグのドキュメントっていうけど、一般論だこれ!!」
- 「デバッグツールがあるっていうけど、テストクエリ発行ツールだこれ!!(プロトコルエラーのことはかんがえてない)」
-
...
で省略され、エラーみにくすぎワロタwww - デバッグサーバーのエラーログに出るエラーログは、まだ読みやすい(これが本当のTipsか)
- 読みやすいといっても、見やすいわけではない…
- まあ、そこはAIにも頼ってもろて…
- 読みやすいといっても、見やすいわけではない…
-
- 初心者はSDKを使える言語をおすすめします
まとめ、展望
- これでPHPerもMCPをつくる参考ができた
- 多分、MCPサーバー部分を分離してPackagistにする
追記 新プロトコルについて
- pushした直後に、プロトコルの更新記事をみかけました!
- https://spec.modelcontextprotocol.io/specification/2025-03-26/
- 青くなりましたが、結論、だいじょうぶそうです
私の把握する範囲
- 新プロトコルは、主にSSE(http通信)についての拡張でした。
- 現在の(STDIOを利用した)コードにはキャンセル通知機能が実装されていませんが、仕様上「optional」と定義されています。
- 同様に、プログレス通知機能も未実装ですが、こちらも仕様上「optional」(オプション)とされています。
- ので、仕様はまだこわれていません(多分)
Discussion