Skip to main content
Glama

MySQL MCP Server

by yuki777
systemPatterns.md5.71 kB
# MySQL MCP Server - システムパターン ## アーキテクチャ概要 このプロジェクトは、Model Context Protocol (MCP) の仕様に準拠したTypeScriptサーバーとして構築されています。主要なアーキテクチャパターンは以下の通りです: 1. **モジュール分割設計** - core: MCPの中核機能(ツール定義、リソース管理) - mysql: MySQLデータベース接続と操作 - config: 設定管理 - cli: コマンドラインインターフェース - utils: ユーティリティ関数(サーバー起動、stdio通信など) 2. **レイヤードアーキテクチャ** - MCPプロトコルレイヤー(標準入出力インターフェース) - ビジネスロジックレイヤー(SQLクエリ実行、結果処理) - データアクセスレイヤー(MySQL接続、クエリ実行) - 設定・永続化レイヤー(設定管理、接続プロファイル管理、接続情報保存) 3. **stdin/stdout通信設計** - JSON形式のメッセージ交換 - タイプ付きリクエスト/レスポンス構造 - 非同期イベント処理 4. **接続管理設計** - サーバー起動とデータベース接続のライフサイクル分離 - 状態管理パターン(接続状態の監視と制御) - ツールベースの接続インターフェース - プロファイルベースの接続管理 ## 技術的決定 ### TypeScriptの採用 - 型安全性によるコードの堅牢性向上 - モジュール性と保守性の向上 - npxでの実行に適した構造 ### Express フレームワークの採用 - ルーティング処理の簡素化 - ミドルウェアによる機能拡張 - エラーハンドリングの標準化 ### MySQL2パッケージの採用 - プロミスベースのインターフェース - セキュアな接続オプション - パフォーマンスの最適化 ### Commander パッケージの採用 - コマンドライン引数の解析 - ヘルプドキュメントの自動生成 - サブコマンドとオプション管理 ## プロファイル管理アーキテクチャ 複数接続プロファイル管理機能は以下の設計原則に基づいています: 1. **名前付きリソース管理** - 接続情報にプロファイル名を関連付け - 名前での接続先の参照と切り替え - 既存の接続情報との互換性維持 2. **レジストリパターン** - 複数プロファイルの一元管理 - プロファイル名をキーとした検索 - プロファイルのCRUD操作のカプセル化 3. **メタデータ付き永続化** - 接続情報にメタデータ(プロファイル名)を付加 - JSONファイルによる構造化ストレージ - 異なるプロファイル間の競合回避 4. **ダックタイピング互換性** - 既存インターフェースの拡張 - 旧形式との後方互換性 - 新形式への自動変換メカニズム ## 実装済みデザインパターン 1. **シングルトンパターン** - 設定管理クラス - DBコネクションプール 2. **ファクトリーパターン** - MySQLコネクション生成 - MCPツールとリソースの登録 3. **アダプターパターン** - MCPプロトコルとMySQLクエリのインターフェース橋渡し - HTTP要求とMCPリクエストの変換 4. **コマンドパターン** - 各SQLクエリをコマンドとしてカプセル化 - ツール実行のカプセル化 5. **ストラテジーパターン** - 設定の読み込み方法 - エラーハンドリング戦略 - 接続モード選択(自動/手動/プロファイル) 6. **遅延初期化パターン** - データベース接続の遅延確立 - オンデマンド接続処理 - 必要に応じたリソース初期化 7. **ブリッジパターン** - MCPサーバーとデータベース接続の抽象化 - 接続状態から独立したサーバー操作 ## 接続管理アーキテクチャ 接続管理機能は以下の設計原則に基づいています: 1. **関心の分離** - サーバーの起動処理と接続処理を分離 - 接続状態の管理を専用のメソッドで実装 - 設定とデータベース接続の分離 - プロファイル管理と実際の接続処理の分離 2. **ステート管理** - 接続状態の明示的な追跡 - 状態に応じたエラーハンドリング - ユーザーへの明確なフィードバック 3. **プラグイン構造** - ツール形式での接続管理機能の実装 - MCPプロトコルに準拠した接続インターフェース - 既存ツールとの統合 4. **冪等性保証** - 再接続時の安全な処理 - 既存接続の適切なクローズ - 接続情報の保存と再利用 - プロファイル名の一意性と衝突検出 5. **リポジトリパターン** - 接続プロファイルのコレクション管理 - プロファイル検索・追加・削除操作 - JSONファイルベースのストレージ ## エラーハンドリング戦略 - 詳細なエラーメッセージ - クエリエラーの解釈と捕捉 - ユーザーフレンドリーなエラー表示 - プロミスベースのエラーチェーン ## セキュリティ考慮事項 - 接続情報の安全な管理 - クエリのサニタイズとバリデーション - 最大結果サイズの制限によるDoS対策 - クエリタイムアウト設定 - 接続状態の検証によるセキュリティチェック - 未接続状態での不正クエリ実行の防止

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yuki777/mysql-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server