mcp-server-sql-analyzer について
SQLGlot を利用して、SQL の構文チェック、方言間の変換、テーブルおよびカラム参照の抽出を行う MCP サーバーです。SQL の生成や移行を検証したいユーザー向けです。
主な機能
- 01エラー位置を含む SQL 構文チェック
- 02SQL 方言間の変換
- 03テーブルおよび CTE 参照の抽出
- 04テーブル情報付きのカラム参照の抽出
- 05対応 SQL 方言の一覧取得
活用シーン
- 01生成した SQL を使用前に検証
- 02MySQL のクエリを PostgreSQL へ移行
- 03複雑なクエリのテーブルとカラムの依存関係の分析
MCP 対応
本プロジェクトは MCP サーバーであり、lint_sql や transpile_sql などのツールと dialects://all リソースを通じて SQL 分析機能を MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-server-sql-analyzer
SQLGlot を使用して、SQL の分析、リンティング、方言変換機能を提供する Model Context Protocol(MCP)サーバーです。
概要
SQL Analyzer MCP サーバーは、SQL クエリを分析して処理するためのツールを提供します。次のことに役立ちます。
- SQL 構文の検証とリンティング
- 異なる SQL 方言間でのクエリの変換(例:MySQL から PostgreSQL)
- テーブル参照と依存関係の抽出および分析
- カラムの使用状況と関連性の特定
- 対応している SQL 方言の確認
Claude によるこのサーバーの使用方法
AI アシスタントとして、このサーバーは SQL を効率的に扱えるようユーザーを支援する能力を高めます。
-
クエリの検証:ユーザーに提案する前に SQL 構文をすばやく検証できるため、正しく、方言に適したクエリを提示できます。
-
方言の変換:異なるデータベースシステム間でクエリを移行する必要がある場合、クエリのロジックを維持しながら、構文を正確に変換できます。
-
コード分析:テーブルとカラムの参照分析により、複雑なクエリを理解しやすくなり、クエリの構造を説明したり、最適化を提案したりしやすくなります。
-
互換性の確認:対応している方言とそれぞれの機能を把握することで、データベース固有のベストプラクティスを案内できます。
このツールセットにより、構文エラーや方言固有の問題のリスクを抑えながら、SQL 関連の支援をより正確かつ有用なものにできます。
ヒント
Claude Desktop の設定で個人設定を更新し、生成された SQL を lint_sql ツールで最初に検証するよう指定してください。
ツール
-
lint_sql
- SQL クエリの構文を検証し、エラーがあれば返します
- 入力:
- sql (string):分析する SQL クエリ
- dialect (string, optional):SQL 方言(例:'mysql'、'postgres')
- 戻り値:ParseResult。次の内容を含みます。
- is_valid (boolean):SQL が有効かどうか
- message (string):エラーメッセージ、または「構文エラーはありません」
- position (object, optional):エラーがある場合の行と列
-
transpile_sql
- 異なる方言間で SQL を変換します
- 入力:
- sql (string):変換する SQL 文
- read_dialect (string):変換元の SQL 方言
- write_dialect (string):変換先の SQL 方言
- 戻り値:TranspileResult。次の内容を含みます。
- is_valid (boolean):変換に成功したかどうか
- message (string):エラーメッセージ、または成功を示すメッセージ
- sql (string):変換に成功した場合の変換後の SQL
-
get_all_table_references
- SQL からテーブルと CTE の参照を抽出します
- 入力:
- sql (string):分析する SQL 文
- dialect (string, optional):SQL 方言
- 戻り値:TableReferencesResult。次の内容を含みます。
- is_valid (boolean):分析に成功したかどうか
- message (string):ステータスメッセージ
- tables (array):タイプ、カタログ、データベース、テーブル名、エイリアス、完全修飾名を含むテーブル参照の一覧
-
get_all_column_references
- テーブルのコンテキストとともにカラム参照を抽出します
- 入力:
- sql (string):分析する SQL 文
- dialect (string, optional):SQL 方言
- 戻り値:ColumnReferencesResult。次の内容を含みます。
- is_valid (boolean):分析に成功したかどうか
- message (string):ステータスメッセージ
- columns (array):カラム名、テーブル名、完全修飾名を含むカラム参照の一覧
リソース
SQL 方言の確認
dialects://all
すべてのツールで使用できる、対応 SQL 方言の一覧を返します。
設定
uvx を使用する場合(推奨)
claude_desktop_config.json に以下を追加します。
{
"mcpServers": {
"sql-analyzer": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/j4c0bs/mcp-server-sql-analyzer.git",
"mcp-server-sql-analyzer"
]
}
}
}
uv を使用する場合
このリポジトリをクローンした後、claude_desktop_config.json に以下を追加します。
{
"mcpServers": {
"sql-analyzer": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp-server-sql-analyzer",
"run",
"mcp-server-sql-analyzer"
]
}
}
}
開発
開発モードでサーバーを実行するには:
# Clone the repository
git clone [email protected]:j4c0bs/mcp-server-sql-analyzer.git
# Run the server
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-server-sql-analyzer run mcp-server-sql-analyzer
ユニットテストを実行するには:
uv run pytest .
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。