SQL Server MCP for Claude について
SQL Server MCP for Claude は Claude を Microsoft SQL Server に接続し、自然言語でのクエリと結果分析を可能にします。ODBC を使わず、pymssql で直接接続します。
主な機能
- 01pymssql による直接接続
- 02SQL Server での SQL クエリ実行
- 03クエリ結果と行数の返却
- 04Claude 連携のインストールと設定
活用シーン
- 01クエリ前のデータベーススキーマ確認
- 02読み取り専用のデータ分析クエリ
- 03Claude によるクエリ結果の解釈
MCP 対応
MCP 経由で Claude に execute_sql ツールを公開します。設定済み SQL Server で指定されたクエリを実行し、結果、行数、成功状態を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Claude 用 SQL Server MCP
このリポジトリには、Claude 用の SQL Server MCP(Model Context Protocol)統合が含まれています。この統合により、Claude は自然言語を使って SQL Server データベースのデータを直接クエリし、分析できます。
この MCP サーバーは MCP Review の認定を受けています:https://mcpreview.com/mcp-servers/shakunvohradeltek/mcpserverformssql
概要
SQL MCP 統合は、次の手順で動作します。
- Claude が Model Context Protocol 経由で通信できるローカルサーバーを設定します
- pymssql を使って SQL Server データベースに直接接続します(ODBC は不要です)
- Claude の自然言語によるリクエストを SQL クエリに変換します
- クエリ結果を Claude に返し、解釈や提示を行います
重要なプロトコルに関する注意:この統合では、互換性を確保するため、Claude が必要とする MCP プロトコルのバージョン「2025-03-26」を使用します。この統合には、適切な JSON-RPC 形式や Content-Length ヘッダーを含め、プロトコルを正しく処理する固定の MCP 実装が含まれています。
主な機能
- ODBC 不要:pymssql を使って SQL Server に直接接続します
- シンプルなアーキテクチャ:依存関係を最小限に抑えた、わかりやすい設計です
- プロトコルのサポート:Claude の MCP システムで動作します
- クロスプラットフォーム:macOS と Linux で一貫して動作します
- 簡単なインストール:1 ステップでインストールできます
- スマートな設定:SQL サポートの追加時に、既存の MCP 設定と Claude の指示を保持します
インストール
前提条件
- macOS または Ubuntu Linux
- Python 3.7 以降
- FreeTDS(macOS では Homebrew 経由で自動的にインストールされます)
- Claude CLI(claude.ai/docs/installation からインストールしてください)
- 適切な権限を持つ SQL Server の認証情報(読み取り専用を推奨します。セキュリティ上の注意を参照してください)
インストール手順
- インストールスクリプトを実行します。
./install_sql_mcp.sh
-
プロンプトに従って、SQL Server の接続情報を入力します。
- SQL Server のホスト名
- SQL Server のポート(デフォルト:1433)
- データベース名
- ユーザー名
- パスワード
- サーバー証明書を信頼するかどうか(デフォルト:true)
-
インストーラーによって、次の処理が行われます。
- 必要な依存関係をインストールします
- SQL Server への接続用に FreeTDS を設定します
- Python 仮想環境をセットアップします
- 必要な Python パッケージをインストールします
- 必要なスクリプトを作成します
- SQL MCP サーバーを認識するよう Claude を設定します
-
インストールを確認します。
./run_simple_sql.sh "SELECT 1 AS TestQuery"
使い方
- Claude を起動します。
claude
次の操作もできます。
- MCP の状態を確認する:
claude /mcp - MCP をデバッグする:
claude --mcp-debug
- データベースについて Claude に質問します。
@sql execute_sql
SELECT TOP 5 * FROM YourTable
@sql execute_sql
SELECT COUNT(*) FROM Users WHERE IsActive = 1
⚠️ セキュリティ上の注意
重要: セキュリティ上の理由から、権限を制限したデータベースアカウントを使用してください。
- Claude がデータベースにアクセスするための、読み取り専用の専用ユーザーを作成してください
- DROP、DELETE、またはテーブル作成の権限を持つアカウントは使用しないでください
- 本番環境では、sa アカウントや管理者アカウントを決して使用しないでください
- 分析に必要な特定のテーブルまたはビューのみにアクセスを制限することを検討してください
権限が過剰なアカウントを使用すると、自然言語のリクエストに基づいて Claude が SQL クエリを生成した際、誤ってデータを失ったり、データベースの構造を変更したりする可能性があります。
Claude へのプロンプト作成のベストプラクティス
Claude を使用して SQL Server データベースを検索する際は、次のベストプラクティスに従ってください。
-
まず Claude にデータベーススキーマを調べてもらいます:クエリを作成する前に、データベースの構造を調べ、テーブル、カラム、リレーションシップを把握するよう Claude に指示します。
@sql execute_sql SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'dbo' ORDER BY TABLE_NAME, ORDINAL_POSITION -
データモデルに関するコンテキストを提供します:データベースにどのようなデータが含まれているか、またテーブル同士がどのように関連しているかを説明します。
-
スキーマの調査から始めます:複雑なクエリを作成する前に、まずテーブル構造を調べるよう Claude に依頼します。
-
クエリ結果を確認します:クエリ結果が何を意味するか Claude に説明してもらい、期待どおりの結果か確認します。
-
段階的に複雑さを増やします:簡単なクエリから始め、Claude がスキーマを理解していることを確認しながら、徐々に複雑なクエリを追加します。
トラブルシューティング
SQL MCP との連携で問題が発生した場合は、次の手順を試してください。
- 直接接続をテストします。
./run_simple_sql.sh "SELECT 1 AS TestQuery"
- FreeTDS が正しく設定されていることを確認します。
tsql -C
- Claude が MCP サーバーを見つけられることを確認します。
claude mcp list
-
「Connection failed」または「Connection closed」というメッセージが表示されてもクエリが動作する場合は、これは正常な動作なので無視してかまいません。
-
プロトコルバージョンの互換性:このインストールでは、Claude の MCP に必要なプロトコルバージョン「2025-03-26」を使用します。MCP のトランスポートが閉じられたというエラーが発生した場合は、プロトコルバージョンが変更されていないか確認してください。
-
JSON-RPC 形式:Claude の MCP では、null ではない ID と Content-Length ヘッダーを含む、適切な JSON-RPC 形式が必要です。インストールスクリプトで正しく設定されます。
公開される MCP ツール
MCP サーバーは、次のツールを Claude に公開します。
execute_sql
- 説明:接続されたデータベースで SQL クエリを実行します
- 入力スキーマ:
query(string、必須):実行する SQL クエリ
- 使用方法:Claude で
@sql execute_sqlに続けて SQL クエリを入力します - 戻り値:クエリ結果、行数、成功ステータスを含む JSON オブジェクト
ファイルとコンポーネント
インストール時に作成されます。
simple_sql.py- SQL クエリを直接処理する Python スクリプトrun_simple_sql.sh- Python スクリプトを呼び出すラッパースクリプトmcp_fixed.py- ツールを適切に公開する MCP プロトコルの実装run_mcp_fixed.sh- MCP サーバー用のラッパースクリプト.mcp.json- MCP サーバーの設定ファイルCLAUDE.md- SQL 連携の使用方法を Claude に説明する手順書
チームへの配布
この SQL MCP 連携をチームに配布するには、次の手順に従ってください。
-
このリポジトリをチームメンバーと共有します
-
チームメンバーは次の作業を行います。
- スクリプトに実行権限を付与します:
chmod +x *.sh - インストールスクリプトを実行します:
./install_sql_mcp.sh - プロンプトに従って SQL Server の詳細を入力します
- スクリプトに実行権限を付与します:
最新の更新(2024 年 5 月)
インストールスクリプトが更新され、次の重要な修正が行われました。
- Claude の要件に合わせて、MCP のプロトコルバージョンを「2025-03-26」に修正しました(以前は「2024-11-05」)。
- JSON-RPC 形式を適切に処理する、改良された MCP 実装を追加しました。
- MCP 通信で Content-Length ヘッダーを適切に処理するようにしました。
- プロトコルの通知処理を修正しました。
- MCP 接続を維持するための継続的なループを追加しました。
- エラー処理とデバッグログを改善しました。
- 新機能:MCP プロトコルを通じて SQL ツールを公開 - MCP サーバーが
tools/listメソッドとtools/callメソッドを通じてexecute_sqlツールを適切に公開するようになり、Claude のツール検索・実行システムと互換性を持つようになりました。
クレジット
この SQL MCP 連携は、次のオープンソースプロジェクトをベースにしています。
- FreeTDS - SQL Server との通信に使用する TDS プロトコルライブラリ
- pymssql - SQL Server 用の Python DB-API インターフェイス
- Model Context Protocol - Claude でのツール利用に関する Anthropic のプロトコル
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。