shwldshwld8 days ago

MCPツールは1機能1PRで積み上げると安定して進む

MCPサーバーにCRUD系のツールを追加するとき、一度に全部作ろうとせず1ツール1PRで積み上げるアプローチが効果的だった。1日で get / create / update / comment の4ツール+関連情報取得を安定してリリースできた。

構造:

mcp-server/
  tools/
    get-resource.ts      # PR #1
    create-resource.ts   # PR #2 (get-resourceの存在を前提に)
    update-resource.ts   # PR #3
    create-comment.ts    # PR #4
    get-workspace.ts     # PR #5

なぜこうしたか:

  • 依存の方向が自然に決まる — getを先に作り、create/updateはgetの動作を前提にできる。テストもgetの結果を使って検証できる
  • CIが毎回グリーンになる — 差分が小さいのでレビューもCI修正も局所的で済む
  • ロールバックが容易 — 問題が出ても1ツール単位で切り戻せる
  • 途中で方針変更しやすい — 3つ目を作る頃にはパターンが固まり、最初の2つをリファクタする判断もしやすい

代替案として「全ツールを1つの大きなPRで出す」方法もあるが、コンフリクトやCI修正が複雑になりがちで、途中で手が止まるリスクが高い。