Multi-Database MCP Server (by Legion AI) について
Legion AI が提供する Multi-Database MCP Server は、MCP Python SDK で構築されたサーバーで、AI アシスタントが複数種類のデータベースを単一のインターフェースで照会できるようにします。接続には Legion Query Runner ライブラリを使用し、複数のデータベースを同時に扱えます。
主な機能
- 01複数種類のデータベースに共通のインターフェース
- 02複数データベースへの同時接続
- 03スキーマの自動検出
- 04Markdown または JSON で結果を返す SQL 実行
- 05クエリの作成、説明、最適化用プロンプト
- 06環境変数またはコマンドライン引数による設定
活用シーン
- 01AI アシスタントから PostgreSQL や MySQL のデータを照会する
- 02特定のテーブルがどのデータベースにあるかを探す
- 03SQL クエリの説明と最適化の提案を得る
MCP 対応
このサーバーは MCP サーバーとして動作し、データベーススキーマをリソースとして、execute_query、list_databases、find_table などのツールと、いくつかのクエリ用プロンプトを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Multi-Database MCP Server(Legion AI 提供)
Model Context Protocol(MCP)Python SDK との連携により、Legion Query Runner を使用してデータベース内のデータにアクセスし、クエリを実行できるサーバーです。
Start Generation Here
このツールは Legion AI が提供しています。本格的な高性能 AI データ分析ツールをご利用になるには、サイトをご覧ください。サポートをご希望のデータベースがあれば、メールでお知らせください。
End Generation Here
Database MCP を選ぶ理由
Database MCP がほかのデータベースアクセスソリューションと異なるのは、次のような優れた特長があるためです。
- 統一されたマルチデータベースインターフェース:PostgreSQL、MySQL、SQL Server などのデータベースに、統一された単一の API から接続できます。データベースの種類ごとに異なるクライアントライブラリを習得する必要はありません。
- AI に対応した連携:Model Context Protocol(MCP)を通じた AI アシスタントとのやり取りに特化して構築されており、自然言語によるデータベース操作を可能にします。
- 設定不要のスキーマ検出:手動での設定やマッピングなしで、データベーススキーマを自動的に検出して公開します。
- データベースに依存しないツール:基盤となるデータベース技術にかかわらず、同じツールを使ってテーブルを検索し、スキーマを調べ、クエリを実行できます。
- 安全な認証情報管理:データベースの認証情報を安全に管理し、アプリケーションコードから分離します。
- シンプルなデプロイ:LangChain、FastAPI などの最新の AI 開発環境で、最小限の設定で動作します。
- 拡張可能な設計:ユースケースに合わせてカスタムツールやプロンプトを簡単に追加し、機能を強化できます。
データベースアクセスが必要な AI エージェントを構築する場合でも、複数のデータベースへの統一されたインターフェースを求めている場合でも、Database MCP は開発時間と複雑さを大幅に削減する、効率的なソリューションを提供します。
機能
- マルチデータベースをサポート。複数のデータベースに同時に接続できます
- Legion Query Runner によるデータベースアクセス
- AI アシスタント向けの Model Context Protocol(MCP)サポート
- データベース操作を MCP リソース、ツール、プロンプトとして公開
- 複数のデプロイ方法(スタンドアロン MCP サーバー、FastAPI との連携)
- クエリの実行と結果の処理
- 環境変数、コマンドライン引数、または MCP 設定 JSON による柔軟な設定
- 複数データベース構成で、ユーザーがデータベースを選択可能
サポート対象データベース
| データベース | DB_TYPE コード |
|---|---|
| PostgreSQL | pg |
| Redshift | redshift |
| CockroachDB | cockroach |
| MySQL | mysql |
| RDS MySQL | rds_mysql |
| Microsoft SQL Server | mssql |
| Big Query | bigquery |
| Oracle DB | oracle |
| SQLite | sqlite |
コネクターとして Legion Query Runner ライブラリを使用しています。詳しくはAPI ドキュメントをご覧ください。
MCP とは?
Model Context Protocol(MCP)は、AI アプリケーションのコンテキストを維持するための仕様です。このサーバーは MCP Python SDK を使用して、次のことを実現します。
- AI アシスタント向けのツールとしてデータベース操作を公開する
- リソースとしてデータベーススキーマとメタデータを提供する
- データベース操作に役立つプロンプトを生成する
- データベースとのステートフルなやり取りを可能にする
インストールと設定
必須パラメーター
単一データベース構成の場合:
- DB_TYPE:データベースの種類を示すコード(上の表を参照)
- DB_CONFIG:データベース接続用の JSON 設定文字列
複数データベース構成の場合:
- DB_CONFIGS:データベース設定の JSON 配列。各設定には次の項目が含まれます。
- db_type:データベースの種類を示すコード
- configuration:データベース接続の設定
- description:データベースの内容を人が読んで理解できるように説明したもの
設定形式はデータベースの種類によって異なります。データベースごとの設定方法については、API ドキュメントをご覧ください。
インストール方法
オプション 1:UV を使用する(推奨)
uv を使用する場合、特別なインストールは必要ありません。database-mcp を直接実行するために uvx を使用します。
UV 設定例(単一データベース):
REPLACE DB_TYPE and DB_CONFIG with your connection info.
{
"mcpServers": {
"database-mcp": {
"command": "uvx",
"args": [
"database-mcp"
],
"env": {
"DB_TYPE": "pg",
"DB_CONFIG": "{\"host\":\"localhost\",\"port\":5432,\"user\":\"user\",\"password\":\"pw\",\"dbname\":\"dbname\"}"
},
"disabled": true,
"autoApprove": []
}
}
}
UV 設定例(複数のデータベース):
{
"mcpServers": {
"database-mcp": {
"command": "uvx",
"args": [
"database-mcp"
],
"env": {
"DB_CONFIGS": "[{\"id\":\"pg_main\",\"db_type\":\"pg\",\"configuration\":{\"host\":\"localhost\",\"port\":5432,\"user\":\"user\",\"password\":\"pw\",\"dbname\":\"postgres\"},\"description\":\"PostgreSQL Database\"},{\"id\":\"mysql_data\",\"db_type\":\"mysql\",\"configuration\":{\"host\":\"localhost\",\"port\":3306,\"user\":\"root\",\"password\":\"pass\",\"database\":\"mysql\"},\"description\":\"MySQL Database\"}]"
},
"disabled": true,
"autoApprove": []
}
}
}
オプション 2:PIP を使用する
pip でインストールします:
pip install database-mcp
PIP 設定例(単一データベース):
{
"mcpServers": {
"database": {
"command": "python",
"args": [
"-m", "database_mcp",
"--repository", "path/to/git/repo"
],
"env": {
"DB_TYPE": "pg",
"DB_CONFIG": "{\"host\":\"localhost\",\"port\":5432,\"user\":\"user\",\"password\":\"pw\",\"dbname\":\"dbname\"}"
}
}
}
}
サーバーの実行
本番モード
python mcp_server.py
設定方法
環境変数(単一データベース)
export DB_TYPE="pg" # or mysql, postgresql, etc.
export DB_CONFIG='{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
uv run src/database_mcp/mcp_server.py
環境変数(複数のデータベース)
export DB_CONFIGS='[{"id":"pg_main","db_type":"pg","configuration":{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"},"description":"PostgreSQL Database"},{"id":"mysql_users","db_type":"mysql","configuration":{"host":"localhost","port":3306,"user":"root","password":"pass","database":"mysql"},"description":"MySQL Database"}]'
uv run src/database_mcp/mcp_server.py
ID を指定しない場合、システムはデータベースの種類と説明に基づいて自動的に生成します:
export DB_CONFIGS='[{"db_type":"pg","configuration":{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"},"description":"PostgreSQL Database"},{"db_type":"mysql","configuration":{"host":"localhost","port":3306,"user":"root","password":"pass","database":"mysql"},"description":"MySQL Database"}]'
# IDs will be generated as something like "pg_postgres_0" and "my_mysqldb_1"
uv run src/database_mcp/mcp_server.py
コマンドライン引数(単一データベース)
python mcp_server.py --db-type pg --db-config '{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
コマンドライン引数(複数のデータベース)
python mcp_server.py --db-configs '[{"id":"pg_main","db_type":"pg","configuration":{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"},"description":"PostgreSQL Database"},{"id":"mysql_users","db_type":"mysql","configuration":{"host":"localhost","port":3306,"user":"root","password":"pass","database":"mysql"},"description":"MySQL Database"}]'
id フィールドを使用して各データベースにカスタム ID を指定することも、システムにデータベースの種類と説明に基づいて生成させることもできます。
複数データベースのサポート
複数のデータベースに接続する場合は、各クエリで使用するデータベースを指定する必要があります:
list_databasesツールを使用して、ID とともに利用可能なデータベースを確認しますget_database_infoを使用して、データベースのスキーマの詳細を表示しますfind_tableを使用して、すべてのデータベースからテーブルを検索しますexecute_query、get_table_columnsなどのツールにdb_idパラメーターを指定します
データベース接続は、DbConfig オブジェクトの辞書として内部的に管理され、各データベースには一意の ID が割り当てられます。スキーマ情報はテーブルオブジェクトのリストとして表され、各テーブルには名前と列情報が含まれます。
select_database プロンプトは、データベースの選択手順をユーザーに案内します。
スキーマ表現
データベースのスキーマはテーブルオブジェクトのリストとして表され、各テーブルには列の情報が含まれます:
[
{
"name": "users",
"columns": [
{"name": "id", "type": "integer"},
{"name": "username", "type": "varchar"},
{"name": "email", "type": "varchar"}
]
},
{
"name": "orders",
"columns": [
{"name": "id", "type": "integer"},
{"name": "user_id", "type": "integer"},
{"name": "product_id", "type": "integer"},
{"name": "quantity", "type": "integer"}
]
}
]
この表現により、すっきりとした階層構造を保ちながら、テーブルや列の情報をプログラムから簡単に利用できます。
公開されている MCP の機能
リソース
| リソース | 説明 |
|---|---|
resource://schema/{database_id} | 設定済みのすべてのデータベース、または指定したデータベースのスキーマを取得します |
ツール
| ツール | 説明 |
|---|---|
execute_query | SQL クエリを実行し、結果を Markdown テーブルとして返します |
execute_query_json | SQL クエリを実行し、結果を JSON として返します |
get_table_columns | 指定したテーブルの列名を取得します |
get_table_types | 指定したテーブルの列の型を取得します |
get_query_history | 最近のクエリ履歴を取得します |
list_databases | 利用可能なすべてのデータベース接続を一覧表示します |
get_database_info | スキーマを含む、データベースの詳細情報を取得します |
find_table | 指定したテーブルがどのデータベースにあるかを検索します |
describe_table | 列名や型を含む、テーブルの詳細な説明を取得します |
get_table_sample | テーブルのデータサンプルを取得します |
すべてのデータベース固有のツール(execute_query、get_table_columns など)では、使用するデータベースを指定するために db_id パラメーターが必要です。
プロンプト
| プロンプト | 説明 |
|---|---|
sql_query | データベースに対する SQL クエリを作成します |
explain_query | SQL クエリの内容を説明します |
optimize_query | パフォーマンスを向上させるために SQL クエリを最適化します |
select_database | 使用するデータベースの選択をユーザーに案内します |
開発
MCP Inspector の使用
Inspector を起動するには、次のコマンドを実行します
npx @modelcontextprotocol/inspector uv run src/database_mcp/mcp_server.py
次に、コマンド入力欄に次のように設定します
run src/database_mcp/mcp_server.py --db-type pg --db-config '{"host":"localhost","port":5432,"user":"username","password":"password","dbname":"database_name"}'
テスト
uv pip install -e ".[dev]"
pytest
公開
# Clean up build artifacts
rm -rf dist/ build/
# Remove any .egg-info directories if they exist
find . -name "*.egg-info" -type d -exec rm -rf {} + 2>/dev/null || true
# Build the package
uv run python -m build
# Upload to PyPI
uv run python -m twine upload dist/*
ライセンス
このリポジトリは GPL のライセンスの下で公開されています
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。