db-gateway について
db-gatewayは、AIエージェント向けにリレーショナル、NoSQL、検索、ストリーミング系データベースのツールを提供するMCPサーバーです。利用するエンジンを選択でき、読み取り専用モードでは書き込みツールを非表示にします。
主な機能
- 018種類のデータベースエンジンに対応
- 02145以上のデータベースツール
- 03有効なエンジンのツールを登録
- 04読み取り専用モードで書き込みツールを非表示
- 05エイリアスによる複数インスタンス接続
活用シーン
- 01エージェントによるスキーマ確認とデータ検索
- 02単一サーバーから複数種類のデータベースへ接続
- 03本番接続を読み取り専用に制限
MCP 対応
MCPサーバーとして、MCPクライアントにデータベースツールを公開します。設定で有効なエンジンとツールを選び、読み取り専用モードでは書き込みツールを除外します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y db-gatewayDBSEngines to enable, comma-separated. Only the listed engines get their tools registered. Example: mysql,redis,kafkaREAD_ONLYSet to true to hide every write tool and restrict *_execute_query to SELECT-style statements. Recommended when pointing at production.MYSQLシークレットMySQL connection string(s), semicolon-separated for multiple instances. Format: mysql://<user>:<password>@<host>:3306/<database>?alias=dev&default=true — alias is required.POSTGRESQLシークレットPostgreSQL connection string(s), semicolon-separated. Format: postgresql://<user>:<password>@<host>:5432/<database>?alias=dev&ssl=true — alias is required.REDSHIFTシークレットRedshift connection string(s), semicolon-separated. Format: redshift://<user>:<password>@<host>:5439/<database>?alias=dev&ssl=true — alias is required.MONGODBシークレットMongoDB connection string(s), semicolon-separated. Format: mongodb://<user>:<password>@<host>:27017/<database>?alias=dev — alias is required.REDISシークレットRedis connection string(s), semicolon-separated. Format: redis://:<password>@<host>:6379/0?alias=dev — leave the password empty for a no-auth instance. alias is required.ELASTICSEARCHシークレットElasticsearch connection string(s), semicolon-separated. Format: elasticsearch://<user>:<password>@<host>:9200?alias=dev, or http(s)://<host>:9200?alias=dev for no auth. alias is required.KAFKAシークレットKafka connection string(s), semicolon-separated. Format: kafka://<user>:<password>@<broker1>:9092,<broker2>:9092?alias=dev&mechanism=plain — alias is required.DYNAMODB_REGIONAWS region for DynamoDB. DynamoDB is configured with discrete variables instead of a connection string.DYNAMODB_ACCESS_KEY_IDシークレットAWS access key ID for DynamoDB.DYNAMODB_SECRET_ACCESS_KEYシークレットAWS secret access key for DynamoDB.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
DB Gateway MCP Server
英語 | 韓国語
AI エージェントにデータベースへの直接アクセスを提供する MCP サーバーです。8 種類のエンジンに対応した 145 以上のツールを備えています。
このサーバーのポイントは、プロンプトに DDL を貼り付ける代わりに、エージェント自身がスキーマを読み取ることです。
You: "Find users who signed up last month and never placed an order"
1. mysql_get_all_schemas → reads every table definition
2. mysql_get_table_relationships → finds the users ↔ orders foreign key
3. mysql_execute_query → runs the LEFT JOIN
db-gateway を選ぶ理由
多くのデータベース MCP サーバーは、単一のエンジンか、少数のリレーショナルデータベースにしか対応していません。アプリに MySQL、分析に Redshift、キャッシュに Redis、イベントに Kafka を使っている場合、設定方法がそれぞれ異なる 4 つのサーバーが必要になります。
このサーバーなら、サーバーは 1 つ、設定ブロックも 1 つです。
| エンジン | ツール | |
|---|---|---|
| リレーショナル | MySQL, PostgreSQL, Redshift | 59 |
| NoSQL | MongoDB, Redis, DynamoDB | 48 |
| 検索 | Elasticsearch | 19 |
| ストリーミング | Kafka | 19 |
有効にするエンジンは DBS で指定します。有効にしたエンジンのツールだけが登録されるため、MySQL だけの環境では、ツール一覧も MySQL 専用になります。
動作を確認する
以下のスクリーンショットはすべて、249 行のデータを含む開発用 MySQL データベースに対する実際のセッションです。出力は編集しておらず、モックデータではありません。エージェントが呼び出すツールは mysql_execute_query の 1 つだけで、ホスト、ポート、パスワードは一切表示されません。これらはクライアントの設定に保存され、エージェントが指定するのは alias だけです。





同じサーバーを READ_ONLY=true にして本番環境に接続すると、ステップ 2 から 4 は実行できません。書き込みツールは登録されないため、エージェントから見えず、呼び出すこともできません。
クイックスタート
Node.js 18 以上が必要です。インストールせずに、MCP クライアントに登録してください。
{
"mcpServers": {
"db-gateway": {
"command": "npx",
"args": ["-y", "db-gateway"],
"env": {
"DBS": "mysql,redis",
"MYSQL": "mysql://<user>:<password>@<host>:3306/<database>?alias=dev&default=true",
"REDIS": "redis://:@<host>:6379/0?alias=dev&default=true"
}
}
}
}
有効にするエンジンは DBS で指定します。有効にしたエンジンのツールだけが登録されます。
接続文字列
エンジンごとに1つの文字列を指定します。セミコロンで複数のインスタンスを区切ります。
| 変数 | 形式 |
|---|---|
MYSQL | mysql://<user>:<password>@<host>:<port>/<db>?alias=name |
POSTGRESQL | postgresql://<user>:<password>@<host>:<port>/<db>?alias=name&ssl=true |
REDIS | redis://:<password>@<host>:<port>/<db-index>?alias=name |
MONGODB | mongodb://<user>:<password>@<host>:<port>/<db>?alias=name |
REDSHIFT | redshift://<user>:<password>@<host>:<port>/<db>?alias=name&ssl=true |
ELASTICSEARCH | elasticsearch://<user>:<password>@<host>:<port>?alias=name、または http(s)://<host>:<port>?alias=name |
KAFKA | kafka://<user>:<password>@<broker>:<port>,<broker2>:<port>?alias=name&mechanism=plain |
aliasは必須です。 ツールが特定のインスタンスにアクセスするために使用します。省略すると、そのエンジンへの接続に失敗します。
同じエンジンの複数のインスタンス — 接続文字列をセミコロンで区切ります。エージェントは、任意のツールに alias 引数を渡してインスタンスを選択します。default=true は、alias が指定されていない場合に使用されるインスタンスを示します。
MYSQL="mysql://<user>:<password>@<dev-host>:3306/<db>?alias=dev&default=true;mysql://<user>:<password>@<prod-host>:3306/<db>?alias=prod"
DynamoDB は例外で、代わりに DYNAMODB_REGION、DYNAMODB_ACCESS_KEY_ID、DYNAMODB_SECRET_ACCESS_KEY を指定します。すべてのオプションについては .env.example を参照してください。
読み取り専用モード
READ_ONLY=true にすると、書き込みツールはツール一覧に表示されなくなり、*_execute_query は SELECT スタイルのステートメントに制限されます。
このフラグを有効にして、本番環境を2つ目の MCP サーバーとして登録してください。エージェントから本番データを変更できなくなります。エージェントからは書き込みツールが存在しない状態になるためです。
"db-gateway-prod": {
"command": "npx",
"args": ["-y", "db-gateway"],
"env": { "READ_ONLY": "true", "DBS": "mysql", "MYSQL": "..." }
}
ドキュメント
- ツールリファレンス — エンジン別の全145以上のツール
- 接続管理 — プーリング、ヘルスチェック、
connectionLimitがセッションごとに乗算される理由 - デプロイ — SSE モード、Nginx、PM2、チームで1つのゲートウェイを共有する方法
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。