マルチデータベース MCP サーバー (Legion AI 製)
Model Context Protocol (MCP) Python SDK を統合した Legion Query Runner を使用して、データベース内のデータにアクセスし、クエリを実行できるようにするサーバーです。
ここから世代を始める
このツールはLegion AIによって提供されています。本格的なAIデータ分析ツールをご利用いただくには、サイトをご覧ください。サポートをご希望のデータベースがございましたら、メールでお問い合わせください。
ここで世代を終わらせる
データベースMCPを選ぶ理由
データベース MCP は、いくつかの説得力のある理由により、他のデータベース アクセス ソリューションよりも優れています。
統合マルチデータベース インターフェース: 単一の一貫した API を介して PostgreSQL、MySQL、SQL Server などのデータベースに接続します。データベースの種類ごとに異なるクライアント ライブラリを学習する必要はありません。
AI 対応統合: モデル コンテキスト プロトコル (MCP) を介した AI アシスタントのインタラクション用に特別に構築されており、自然言語データベース操作を可能にします。
ゼロ構成スキーマ検出: 手動での構成やマッピングなしで、データベース スキーマを自動的に検出して公開します。
データベースに依存しないツール: 基盤となるデータベース テクノロジに関係なく、同じツール セットを使用してテーブルを検索し、スキーマを探索し、クエリを実行します。
安全な資格情報管理: 資格情報をアプリケーション コードから分離し、データベース認証の詳細を安全に処理します。
シンプルな導入: 最小限のセットアップで、LangChain、FastAPI などの最新の AI 開発環境で動作します。
拡張可能な設計: カスタム ツールとプロンプトを簡単に追加して、特定のユース ケースの機能を強化できます。
データベース アクセスを必要とする AI エージェントを構築する場合でも、複数のデータベースへの統合されたインターフェイスだけが必要な場合でも、Database MCP は開発時間と複雑さを大幅に削減する合理化されたソリューションを提供します。
Related MCP server: MySQL MCP Server
特徴
マルチデータベースのサポート - 複数のデータベースに同時に接続
Legion Query Runner 経由のデータベースアクセス
AIアシスタント向けモデルコンテキストプロトコル(MCP)のサポート
データベース操作を MCP リソース、ツール、プロンプトとして公開する
複数の展開オプション(スタンドアロン MCP サーバー、FastAPI 統合)
クエリの実行と結果の処理
環境変数、コマンドライン引数、またはMCP設定JSONによる柔軟な構成
複数データベース設定のためのユーザー主導のデータベース選択
サポートされているデータベース
データベース | DB_TYPEコード |
PostgreSQL | ページ |
赤方偏移 | 赤方偏移 |
コックローチDB | ゴキブリ |
MySQL | MySQL |
RDS MySQL | rds_mysql |
マイクロソフトSQLサーバー | mssql |
ビッグクエリ | ビッグクエリ |
オラクルDB | オラクル |
SQLite | sqlite |
コネクタとしてLegion Query Runnerライブラリを使用しています。詳細はAPIドキュメントをご覧ください。
MCPとは何ですか?
モデルコンテキストプロトコル(MCP)は、AIアプリケーションにおけるコンテキストを維持するための仕様です。このサーバーは、 MCP Python SDKを使用して以下の機能を実現します。
データベース操作をAIアシスタントのツールとして公開する
データベーススキーマとメタデータをリソースとして提供する
データベース操作に役立つプロンプトを生成する
データベースとのステートフルなインタラクションを可能にする
インストールと設定
必須パラメータ
単一データベース構成の場合:
DB_TYPE : データベースタイプコード(上記の表を参照)
DB_CONFIG : データベース接続用のJSON構成文字列
マルチデータベース構成の場合:
DB_CONFIGS : データベース構成の JSON 配列。それぞれに次の内容が含まれます。
db_type : データベースタイプコード
構成: データベース接続構成
説明: 人間が読めるデータベースの説明
設定形式はデータベースの種類によって異なります。データベース固有の設定の詳細については、 APIドキュメントを参照してください。
インストール方法
オプション1: UVを使用する(推奨)
uvを使用する場合、特別なインストールは必要ありません。 uvxを使用してdatabase-mcpを直接実行します。
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-mcpPIP 構成例 (単一データベース):
{
"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.pyID を指定しない場合は、データベースの種類と説明に基づいてシステムが自動的に 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 を指定することも、データベースの種類と説明に基づいてシステムに 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機能
リソース
リソース | 説明 |
| 構成された1つまたはすべてのデータベースのスキーマを取得します |
ツール
道具 | 説明 |
| SQLクエリを実行し、結果をマークダウンテーブルとして返す |
| SQLクエリを実行し、結果をJSONとして返す |
| 特定のテーブルの列名を取得する |
| 特定のテーブルの列タイプを取得する |
| 最近のクエリ履歴を取得する |
| 利用可能なすべてのデータベース接続を一覧表示する |
| スキーマを含むデータベースの詳細情報を取得します |
| 特定のテーブルが含まれているデータベースを見つける |
| 列名や型を含むテーブルの詳細な説明を取得します |
| テーブルからデータのサンプルを取得する |
すべてのデータベース固有のツール ( execute_query 、 get_table_columnsなど) では、使用するデータベースを指定するためにdb_idパラメータが必要です。
プロンプト
プロンプト | 説明 |
| データベースに対してSQLクエリを作成する |
| SQLクエリが何をするのかを説明する |
| パフォーマンス向上のためにSQLクエリを最適化する |
| ユーザーが使用するデータベースを選択できるように支援する |
発達
MCPインスペクターの使用
これを実行してインスペクタを起動します
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ライセンスです