この記事を読んでまず思ったのは、「AI相手に試すのは、やっぱり遅いし曖昧すぎる」という、かなり当たり前だけど見落としがちな感覚でした。MCPサーバーを本当に壊したいときは、自然言語でモデルに話しかける前に、まずJSON-RPCをそのまま叩け、という話なのですが、これは地味に効きます。モデルが悪いのか、ツール定義が悪いのか、サーバー実装が悪いのかが混ざると、切り分けが一気に難しくなる。そこでAIをいったん脇に置く、という順番が筋が通っています。
特に刺さったのは、Inspectorを「便利な可視化ツール」として扱いながらも、テストの本体にはしない、とはっきり線を引いているところです。GUIでツール一覧を眺めたり、手で1回再現したりするのは楽です。でも、それを回帰テストの代わりにすると途端に弱くなる。クリック操作は再現性が低いし、CIにも載らない。ここをはっきり分けているのがよかったです。現場だと「とりあえずInspectorで見えるからOK」に流れがちなので、そこへの釘刺しに見えました。
もうひとつ面白かったのは、tool descriptions までコードと同じ目線でテストしろ、という考え方です。普段はスキーマだけ気にして、説明文はおまけみたいに扱いがちですが、MCPではモデルが読むのはそこなんですよね。名前、説明、制約、どれも実質的にはAPIの一部だ、という見方はかなり納得感がありました。人間向けのドキュメントというより、挙動を左右する仕様そのものとして扱うべきだと思います。
逆に、少し怖いなとも思ったのは、ここまで厳密に見ないと「モデルが勝手にうまくやってくれる」という期待が簡単に崩れる点です。入力がゆるい、説明が曖昧、出力がでかすぎる。そういう小さな雑さが、そのまま agent の失敗に化ける。MCPはAI向けの仕組みというより、AIが壊しやすい部分を人間側で先に固めるための規約なんだろうな、と思いました。
参考: How to Test and Debug an MCP Server: From the Inspector to Automated Tool Tests