はじめに
以前、TROCCOのMCPを遊びながら作ってみたことについて記事にしました(「MCP初心者がTROCCOのMCPを作って遊んでみた話」)。最近はClaude Codeを無限に使っているので、もっと改善していけそうだということで、大幅なアップデートバージョンを作ってみました。
何を作ったか
今回作成したMCPはGitHubで公開しています。使い方についてはREADME.mdをご覧ください。
以前公開していたのが以下のものなので、見比べていただけると大幅にアップデートされたことが分かります。
ドキュメントが何とも言えないAIっぽさを醸し出しているのは見なかったことにしてください(笑)
今回作成したTROCCO MCPの概要
さて、ツールとして実装しているのは、シンプルに読み取り系のAPIを一通りラップしたものになっています。現時点でAPIとして存在している一覧取得とID指定の詳細取得が全てカバーされています。これらのものは、コーディングエージェントに情報を取得してその後の行動をするにあたり、ベースになるものだと考えています。
一方で、それ以外のものをどのように実装するかは悩んだところがあり、対応していません。以下の記事にあるように、
「APIの変換結果をそのまま公開 ≠ MCP サーバー」
だと思うんですよね。
とはいえ、以前のもので実現していたような、
- データマート定義の設定内容をもとに、その処理内容の概要をメモに書き込んでくれる
みたいなユースケース特化なものは非常に便利だと思いつつ、現在ではAI自体の性能がさらに向上していたり、Claude Codeで言うとメモリファイル、カスタムスラッシュコマンド、Hooksなど、いろいろな拡張の方向があるなかで、MCPにどこまで持たせるべきかが分からなくなってきています。
なので、今回は読み取り系をシンプルに実装したものに限定しています。こういう機能があればいいんだよねというのがあれば、ぜひご要望ください。
どう変わったか
機能的にはシンプルとはいえ、実装としては大幅にアップデートしています。その内容を簡単にご紹介します。
TypeScriptで実装できた
そもそもこれです。前回の作成時がTypeScriptの初めての経験だった私が、かなり拡充してコーディングを進められたのはめちゃくちゃに進展です。Claude code様々です。
ツールごとにコードが分割された
今回のコードでは、IMCPToolでインターフェースを共通化しつつツールごとにコードを分割して実装しています。これによって、コードの保守性/拡張性が大きく進展しています。
この実装にあたっては、LAPRAS公式MCPサーバーのコードを非常に参考にさせていただきました。
参考にしているとはいいつつ、かなり変更を加えている部分もあるので、その点についてはかなりClaude Codeに助けられている部分になります。
テストコードが実装された
前回は遊びがてら作っていたこともあって、全くテストコードが書かれていませんでした。utils部分は前述したLAPRAS公式MCPサーバーの実装を参考にしているとはいえ、ツール部分のテストコードは今回新たに取り組んだ部分になります。
Claude Codeが初期的に生成したものからはかなり修正を加えているとはいえ、こういったコードを拡充していけるのはClaude Codeの助けがあってこそというのは間違いないです。
なお、過去に『単体テストの考え方/使い方』を読んだ経験があったのは非常に役立っているので、基礎知識があってこそというのはそれはそれとしてありますが。
おわりに
Claude Codeのようなコーディングエージェントは、ハイスキルなエンジニアの生産性を大幅に拡充させるツールだと考えています。というのも、優れたエンジニアリングのプロセスを運用できている組織ほどその恩恵を得やすいからです。
コーディングエージェントが効果的に機能するには、AI自体によるイテレーションサイクルが効率的に回る必要があります。そのためには、
- ドメインが上手く分割されていて、コンテキストが局所化されている
- ドキュメントが整備されて、コンテキスト情報として的確に提供できる
- 静的解析で問題点を早期に発見できるようになっている
- テストが十分に設計/実装され、想定外の挙動を検出できるようになっている
といったことが求められますが、これらは優れたエンジニアリングのプラクティスそのものです。
強きものがさらに強くなるのはそれはそれでありつつ、一方でちゃんと一歩ずつ学習を進める人の強力な支援にもなり得るというのが今回感じたことです。
コードを適切に分割して、テストを的確に設計/実装して、テストのカバレッジを観測して、それを新たに学ぶプログラミング言語で習得していくのは普通であればすごく時間のかかることです。
ただ、こういうものを作りたいという目的さえはっきりしていればコードを生成してもらえる現代では、実装されたコードを通して学びを深めることができます。概念的に分かっていたことが、ちゃんと腑に落ちてくるまでのサイクルを大幅に短縮することができるようになります。これはめちゃくちゃにありがたい話ですね。