---
title: "自作MCPツールでデータベースを安全に便利に使う"
slug: "ai-agent-database-mcp-wrapper"
publishedAt: "2026-09-11T12:58:24.343Z"
updatedAt: "2026-09-11T12:58:24.679Z"
tags: ["AIエージェント","MCP","データベース"]
excerpt: "AIエージェントからデータベースを直接操作させるのは怖い。そこで入力スキーマやバリデーション、更新範囲の制限を持つ自作MCPツールを間に挟む。必要な機能はAIに作らせて足していけば、雑な指示でも安全で便利にデータを扱える。"
canonical: "https://ishinao.net/ai-agent-database-mcp-wrapper"
---

自分で管理しているデータベースを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エージェントからかなり雑に、しかも便利に扱えるようになる。
