自作MCPツールでデータベースを安全に便利に使う
【読むのに約 2 分】
自分で管理しているデータベースをAIエージェントから操作できるようにすると、かなり便利である。ただ、剥き出しのデータベースをそのまま任せるのは怖すぎる。そこで、自作のMCPツールを間に挟んで使っている。
AIエージェントはコーディングで一番輝くと思うが、データベースの管理運用にもすごく役に立つ。データを探す、条件に合うものをまとめる、内容を直す、不足している情報を追加する。そうした作業を自然言語で頼めるのは便利である。
ここでいうデータベースは、業務用の大きなシステムだけではない。スケジュールもブログの記事も買い物メモも、コンピュータで扱えばデータとして保存され、検索され、更新される。自分がコンピュータ上で管理しているものは、だいたい同じ話になる。
剥き出しのデータベースは任せられない
便利だからといって、AIエージェントへデータベースの接続情報を渡し、自由にSQLを実行させるのはリスキーすぎる。こちらの指示を広く解釈したり、更新条件を間違えたりすれば、想定していないデータまで書き換わる。DELETEを一発間違えれば、便利だったという感想もそこで終わる。
人間が操作しても事故は起きるが、AIエージェントには大量の処理を迷わず一気に実行できる怖さがある。「気をつけて」「余計なものは消さないで」と毎回プロンプトへ書くだけでは、あまり安心できない。
自作MCPをラッパー兼制約管理層にする
そこで、AIエージェントとデータベースの間に自作のMCPツールを噛ませる。AIエージェントが直接SQLを実行するのではなく、MCPツールとして用意した操作だけを呼べるようにする。
MCPツールの入力にはスキーマを定義し、バリデーションを入れる。更新できる項目や対象を絞り、危険な操作は用意しない。AIエージェントが間違った値を渡したり、意図より広い操作をしようとしたりしても、ツール側で止められる。
MCPはデータベースを操作しやすくするラッパーであると同時に、AIエージェントに何を許すかを決める制約管理層になる。自由に何でもできる接続より、できることが限られた専用ツールのほうが、日常的な管理作業には使いやすい。
制約があるから雑に頼める
面白いのは、MCPツール側を厳密にすると、AIエージェントへの依頼はかなり雑でよくなることだ。自然言語の曖昧さを完全になくすことはできない。それでも、最後に実行できる操作と受け付けるデータが制限されていれば、ひどいことにならない範囲へ収められる。
厳密なプロンプトを毎回書くのではなく、危険な要求は通らないツールを一度作る。そのうえで「この条件のデータを直しておいて」くらいの頼み方ができる。安全のための制約が、そのまま普段の使いやすさになる。
必要なMCPツールもAIエージェントに作らせる
最初から万能なMCPツールを設計する必要はない。実際にデータベースを管理していて、新しく頼みたい作業が出てきたら、その操作に必要なMCPツールを追加する。使ってみて危ないところがあれば、バリデーションや確認処理を足す。
MCPツールを作るのはコーディングなので、そこもAIエージェントへ任せられる。必要な操作と守るべき制約を伝え、実装とテストをさせればよい。AIエージェントにデータベースを触らせるための道具を、そのAIエージェント自身に作らせる。
すでにMCPツールが用意されているサービスなら、それをそのまま使えばよい。それで足りなければ、自分がよく使う操作や自分なりの制約を追加する。自分で管理しているデータベースなら、必要な機能だけを持つMCPツールを少しずつ育てていく。
何でもできる権限をAIエージェントへ渡すのではなく、自分が許した操作だけを、安全に実行できるようにする。自作MCPツールを間に置くだけで、データベースはAIエージェントからかなり雑に、しかも便利に扱えるようになる。