マルチデータベースMCPサーバー
DB MCP サーバーとは何ですか?
DB MCPサーバーは、AIモデルが複数のデータベースを同時に操作するための標準化された方法を提供します。FreePeak /cortexフレームワーク上に構築されており、AIアシスタントは統一されたインターフェースを通じて、SQLクエリの実行、トランザクションの管理、スキーマの探索、そして異なるデータベースシステム間のパフォーマンス分析を行うことができます。
コアコンセプト
マルチデータベースサポート
従来のデータベース コネクタとは異なり、DB MCP サーバーは複数のデータベースに同時に接続して対話できます。
動的ツール生成
接続されたデータベースごとに、サーバーは一連の特殊なツールを自動的に生成します。
クリーンアーキテクチャ
サーバーは、以下のレイヤーで Clean Architecture の原則に従います。
- ドメイン層: コアビジネスエンティティとインターフェース
- リポジトリ層: データアクセスの実装
- ユースケース層: アプリケーションビジネスロジック
- 配信層: 外部インターフェース (MCP ツール)
特徴
- 同時マルチデータベースサポート: 複数のMySQLおよびPostgreSQLデータベースに同時に接続して操作します。
- データベース固有のツール生成:接続されたデータベースごとに専用のツールを自動作成します。
- クリーンアーキテクチャ:関心事を明確に分離したモジュール設計
- OpenAI Agents SDK との互換性: OpenAI Agents SDK との完全な互換性により、AI アシスタントとのシームレスな統合が可能
- 動的データベースツール:
- パラメータ付きのSQLクエリを実行する
- 適切なエラー処理でデータ変更ステートメントを実行する
- セッション間でデータベーストランザクションを管理する
- データベースのスキーマと関係を調べる
- クエリのパフォーマンスを分析し、最適化の提案を受け取る
- 統合インターフェース: さまざまなデータベース タイプ間で一貫したインタラクション パターン
- 接続管理: 複数のデータベース接続のシンプルな構成
現在サポートされているデータベース
データベース | 状態 | 特徴 |
---|---|---|
MySQL | ✅ フルサポート | クエリ、トランザクション、スキーマ分析、パフォーマンス分析 |
PostgreSQL | ✅ フルサポート (v9.6-17) | クエリ、トランザクション、スキーマ分析、パフォーマンス分析 |
クイックスタート
Dockerの使用
始める最も簡単な方法は Docker を使用することです。
注: コンテナーにはすでに
/app/my-config.json
/app/config.json
マウントします。
プラットフォームサポート
Docker イメージは複数のプラットフォームをサポートしています。
linux/amd64
- Intel/AMD ベースのシステム (ほとんどの Linux/Windows サーバーおよびデスクトップ)linux/arm64
- ARM64 ベースのシステム (Apple Silicon Mac、ARM サーバー) 向け
プラットフォームの不一致エラー (例: 「要求されたイメージのプラットフォームが検出されたホスト プラットフォームと一致しません」) が発生した場合は、プラットフォームを明示的に指定します。
ソースから
サーバーの実行
サーバーは、さまざまなユースケースに合わせて複数のトランスポート モードをサポートしています。
STDIO モード (IDE 統合用)
AIコーディングアシスタントとの統合に最適:
出力は JSON-RPC メッセージとして stdout に送信され、ログは stderr に送られます。
カーソル統合の場合は、 .cursor/mcp.json
に以下を追加します。
SSE モード (サーバー送信イベント)
Web ベースのアプリケーションおよびサービスの場合:
イベント ストリームのhttp://localhost:9092/sse
にクライアントを接続します。
Dockerコンポーズ
データベース コンテナーを備えた開発環境向けに、完全な docker-compose.yml ファイルを提供しています。
この docker-compose セットアップの主な機能:
- db-mcp-serverコンテナは、すべてのデータベースサービスが準備完了するまで待機してから起動します。
- 複数のデータベースタイプとバージョンが含まれています(MySQL 8.0、PostgreSQL 15、16.3、17)
- すべてのデータベースには、サーバーが接続する前に完全に初期化されていることを確認するためのヘルスチェックが含まれています。
- すべてのデータベース サービス用の永続ボリューム
- 必要に応じてデータベースに直接アクセスするためのポートを公開
セットアップでは、 wait-for-it.sh
スクリプトを使用して、サーバーを起動する前にすべてのデータベースサービスが完全に準備されていることを確認します。このスクリプトは、処理を進める前に TCP ホスト/ポートが利用可能かどうかを確認します。このスクリプトをプロジェクトディレクトリに含める必要があります。Docker セットアップは、このスクリプトをコンテナにマウントし、データベースの可用性を確認するために使用します。
この設定を使用するには:
config.json ファイルに、docker-compose.yml で定義されたサービスと一致する接続詳細が含まれていることを確認します。
構成
データベース構成
データベース接続を含むconfig.json
ファイルを作成します。
docker-compose セットアップを使用する場合、 host
値は docker-compose.yml ファイル内のサービス名と一致する必要があることに注意してください。
コマンドラインオプション
サーバーはさまざまなコマンドライン オプションをサポートしています。
利用可能なツール
接続されたデータベースごとに (例: "mysql1"、"mysql2")、サーバーは以下を作成します。
ツールの命名規則
サーバーは、次の形式に従った名前のツールを自動的に生成します。
どこ:
<tool_type>
: クエリ、実行、トランザクション、スキーマ、パフォーマンスのいずれか<database_id>
: 構成で定義されたデータベースのID
ID「mysql1」を持つデータベースのツール名の例:
query_mysql1
execute_mysql1
transaction_mysql1
schema_mysql1
performance_mysql1
データベース固有のツール
query_<dbid>
: 指定されたデータベースに対してSQLクエリを実行するexecute_<dbid>
: SQL文を実行する(INSERT、UPDATE、DELETE)transaction_<dbid>
: データベーストランザクションを管理するschema_<dbid>
: データベーススキーマ情報を取得するperformance_<dbid>
: クエリパフォーマンスを分析する
グローバルツール
list_databases
: 構成されたすべてのデータベース接続を一覧表示する
例
複数のデータベースへのクエリ
トランザクションの実行
ロードマップ
当社は、DB MCP サーバーを拡張して、幅広いデータベース システムをサポートすることに取り組んでいます。
2025年第3四半期
- MongoDB - ドキュメント指向のデータベース操作のサポート
- SQLite - 軽量な組み込みデータベース統合
- MariaDB - MySQL実装と完全に同等の機能
2025年第4四半期
- Microsoft SQL Server - T-SQL 機能を備えたエンタープライズ データベース サポート
- Oracle データベース- エンタープライズグレードの統合
- Redis - キーバリューストア操作
2026
- Cassandra - 分散型 NoSQL データベースのサポート
- Elasticsearch - 専門的な検索と分析機能
- CockroachDB - グローバル規模のアプリケーション向けの分散 SQL データベース
- DynamoDB - AWSネイティブNoSQLデータベース統合
- Neo4j - グラフデータベースのサポート
- ClickHouse - アナリティクスデータベースのサポート
トラブルシューティング
よくある問題
- 接続エラー:
config.json
のデータベース接続設定を確認してください - ツールが見つかりません: サーバーが実行中であることを確認し、ツール名のプレフィックスを確認してください
- 失敗したクエリ: SQL構文とデータベース権限を確認してください
- Dockerボリュームマウントエラー:
mountpoint for /app/config.json: not a directory
のようなエラーが表示される場合、コンテナのそのパスに既にファイルが存在することが原因です。別のパス(例:/app/my-config.json
)にマウントし、設定を更新してください。 - Docker コマンド エラー: Docker でコマンド関連のエラーが発生した場合は、次のいずれかの方法を使用します。
- 環境変数を使用します:
-e TRANSPORT_MODE=sse -e CONFIG_PATH=/app/my-config.json
- エントリポイントを上書きします:
--entrypoint /app/server freepeak/db-mcp-server -t sse -c /app/my-config.json
- シェル実行を使用します:
freepeak/db-mcp-server /bin/sh -c "/app/server -t sse -c /app/my-config.json"
- 環境変数を使用します:
- Wait-for-it.sh が見つからないか動作しない: wait-for-it.sh に関連するエラーが表示される場合:
- プロジェクトディレクトリにファイルが存在することを確認してください
- 実行権限があることを確認します:
chmod +x wait-for-it.sh
- 適切な行末を確認します(Windows スタイルの CRLF ではなく、Unix スタイルの LF を使用します)。
- それでも問題が解決しない場合は、代わりにサービスヘルスチェックを使用するようにdocker-compose.ymlを修正してください。
ログ
サーバーは次の場所にログを書き込みます。
- STDIO モード: stderr
- SSE モード: stdout および
./logs/db-mcp-server.log
-debug
フラグを使用してデバッグ ログを有効にします。
貢献
貢献を歓迎します!ご協力いただける方法は次のとおりです。
- リポジトリをフォークする
- 機能ブランチを作成する:
git checkout -b new-feature
- 変更をコミットします:
git commit -am 'Add new feature'
- ブランチにプッシュ:
git push origin new-feature
- プルリクエストを送信する
コードが当社のコーディング標準に準拠し、適切なテストが含まれていることを確認してください。
ライセンス
このプロジェクトは MIT ライセンスに基づいてライセンスされています - 詳細については LICENSE ファイルを参照してください。
サポートとお問い合わせ
- ご質問や問題がある場合は、 mnhatlinh.doan@gmail.comまでメールでお問い合わせください。
- 問題を直接開く:問題トラッカー
- DB MCP Server があなたの仕事に役立つ場合は、ぜひサポートをご検討ください。
カーソル統合
ツールの命名規則
MCPサーバーは、カーソルが想定する形式に一致する名前でツールを登録します。ツール名は以下の形式に従います。
例: mcp_mysql1_db_mcp_server_stdio_schema_mysql1_db
サーバーはデフォルトでmysql1_db_mcp_server_stdio
という名前を使用します。これは、 mcp.json
ファイルの Cursor 構成と一致する必要があります。
カーソルの設定
カーソル設定 ( ~/.cursor/mcp.json
) には、次のような設定が必要です。
サーバーは、構成内のデータベース識別子に一致する単純な名前を持つツールを自動的に登録します。
カーソルでのMCPツールの使用
DB MCPサーバーが起動し、Cursorで適切に設定されると、AIアシスタントとの会話でMCPツールを使用できるようになります。ツールの命名規則は以下のとおりです。
どこ:
<server_name>
は、.cursor/mcp.json で定義された名前です (例: "multidb")<tool_type>
は、クエリ、実行、トランザクション、スキーマ、パフォーマンス、リストデータベースのいずれかです。<database_id>
は、構成のデータベース ID です (list_databases には必要ありません)
例:
データベース ID が「mysql1」である「multidb」という名前のサーバーの場合:
- すべてのデータベースを一覧表示します:
- データベースのクエリ:
- データベーススキーマの表示:
- ステートメントの実行:
- トランザクションの管理:
カーソル内のMCPツールのトラブルシューティング
AI アシスタントが MCP ツールを呼び出せない場合:
- サーバーが実行中であることを確認してください(
ps aux | grep server
で確認) - .cursor/mcp.json の設定が正しいことを確認してください
- .env の server_name が MCP ツールの呼び出しと一致することを確認します。
- 設定を変更した後はカーソルを再起動してください
- エラーがないかlogs/ディレクトリのログを確認してください
OpenAIエージェントSDK統合
DB MCP サーバーは OpenAI のエージェント SDK を完全にサポートしており、データベースと直接対話できる AI エージェントを作成できます。
前提条件
- APIアクセス可能なOpenAIアカウント
- OpenAI Agents SDK がインストールされています:
pip install openai-agents
- 実行中の DB MCP サーバー インスタンス (SSE モード)
基本的な統合例
DB MCP サーバーを OpenAI エージェントと統合する方法は次のとおりです。
統合のテスト
リポジトリには、OpenAI Agents SDK との互換性を確認するためのテスト スクリプトが含まれています。
スクリプトは次のようになります。
- 最新の変更を加えてサーバーを構築する
- サーバーがまだ実行されていない場合は起動します
- OpenAI Agents SDKとの接続をテストする
- 統合が正しく機能しているかどうかを報告する
エージェント SDK 統合のトラブルシューティング
問題が発生した場合:
- サーバーが期待されるポートでSSEモードで実行されていることを確認します。
- OpenAI APIキーが環境変数として設定されていることを確認してください
- エージェントの指示にデータベースツールが具体的に記載されていることを確認してください
- サーバーログにエラーメッセージがないか確認します
スターの歴史
データベースクエリのタイムアウト構成
config.json
ファイルで、各データベース接続のデータベースクエリタイムアウトを設定できます。タイムアウトは秒単位で指定します。
構成例:
指定されていない場合、デフォルトのクエリタイムアウトは30秒です。クエリ実行時にtimeout
パラメータ(ミリ秒単位)を指定することで、個々のクエリのタイムアウトをオーバーライドできます。
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
マルチDB MCPサーバーは、AIエージェントとデータベースのやり取りに革命をもたらすよう設計された、データベースモデルコンテキストプロトコルの高性能実装です。現在、MySQLとPostgreSQLデータベースをサポートしています。
Related MCP Servers
- -securityAlicense-qualityMCP Server simplifies the implementation of the Model Context Protocol by providing a user-friendly API to create custom tools and manage server workflows efficiently.Last updated -14TypeScriptMIT License
- -securityAlicense-qualityMCP Server provides a simpler API to interact with the Model Context Protocol by allowing users to define custom tools and services to streamline workflows and processes.Last updated -433TypeScriptMIT License
- AsecurityAlicenseAqualityA blazing fast MCP server that enables AI agents to interact with multiple PostgreSQL databases, providing functionality to list tables, inspect schemas, execute queries, and run transactions.Last updated -442TypeScriptMIT License
- AsecurityFlicenseAqualityAn all-in-one Model Context Protocol (MCP) server that connects your coding AI to numerous databases, data warehouses, data pipelines, and cloud services, streamlining development workflow through seamless integrations.Last updated -2Python