GitHub Copilot Agent対応のPHP用MCPサーバーを作ってみた

はじめに
最近、AI エージェントと開発者ツールを繋ぐ Model Context Protocol (MCP) という仕組みが注目されています。GitHub Copilot Agent をはじめとする LLM エージェントが、開発者のコードベースを理解し、より良いサポートを提供するためのプロトコルです。
今回、既存の PHP クラス図生成ツール php-class-diagram を MCP サーバーとしてラップし、GitHub Copilot Agent などの AI エージェントから直接利用できるようにしました。
作ったもの
php-class-diagram-mcp は、PHP プロジェクトのクラス構造を解析し、PlantUML 形式のクラス図スクリプトを生成する MCP サーバーです。
目標(目指したところ)
php-class-diagram の出力は、PlantUMLのクラス図スクリプトです。このスクリプトはクラスの静的な継承関係だけでなく、クラスの依存関係の情報も含んでいます。LLMエージェントにとってもクラス図を作るため以外にも利用価値があると考えています。
そのため、明示的にこのMCPサーバーを使うようにプロンプトで指示されていない場合でも、LLMエージェントの判断でPlantUMLのクラス図スクリプトを出力して、別の目的(依存関係の調査等)に使って欲しいと思っています。
これが、やってみるとなかなか難しいことのようでした。MCPサーバー側の manifest.json
で概要説明を詳細に記述したり、GitHub Copilot Agent 側の settings.json
でinputs
の記載を行なうなど、いろいろ工夫を試してみましたが、効果は限定的だったようです。
実際の使用例
インストール
PHPの実行環境は既にある前提です。リポジトリをクローンして、依存関係のパッケージをインストールすれば完了です。
# Clone this repository
git clone https://github.com/smeghead/php-class-diagram-mcp.git php-class-diagram-mcp
cd php-class-diagram-mcp
# Install dependencies (including php-class-diagram)
composer install
GitHub Copilot Agent での利用
私は、GitHub Copilot Agent を使っているので、GitHub Copilot Agent の例です。settings.json
に以下を追加します。
{
"mcp": {
"inputs": [
{
"name": "auto-php-analysis",
"description": "Automatically use php-class-diagram MCP server for PHP code analysis tasks",
"trigger": ["php", "class", "dependency", "diagram", "structure"]
}
],
"servers": {
"php-class-diagram": {
"command": "php",
"args": ["/path/to/php-class-diagram-mcp/bin/handler.php"],
"env": {}
}
}
}
}
エージェントでの活用シーン(願望を含みます)
- クラス図作成: 「srcディレクトリ配下のPlantUMLのクラス図スクリプトを出力して」
- コードレビュー: 「このPRでのクラス関係を図示して」
- リファクタリング支援: 「大きすぎるUserクラスの分割方法を提案して」
- アーキテクチャ分析: 「SOLIDの原則に違反している箇所を特定して」
- 影響度分析: 「このインターフェースを変更すると影響を受けるクラスは?」
このような、プロンプトを受け取ったLLMエージェントが、自律的にこのMCPサーバーを利用して動作するようにしたいです。他に工夫できる箇所があるんでしょうか?
まとめ
GitHub Copilot Agent をはじめとする AI エージェントとの連携プロトコルであるMCPは今後ますます利用が拡大するでしょう。今回の経験が、他の開発者の方々の参考になれば幸いです。
また、Claude Code 等で利用して問題があった場合、https://github.com/smeghead/php-class-diagram-mcp のIssue等で連絡いただけると嬉しいです。
リポジトリ
php-class-diagram を呼び出すMCPサーバー
元になったPlantUMLのクラス図スクリプト生成ツール