DB MCP Server について
DB MCP Serverは、MCPクライアントをMySQL、PostgreSQL、MongoDB、SQLiteのいずれか1つのデータベースに接続します。クエリとスキーマ確認のツールを提供し、任意で書き込みや、対応データベースへのSSHトンネル接続も利用できます。
主な機能
- 01MySQL、PostgreSQL、MongoDB、SQLiteに対応
- 02データベースのクエリとスキーマ確認
- 03任意の読み書きモード
- 04MySQLとPostgreSQLのSSHトンネル
- 05SSH経由のSQLiteアクセス
活用シーン
- 01MCPクライアントからデータベースを検索
- 02テーブルやコレクションの構造確認
- 03SSH踏み台の先にあるデータベースへの接続
MCP 対応
MCPサーバーは、データベースのクエリ、スキーマ確認、一覧、状態取得のツールをMCPクライアントに公開します。読み書きモードの設定時は書き込みツールも利用でき、各インスタンスは単一のデータベースに接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx db-mcp-serverDB_TYPEDatabase typeDB_DATABASEDatabase nameDB_MODEAccess modeDB_HOSTDatabase host (MySQL/PostgreSQL)DB_PORTDatabase port (MySQL: 3306, PostgreSQL: 5432)DB_USERDatabase user (MySQL default: root, PostgreSQL default: postgres)DB_PASSWORDシークレットDatabase password (MySQL/PostgreSQL, optional)DB_URLシークレットMongoDB connection URL (required for MongoDB, e.g. mongodb://...)SSH_HOSTSSH bastion host for tunneling (MySQL/PostgreSQL only)SSH_PORTSSH portSSH_USERSSH username (default: current OS user)SSH_KEYシークレットPath to SSH private key (e.g. ~/.ssh/id_rsa)SSH_PASSWORDシークレットSSH password (if no key provided)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
db-mcp-server
MySQL、PostgreSQL、MongoDB、SQLite データベース用の MCP サーバーです。データベースごとに 1 つのインスタンスを使用し、Docker は不要です。
インストール
uvx db-mcp-server
設定
環境変数で設定します。各インスタンスは単一のデータベースに接続します。
MySQL
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
DB_TYPE | はい | — | mysql |
DB_DATABASE | はい | — | データベース名 |
DB_PASSWORD | はい | — | パスワード |
DB_HOST | いいえ | localhost | ホスト |
DB_PORT | いいえ | 3306 | ポート |
DB_USER | いいえ | root | ユーザー |
DB_MODE | いいえ | read-only | read-only または read-write |
PostgreSQL
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
DB_TYPE | はい | — | postgresql |
DB_DATABASE | はい | — | データベース名 |
DB_PASSWORD | はい | — | パスワード |
DB_HOST | いいえ | localhost | ホスト |
DB_PORT | いいえ | 5432 | ポート |
DB_USER | いいえ | postgres | ユーザー |
DB_MODE | いいえ | read-only | read-only または read-write |
MongoDB
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
DB_TYPE | はい | — | mongodb |
DB_DATABASE | はい | — | データベース名 |
DB_URL | はい | — | 接続 URL(mongodb://...) |
DB_MODE | いいえ | read-only | read-only または read-write |
SQLite
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
DB_TYPE | はい | — | sqlite |
DB_PATH | はい | — | .db ファイルのパス(ローカルまたは SSH 経由のリモート) |
DB_DATABASE | いいえ | ファイル名 | 表示名 |
DB_MODE | いいえ | read-only | read-only または read-write |
SSH トンネル(MySQL / PostgreSQL)
必要に応じて、SSH 踏み台ホスト経由で接続します。SSH_HOST を設定すると有効になります。
SSH 経由の SQLite では、リモートの .db ファイルがクエリ実行前に SFTP 経由でダウンロードされます。read-write モードでは、シャットダウン時に変更内容がアップロードされます。
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
SSH_HOST | いいえ | — | SSH 踏み台ホスト(トンネリングを有効化) |
SSH_PORT | いいえ | 22 | SSH ポート |
SSH_USER | いいえ | 現在の OS ユーザー | SSH ユーザー名 |
SSH_KEY | いいえ | — | 秘密鍵のパス(~/.ssh/id_rsa) |
SSH_PASSWORD | いいえ | — | SSH パスワード(鍵がない場合) |
SSH_HOST を設定する場合、SSH_KEY または SSH_PASSWORD のいずれかが必要です。MongoDB では SSH トンネリングはサポートされていません。
.mcp.json での使用方法
SQLite(ローカル)
{
"mcpServers": {
"db-local": {
"command": "uvx",
"args": ["db-mcp-server"],
"env": {
"DB_TYPE": "sqlite",
"DB_PATH": "/path/to/database.db"
}
}
}
}
SSH 経由の SQLite
{
"mcpServers": {
"db-remote": {
"command": "uvx",
"args": ["db-mcp-server"],
"env": {
"DB_TYPE": "sqlite",
"DB_PATH": "/remote/path/to/database.db",
"SSH_HOST": "server.example.com",
"SSH_USER": "deploy",
"SSH_KEY": "~/.ssh/id_rsa"
}
}
}
}
{
"mcpServers": {
"db-prod": {
"command": "uvx",
"args": ["db-mcp-server"],
"env": {
"DB_TYPE": "mysql",
"DB_MODE": "read-only",
"DB_HOST": "db.example.com",
"DB_PORT": "3306",
"DB_USER": "root",
"DB_PASSWORD": "secret",
"DB_DATABASE": "myapp"
}
}
}
}
SSH トンネルを使用する場合
{
"mcpServers": {
"db-behind-bastion": {
"command": "uvx",
"args": ["db-mcp-server"],
"env": {
"DB_TYPE": "postgresql",
"DB_HOST": "10.0.0.5",
"DB_PORT": "5432",
"DB_USER": "postgres",
"DB_PASSWORD": "secret",
"DB_DATABASE": "myapp",
"SSH_HOST": "bastion.example.com",
"SSH_USER": "deploy",
"SSH_KEY": "~/.ssh/id_rsa"
}
}
}
}
複数のデータベースを使用する場合は、複数のインスタンスを追加します。
{
"mcpServers": {
"db-prod": {
"command": "uvx",
"args": ["db-mcp-server"],
"env": { "DB_TYPE": "mysql", "DB_DATABASE": "prod", "..." : "..." }
},
"db-analytics": {
"command": "uvx",
"args": ["db-mcp-server"],
"env": { "DB_TYPE": "postgresql", "DB_DATABASE": "analytics", "..." : "..." }
},
"db-staging": {
"command": "uvx",
"args": ["db-mcp-server"],
"env": { "DB_TYPE": "mongodb", "DB_DATABASE": "staging", "..." : "..." }
}
}
}
ツール
MySQL
- query — 読み取り専用 SQL(SELECT、SHOW、DESCRIBE、EXPLAIN、WITH)を実行します
- execute — 書き込み SQL(INSERT、UPDATE、DELETE)を実行します —
DB_MODE=read-writeが必要です - describe — テーブル構造を説明します
- list_tables — すべてのテーブルを一覧表示します
- status — 接続情報を表示します
PostgreSQL
- query — 読み取り専用 SQL(SELECT、SHOW、DESCRIBE、EXPLAIN、WITH)を実行します
- execute — 書き込み SQL(INSERT、UPDATE、DELETE)を実行します —
DB_MODE=read-writeが必要です - describe — テーブル構造を説明します(information_schema から列情報を取得)
- list_tables — public スキーマ内のすべてのテーブルを一覧表示します
- status — 接続情報を表示します
SQLite
- query — 読み取り専用 SQL(SELECT、SHOW、DESCRIBE、EXPLAIN、WITH)を実行します
- execute — 書き込み SQL(INSERT、UPDATE、DELETE)を実行します —
DB_MODE=read-writeが必要です - describe — テーブル構造を説明します(PRAGMA table_info)
- list_tables — すべてのテーブルを一覧表示します
- status — 接続情報を表示します
MongoDB
- query — コレクション内のドキュメントを検索します
- describe — コレクションの統計情報($collStats)
- list_collections — すべてのコレクションを一覧表示します
- aggregate — 集計パイプラインを実行します(読み取り専用では $out/$merge はブロックされます)
- status — 接続情報を表示します
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。