🈂️

MCPサーバーはPHPでもつくれまぁす!(SDKがないので、案外大変)

に公開

https://github.com/uzulla/mcp-time-php

モチベーション

  • 今後MCPサーバーをつくれないといけない(諸説ある)
  • PHPでかけないといけない(主観)
  • PHPにはSDKがない(まあ当然か??)
  • だれも(シンプルな)PHPでかいてない…参考にならない…

Tips

  • ゼロから書くと詰む(AI活用しても永遠に接続や通信エラーが消えない)
    • 「SSEは実装できそうだし、STDIOな実装なら楽やろ」からの半日消費
  • Python サンプルを順番に参考にした
  • 特にライブラリのSDKがないと無理ゲーだった、コピった。
  • 「エラーが読みづらすぎる!!!」
  • 「デバッグのドキュメントっていうけど、一般論だこれ!!」
  • 「デバッグツールがあるっていうけど、テストクエリ発行ツールだこれ!!(プロトコルエラーのことはかんがえてない)」
    • ... で省略され、エラーみにくすぎワロタwww
    • デバッグサーバーのエラーログに出るエラーログは、まだ読みやすい(これが本当のTipsか)
      • 読みやすいといっても、見やすいわけではない…
        • まあ、そこはAIにも頼ってもろて…
  • 初心者はSDKを使える言語をおすすめします

まとめ、展望

  • これでPHPerもMCPをつくる参考ができた
  • 多分、MCPサーバー部分を分離してPackagistにする

追記 新プロトコルについて

私の把握する範囲

  • 新プロトコルは、主にSSE(http通信)についての拡張でした。
    • 現在の(STDIOを利用した)コードにはキャンセル通知機能が実装されていませんが、仕様上「optional」と定義されています。
    • 同様に、プログレス通知機能も未実装ですが、こちらも仕様上「optional」(オプション)とされています。
  • ので、仕様はまだこわれていません(多分)

Discussion