何をするか
最近、AIコーディングツールの世界で話題になっている「MCP(Model Context Protocol)」という技術があります。 簡単に言うと、AIとデータベースやファイルシステムなどの外部ツールを直接つなぐ「標準規格」です。 今回は、私が普段使っているAIコーディングアシスタント「Antigravity」にMCPを設定して、ローカルのSQLiteデータベースと接続。 「〇〇を追加して」「△△のデータを見せて」と日本語で話しかけるだけでDBを操作する、ということをやってみました。
MCPって何?(1分で分かる概要)
MCPは2024年11月にAnthropic社が発表したオープン標準で、2026年現在、OpenAI、Google、Microsoftなど主要AI企業もサポートしています。 仕組みはこうです:
AIアプリ(Antigravity) → MCPプロトコル → MCPサーバー → 外部ツール(DB、ファイルなど)
「MCPサーバー」というのが橋渡し役で、AIからの「このテーブルの中身を見せて」というリクエストを、実際のSQLクエリに変換して実行してくれるわけです。
MCPを使うと何が嬉しいのか?
一言で言うと、AIが「物知りなアシスタント」から「実務をこなす実行部隊」に進化します。 具体的には、以下の3つのメリットが非常に強力です。
- 外部情報の「取得」ができる
最新のニュース、天気、GitHubのリポジトリ、Google検索の結果など、AIの学習データに含まれていない「リアルタイムの情報」をツール経由で取ってこれます。
- 外部情報の「操作」ができる
単に調べるだけでなく、Slackへの投稿やカレンダー登録、そして今回のメインである「DBの中身を書き換える」といったアクションまでAIが代行してくれます。
- 「自環境のサーバ」とも連携可能
これがエンジニアにとって最大の魅力です。公開されているWebサービスだけでなく、自分が管理しているローカル環境や社内ネットワーク上のサーバ、DBともセキュアに連携させることができます。
手順(AntigravityによるローカルDB連携)
1. MCP設定ファイルを作成する
Antigravityの設定ディレクトリ内のmcp_config.jsonに、使いたいMCPサーバーを書き込みます。 最終的に私が設定したのは以下の3つです。
{
"mcpServers": {
"everything": {
"command": "npx.cmd",
"args": ["-y", "@modelcontextprotocol/server-everything"]
},
"filesystem": {
"command": "npx.cmd",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "プロジェクトパス"]
},
"sqlite": {
"command": "npx.cmd",
"args": ["-y", "mcp-server-sqlite-npx", "DBファイルのパス"]
}
}
}
ポイントは、Node.js(npm/npx)がインストールされていれば、パッケージのインストール作業は不要ということ。npx -yが自動でダウンロード&実行してくれます。
おまけ:より安全なDB接続(環境変数の活用)
1. 設定ファイルへの直書き(ベタ書き)のリスク
PostgreSQLなどのサーバー型DBに接続する際、以下のようにmcp_config.json内に接続用URL(ユーザー名やパスワード)を直接指定することができます。
{
"mcpServers": {
"postgres": {
"command": "npx.cmd",
"args": [
"-y",
"@modelcontextprotocol/server-postgres",
"postgresql://admin_user:MySecretPassword123@localhost:5432/my_database"
]
}
}
}
しかし、上記のようにJSONファイルにパスワードを平文で記述するのは、セキュリティの観点から非常に危険なアンチパターンです。
もし誤って設定ファイルをGitHubなどに公開してしまった場合、データベースが乗っ取られる原因になります。
2. 環境変数を使ったセキュアな設定方法
安全に運用するためには、PC本体の環境変数を利用して接続情報を隠蔽するのがベストプラクティスです。具体的には、mcp_config.jsonからは引数の接続URLを完全に削除します。
{
"mcpServers": {
"postgres": {
"command": "npx.cmd",
"args": [
"-y",
"@modelcontextprotocol/server-postgres"
// ※ここに接続URLやパスワードを書かない!
]
}
}
}
ポイントは、Windowsのシステム環境変数にDATABASE_URLとしてpostgresql://admin_user:MySecretPassword123@localhost:5432/my_databaseをあらかじめ登録しておくこと。そうすれば、設定ファイル上にはパスワード情報が一切残りません。
3. なぜJSONに書いていないのに変数を読み込めるのか?
「JSONに『DATABASE_URLを使え』と書いていないのに、なぜMCPサーバーは勝手に読み込めるの?」と疑問に思うかもしれません。
その答えは、MCPサーバー(@modelcontextprotocol/server-postgresなどのパッケージ)のソースコード自体にあります。パッケージ側は、「もし引数からURLが渡されなかったら、自動的にOSの環境変数からDATABASE_URLを探しに行く」ように初めからプログラミングされています。
つまり、JSONファイルはあくまで最初の起動スイッチにすぎず、起動した裏側でプログラムが勝手にパソコンの環境変数を見に行ってくれる仕様になっているため、JSONにわざわざ書かなくても動作するのです。
(※パッケージごとに探しに行く環境変数の名前は異なるため、事前に公式ドキュメントで確認しておく必要があります!)
ポイントは、Windowsのシステム環境変数にDATABASE_URLとしてpostgresql://user:pass@localhost/dbをあらかじめ登録しておくこと。そうすれば、設定ファイル上にはパスワード情報が一切残りません。
2. 実はここでハマった…パッケージが存在しない!
最初、公式ドキュメントに書いてあった@modelcontextprotocol/server-sqliteというパッケージを設定しました。 ところが、Antigravityの「Manage MCP servers」画面に真っ赤なエラーが。 「404 Not Found」——npmレジストリにパッケージが存在しない、と。 Antigravityに調査してもらったところ、公式GitHubリポジトリでSQLiteサーバーは「アーカイブ(廃止)」されていたことが判明。 公式の情報が古くなっていたわけです。 結局、mcp-server-sqlite-npxという別のNode.js対応パッケージを見つけてテスト。 ターミナルに「SQLite MCP Server running on stdio」と表示され、無事に起動を確認できました。
3. MCPサーバー接続成功!33ツールが利用可能に
設定を書き換えてAntigravityの「Manage MCP servers」画面でRefreshすると…
- everything:14 / 14 ツール ✅
- filesystem:14 / 14 ツール ✅
- sqlite:5 / 5 ツール ✅
合計33ツールがAIから直接使えるようになりました。 SQLiteサーバーが提供するツールは以下の5つです:
create_table — テーブル作成
write_query — INSERT / UPDATE / DELETE の実行
read_query — SELECTクエリの実行
list_tables — テーブル一覧の取得
describe_table — スキーマ情報の取得
4. 自然言語でDBを操作してみた
ここからが本番です。Antigravityのチャットで、普通の日本語でDBを操作していきます。 ■ テーブル作成 Antigravityに「ユーザーテーブルを作って」と伝えただけで、create_tableツールが呼ばれ、id / name / email / age / city / created_at の6カラムのテーブルが自動で作成されました。 ■ データ挿入 5名分のサンプルデータが一括で挿入されます。 さらに「山口達也を追加して」と日本語で伝えると、AIが自動でINSERT文を生成して即座に実行。承認ボタンを押す必要もありません。 ■ データ取得 テーブルの中身を確認してみます。
SELECT * FROM users ORDER BY id
| ID |
名前 |
年齢 |
都市 |
| 1 |
田中太郎 |
28 |
東京 |
| 2 |
鈴木花子 |
34 |
大阪 |
| 3 |
佐藤健 |
23 |
福岡 |
| 4 |
山田美咲 |
31 |
札幌 |
| 5 |
高橋翔太 |
45 |
名古屋 |
| 6 |
山口達也 |
30 |
広島 |
6名分のデータが正しく格納されています。これ、一度もSQLを自分で書いていません。 ■ 集計クエリ 「都市ごとの平均年齢を教えて」と聞くと、GROUP BYクエリが自動生成されて、名古屋の45歳が最高齢、福岡の23歳が最年少という結果が即座に返ってきました。 ■ データ更新 「佐藤健の年齢を23にして」と言うだけで、UPDATE文が実行されました。
5. MCPがないとどうなるのか?
ちなみに、MCPがなくてもターミナル経由でDBを操作すること自体は可能です。違いを比較してみました。
| 比較 |
MCPなし |
MCPあり |
| 操作方法 |
AIがコマンドを提案→ユーザーが承認→実行 |
AIが直接ツールを呼び出し |
| 手間 |
毎回ターミナル経由 |
シームレス |
| 自然言語対応 |
△ SQLを書いてコマンド提案 |
◎ 「〇〇を追加して」だけ |
| 応答速度 |
承認ステップが必要で遅い |
即座にデータ取得・操作 |
今回の「山口達也を追加して」→即座に挿入完了、が象徴的ですが、MCPありだと「会話の延長線上でDBが操作される」感覚なのが大きな違いです。
おまけ:リモートDBにも接続可能
今回はローカルのSQLiteファイルを使いましたが、MCPは対応パッケージさえあればリモートサーバーのDBにも接続できます。
- PostgreSQL —
mcp-server-postgres
- MySQL —
@benborla29/mcp-server-mysql
- MongoDB —
mcp-mongo-server
接続文字列を設定するだけなので、例えばAWSのRDSに接続して「先月の売上データを見せて」なんてこともできます。
情報漏洩の懸念について
1. データの流れと「学習」の境界線
MCP(Model Context Protocol)を使ってローカルDBに接続すると、データは以下のように処理されます。
- ローカル実行: MCPサーバー自体はユーザーのPC(ローカル環境)で動作します。そのため、データベースの中身が丸ごとGoogleのサーバーへ送信されることはありません。
- コンテキストとしての利用: AIエージェントがDBを検索し、回答を生成するために必要な特定のレコード(テキストや数値)だけを抽出してAIモデルに送信します。この「送信された断片的なデータ」が学習に使われるかどうかが、プライバシー保護の分かれ目になります。
2. Antigravityにおける学習ポリシー
Antigravityは2026年現在、開発者向けのプレビュー版として提供されており、利用するアカウントの種類によって以下のルールが適用されます。
A. 個人用Googleアカウント(Gmail)の場合
デフォルトの状態では、AIとのやり取り(プロンプトや、DBから取得された回答内容)は、Googleのサービス改善やモデルの学習に使用される可能性があります。
【回避方法】
Antigravityの設定画面(Settings)にある「Enable Telemetry」をOFFに切り替えてください。これを無効にすることで、インタラクションデータの収集が停止され、プライバシーを保護できます。
B. Google Cloud (GCP) または Workspace アカウントの場合
企業向け・開発者向けの契約(GCPプロジェクトやGoogle Workspace)を介してAntigravityを利用している場合、Googleの基本規約により、入力されたデータやモデルの回答がグローバルなモデルの学習に使用されることはありません。ビジネス利用でも安心してローカルDBとの連携が可能です。
まとめ
今回の体験で感じたのは、MCPは「AIとデータの距離をゼロにする」技術だということです。 前回のSSL証明書更新では、Antigravityが「サーバー操作」を自動化してくれました。 今回のMCPでは、「データベース操作」までもが自然言語で完結するようになりました。 もはやSQLが書けなくても、「30歳以上のユーザーを教えて」と聞くだけでAIがクエリを書いて実行してくれる。 開発でも運用でも、AIに「何をしたいか」を伝えるだけで、あとは全部やってくれる時代がどんどん現実になっています。 設定ファイルを1つ書くだけで始められるので、興味がある方はぜひ試してみてください。