以下の内容はhttps://mackee.hatenablog.com/entry/2025/05/06/123218より取得しました。


AIコーディングエージェントが自ら開発サーバーを起動しログを見れるMCPを作った

github.com

表題通りなんですけれどこれです。

なぜ作ったか

最近ClineやCopilot Edits Agent modeなどを使用してAIにコードを書かせることが多いんですが、私の使い方では色々と不便が出てきました。

私の使い方というのは、

  • 設計は人間がやってMarkdownを書く
  • プロジェクトの初期セットアップも人間がやる
  • 設計とプロジェクトを読ませて、Memory Bankを作らせる
    • 最近ではMemory Bankとコンテキスト長やコストとの兼ね合いがあり、このやり方が良いのかは疑問がある
  • タスク分解を人間と壁打ちしながら行う
  • そのあとはAuto Approve(Read,Write,Safe Command, MCP)を有効にして自動運転

という感じです。ただ、自動運転中でも変な方向に行ったり、すごくハマっているようであれば、助け舟を出したり、チェックポイントを戻したりタスクを一からやり直させるなどしています。

自動運転をしている以上、デバッグもある程度AIがこなさなければなりません。またAIは人間側に言われないと実装確認をサボりがちです。実装確認というのは自動テストであったり、Webアプリであればブラウザなどを介した確認です。Playwright MCPをインストールしてその能力を持つのにも関わらず、サボりがちです。その一つとして、彼らは開発サーバーを起動する手段を持たないからでは無いか、というのが私の仮説です。

Clineなどのコーディングエージェントはコマンドをシェル経由で実行するツールを持っています。しかしこれらのツールは、エージェントがコマンドを実行し、コマンドが終了するまで待った上で、標準出力をエージェントに返します。つまり、vite devrails sのような長い時間実行するコマンドはClineやClaude Codeでは終了するまで待機していまいます。

そこでエージェントは人間に別のシェルで手動実行するように頼んでくることがあります。これでホットリロードの効いた開発サーバーで動作確認を行うようなユースケースでは解決できたように見えます。しかし、サーバーがエラーをログに出力しているケースでは、それをエージェントが見ることができません。当てずっぽうに修正を行ったり、人間にログを見るよう依頼をするケースもあります。ワークアラウンドとしては、ログを標準出力ではなくローカルのテキストファイルに出力するテクニックがあります。

ただ、エージェントも人間がやるデバッグ行為と同様、開発サーバーのログを見てやって欲しいと私は思いました。

解決方法

昨今さまざまなものが作られているModel Context Protocolに準拠したサーバーは、AIエージェントにさまざまな道具を与えています。今回は開発サーバーのような長時間実行するようなコマンド実行するMCPサーバーmcp-daemonizeを作成しました。

これは4つのツールをエージェントが使用できるようにします。daemonize_start daemonize_stop daemonize_list daemonize_logsです。

daemonize_startdaemonize_stopはその名の通りプロセスを起動します。このプロセスは注意点としてシェルを介しません。なので、シェル実行と同様の環境で行いたい場合はsh -cのように(エージェントが)指定する必要があります。またworkdirを指定する引数を必須にしています。これにより明示的にコマンドが起動すべき場所をエージェントが指定するようになってトラブルが避けられるようになってます。この辺りは私が他のMCPを使用する上でcurrent directoryを指定するような引数が欲しいと思ったので、このようになっているのと、エージェントが都度指定した方がうまくいくことが多いと開発中に経験したからこうなっています。

daemonize_listは起動中にプロセスのリストです。そして、実は最も重要な機能であると私が考えているのはdaemonize_logsです。人間はデバッグのために開発サーバーのログを参照することが多々あります。この能力をエージェントにも付与するものです。tail引数が必須になっており末尾何行かをとってくるようになっています。現在はログがオンメモリで保持され、1024行で切り捨てられるようになっています。

まとめ

まだこのサーバーを本格的に投入していないのでどうなるかわからんのですが、皆さんも使ってみてフィードバックしていただいたり、パッチも送っていただけると助かります。ちなみにコードはほとんどを私が自ら書き、プロセス管理周りだけ少しチャット上のAIと話して相談したぐらいです。しかしドキュメントとテストはAIにやってもらいました。

以上です。




以上の内容はhttps://mackee.hatenablog.com/entry/2025/05/06/123218より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14