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修正が複雑になりがちで、途中で手が止まるリスクが高い。