Sql Server Mcp について
MCPQLは、SQL Serverの分析や開発向けのMCPサーバーです。スキーマ確認、データ検索、オブジェクト探索のツールを提供し、変更操作とストアドプロシージャ実行は既定で無効です。
主な機能
- 01テーブルとストアドプロシージャの分析
- 02データのプレビューと列統計の取得
- 03SQLクエリとストアドプロシージャの実行
- 04データベースオブジェクトと依存関係の検索
- 05データベースのセキュリティ状態の確認
- 06複数の認証方式への対応
活用シーン
- 01テーブルのスキーマ、インデックス、制約の確認
- 02列統計とサンプル値の確認
- 03データベースオブジェクトと依存関係の検索
- 04権限を有効にして変更操作を実行
MCP 対応
MCPクライアントに、スキーマ分析、データ検索、オブジェクト検索、依存関係の確認など、SQL Server向けツールを公開します。変更操作とストアドプロシージャの実行は既定で無効です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCPQL - SQL Server MCP
SQL Server データベース操作のための、包括的な Model Context Protocol(MCP) サーバーです。このサーバーは、MCP プロトコルを通じて、データベースの分析、オブジェクトの検出、データの操作を行うための強力なツールを 10 個提供します。
🚀 クイックスタート
前提条件
- Node.js 18+ と npm
- 適切な接続認証情報を持つ SQL Server データベース
- MCP 対応クライアント(Claude Desktop、Cursor IDE、または任意の MCP クライアントなど)
インストールと設定
オプション 1:GitHub から npx を使用(推奨)
インストールは不要です!MCP クライアントを設定するだけです。
Claude Desktop 用(claude_desktop_config.json):
{
"mcpServers": {
"mcpql": {
"command": "npx",
"args": ["-y", "hendrickcastro/mcpql"],
"env": {
"DB_AUTHENTICATION_TYPE": "sql",
"DB_SERVER": "your_server",
"DB_NAME": "your_database",
"DB_USER": "your_username",
"DB_PASSWORD": "your_password",
"DB_PORT": "1433",
"DB_ENCRYPT": "false",
"DB_TRUST_SERVER_CERTIFICATE": "true"
}
}
}
}
Cursor IDE 用:
{
"mcpServers": {
"mcpql": {
"command": "npx",
"args": ["-y", "hendrickcastro/mcpql"],
"env": {
"DB_AUTHENTICATION_TYPE": "sql",
"DB_SERVER": "your_server",
"DB_NAME": "your_database",
"DB_USER": "your_username",
"DB_PASSWORD": "your_password",
"DB_PORT": "1433",
"DB_ENCRYPT": "false",
"DB_TRUST_SERVER_CERTIFICATE": "true"
}
}
}
}
オプション 2:ローカル開発環境へのインストール
- クローンとセットアップ:
git clone https://github.com/hendrickcastro/MCPQL.git
cd MCPQL
npm install
npm run build
- データベース接続を設定:
データベースの認証情報を記述した
.envファイルを作成します。
# Basic SQL Server connection
DB_AUTHENTICATION_TYPE=sql
DB_SERVER=localhost
DB_NAME=MyDatabase
DB_USER=sa
DB_PASSWORD=YourPassword123!
DB_PORT=1433
DB_ENCRYPT=false
DB_TRUST_SERVER_CERTIFICATE=true
- ローカルパスを使用して MCP クライアントを設定:
{
"mcpServers": {
"mcpql": {
"command": "node",
"args": ["path/to/MCPQL/dist/server.js"]
}
}
}
🛠️ 利用可能なツール
MCPQL は、SQL Server データベース操作のための包括的なツールを 11 個提供します。
1. 🏗️ テーブル分析 - mcp_table_analysis
列、キー、インデックス、制約など、テーブル構造を包括的に分析します。
2. 📋 ストアドプロシージャ分析 - mcp_sp_structure
パラメーター、依存関係、ソースコードなど、ストアドプロシージャの構造を分析します。
3. 👀 データのプレビュー - mcp_preview_data
必要に応じてフィルタリングや行数制限を指定し、テーブルデータをプレビューします。
4. 📊 列の統計情報 - mcp_get_column_stats
特定の列に関する包括的な統計情報を取得します。
5. ⚙️ ストアドプロシージャの実行 - mcp_execute_procedure
ストアドプロシージャをパラメーター付きで実行し、結果を返します。
6. 🔍 SQL クエリの実行 - mcp_execute_query
包括的なエラー処理を備えた、カスタム SQL クエリを実行します。
7. ⚡ クイックデータ分析 - mcp_quick_data_analysis
行数、列の分布、上位の値など、基本的な統計分析を行います。
8. 🔎 包括的な検索 - mcp_search_comprehensive
設定可能な条件で、名前や定義を基にデータベースオブジェクトを検索します。
9. 🔗 オブジェクトの依存関係 - mcp_get_dependencies
データベースオブジェクト(テーブル、ビュー、ストアドプロシージャなど)の依存関係を取得します。
10. 🎯 サンプル値 - mcp_get_sample_values
テーブル内の特定の列からサンプル値を取得します。
11. 🔒 セキュリティ状態 - mcp_get_security_status
データベース操作の現在のセキュリティ構成と状態を取得します。
📋 使用例
テーブルの分析
// Get complete table structure
const analysis = await mcp_table_analysis({
table_name: "dbo.Users"
});
// Get quick data overview
const overview = await mcp_quick_data_analysis({
table_name: "dbo.Users",
sample_size: 500
});
// Preview table data with filters
const data = await mcp_preview_data({
table_name: "dbo.Users",
filters: { "Status": "Active", "Department": "IT" },
limit: 25
});
データベースオブジェクトの検索
// Find all objects containing "User"
const objects = await mcp_search_comprehensive({
pattern: "User",
search_in_names: true,
search_in_definitions: false
});
// Find procedures that query a specific table
const procedures = await mcp_search_comprehensive({
pattern: "FROM Users",
object_types: ["PROCEDURE"],
search_in_definitions: true
});
ストアドプロシージャの分析
// Get complete stored procedure analysis
const spAnalysis = await mcp_sp_structure({
sp_name: "dbo.usp_GetUserData"
});
// Execute a stored procedure
const result = await mcp_execute_procedure({
sp_name: "dbo.usp_GetUserById",
params: { "UserId": 123, "IncludeDetails": true }
});
データ分析
// Get column statistics
const stats = await mcp_get_column_stats({
table_name: "dbo.Users",
column_name: "Age"
});
// Get sample values from a column
const samples = await mcp_get_sample_values({
table_name: "dbo.Users",
column_name: "Department",
limit: 15
});
🔧 環境変数と接続タイプ
MCPQL は、包括的な構成オプションを備えた複数の SQL Server 接続タイプに対応しています。
🔐 認証タイプ
DB_AUTHENTICATION_TYPE に次のいずれかを設定します。
sql- SQL Server 認証(デフォルト)windows- Windows 認証azure-ad- Azure Active Directory 認証
📋 環境変数一覧
| 変数 | 説明 | デフォルト | 必須条件 |
|---|---|---|---|
| 基本接続 | |||
DB_AUTHENTICATION_TYPE | 認証タイプ(sql/windows/azure-ad) | sql | すべて |
DB_SERVER | SQL Server のホスト名/IP | - | すべて |
DB_NAME | データベース名 | - | すべて |
DB_PORT | SQL Server のポート | 1433 | すべて |
DB_TIMEOUT | 接続タイムアウト(ms) | 30000 | すべて |
DB_REQUEST_TIMEOUT | リクエストタイムアウト(ms) | 30000 | すべて |
| SQL Server 認証 | |||
DB_USER | SQL Server のユーザー名 | - | SQL 認証 |
DB_PASSWORD | SQL Server のパスワード | - | SQL 認証 |
| Windows 認証 | |||
DB_DOMAIN | Windows ドメイン | - | Windows 認証 |
DB_USER | Windows ユーザー名 | 現在のユーザー | Windows 認証 |
DB_PASSWORD | Windows パスワード | - | Windows 認証 |
| Azure AD 認証 | |||
DB_USER | Azure AD ユーザー名 | - | Azure AD(パスワード) |
DB_PASSWORD | Azure AD パスワード | - | Azure AD(パスワード) |
DB_AZURE_CLIENT_ID | Azure AD アプリのクライアント ID | - | Azure AD(サービスプリンシパル) |
DB_AZURE_CLIENT_SECRET | Azure AD アプリのクライアントシークレット | - | Azure AD(サービスプリンシパル) |
DB_AZURE_TENANT_ID | Azure AD テナント ID | - | Azure AD(サービスプリンシパル) |
| SQL Server Express | |||
DB_INSTANCE_NAME | 名前付きインスタンス(例:SQLEXPRESS) | - | Express インスタンス |
| セキュリティ設定 | |||
DB_ENCRYPT | 暗号化を有効にする | false | すべて |
DB_TRUST_SERVER_CERTIFICATE | サーバー証明書を信頼する | false | すべて |
DB_ENABLE_ARITH_ABORT | 算術エラーによる中断を有効にする | true | すべて |
DB_USE_UTC | 日付に UTC を使用する | true | すべて |
| 接続プール | |||
DB_POOL_MAX | 最大接続数 | 10 | すべて |
DB_POOL_MIN | 最小接続数 | 0 | すべて |
DB_POOL_IDLE_TIMEOUT | アイドルタイムアウト(ms) | 30000 | すべて |
| 詳細設定 | |||
DB_CANCEL_TIMEOUT | キャンセルタイムアウト(ms) | 5000 | すべて |
DB_PACKET_SIZE | パケットサイズ(バイト) | 4096 | すべて |
DB_CONNECTION_STRING | 完全な接続文字列 | - | 個別設定の代替 |
| セキュリティ制御 | |||
DB_ALLOW_MODIFICATIONS | DML/DDL 操作を許可する | false | すべて |
DB_ALLOW_STORED_PROCEDURES | ストアドプロシージャの実行を許可する | false | すべて |
🔧 接続構成例
1. 🏠 ローカル SQL Server(SQL 認証)
{
"mcpServers": {
"mcpql": {
"command": "npx",
"args": ["-y", "hendrickcastro/mcpql"],
"env": {
"DB_AUTHENTICATION_TYPE": "sql",
"DB_SERVER": "localhost",
"DB_NAME": "MyDatabase",
"DB_USER": "sa",
"DB_PASSWORD": "YourPassword123!",
"DB_PORT": "1433",
"DB_ENCRYPT": "false",
"DB_TRUST_SERVER_CERTIFICATE": "true"
}
}
}
}
2. 🏢 SQL Server Express(名前付きインスタンス)
{
"mcpServers": {
"mcpql": {
"command": "npx",
"args": ["-y", "hendrickcastro/mcpql"],
"env": {
"DB_AUTHENTICATION_TYPE": "sql",
"DB_SERVER": "localhost",
"DB_INSTANCE_NAME": "SQLEXPRESS",
"DB_NAME": "MyDatabase",
"DB_USER": "sa",
"DB_PASSWORD": "YourPassword123!",
"DB_ENCRYPT": "false",
"DB_TRUST_SERVER_CERTIFICATE": "true"
}
}
}
}
3. 🪟 Windows 認証
{
"mcpServers": {
"mcpql": {
"command": "npx",
"args": ["-y", "hendrickcastro/mcpql"],
"env": {
"DB_AUTHENTICATION_TYPE": "windows",
"DB_SERVER": "MYSERVER",
"DB_NAME": "MyDatabase",
"DB_DOMAIN": "MYDOMAIN",
"DB_USER": "myuser",
"DB_PASSWORD": "mypassword",
"DB_ENCRYPT": "false",
"DB_TRUST_SERVER_CERTIFICATE": "true"
}
}
}
}
4. ☁️ Azure SQL Database(Azure AD パスワード)
{
"mcpServers": {
"mcpql": {
"command": "npx",
"args": ["-y", "hendrickcastro/mcpql"],
"env": {
"DB_AUTHENTICATION_TYPE": "azure-ad",
"DB_SERVER": "myserver.database.windows.net",
"DB_NAME": "MyDatabase",
"DB_USER": "[email protected]",
"DB_PASSWORD": "userpassword",
"DB_PORT": "1433",
"DB_ENCRYPT": "true",
"DB_TRUST_SERVER_CERTIFICATE": "false"
}
}
}
}
5. 🔐 Azure SQL Database(サービスプリンシパル)
{
"mcpServers": {
"mcpql": {
"command": "npx",
"args": ["-y", "hendrickcastro/mcpql"],
"env": {
"DB_AUTHENTICATION_TYPE": "azure-ad",
"DB_SERVER": "myserver.database.windows.net",
"DB_NAME": "MyDatabase",
"DB_AZURE_CLIENT_ID": "your-client-id",
"DB_AZURE_CLIENT_SECRET": "your-client-secret",
"DB_AZURE_TENANT_ID": "your-tenant-id",
"DB_PORT": "1433",
"DB_ENCRYPT": "true",
"DB_TRUST_SERVER_CERTIFICATE": "false"
}
}
}
}
6. 🔗 接続文字列の使用
{
"mcpServers": {
"mcpql": {
"command": "npx",
"args": ["-y", "hendrickcastro/mcpql"],
"env": {
"DB_CONNECTION_STRING": "Server=localhost;Database=MyDatabase;User Id=sa;Password=YourPassword123!;Encrypt=false;TrustServerCertificate=true;"
}
}
}
}
🔒 セキュリティ機能
MCPQL には、特に本番環境で重要となる、データベースの誤った変更を防止するための包括的なセキュリティ制御が含まれています。
🛡️ セキュリティ制御
データベース変更の保護
DB_ALLOW_MODIFICATIONS:DML/DDL 操作(INSERT、UPDATE、DELETE、ALTER、DROP、CREATE)を制御しますDB_ALLOW_STORED_PROCEDURES:ストアドプロシージャの実行を制御します- デフォルト:セキュリティを最大限に高めるため、両方の変数のデフォルト値は
falseです
セキュリティ状態ツール
mcp_get_security_status を使用して、現在のセキュリティ設定を確認します:
const status = await mcp_get_security_status({});
🔧 操作の有効化
開発環境の場合
{
"mcpServers": {
"mcpql": {
"command": "npx",
"args": ["-y", "hendrickcastro/mcpql"],
"env": {
"DB_SERVER": "localhost",
"DB_NAME": "MyDatabase",
"DB_USER": "sa",
"DB_PASSWORD": "YourPassword123!",
"DB_ALLOW_MODIFICATIONS": "true",
"DB_ALLOW_STORED_PROCEDURES": "true"
}
}
}
}
本番環境の場合(推奨)
{
"mcpServers": {
"mcpql": {
"command": "npx",
"args": ["-y", "hendrickcastro/mcpql"],
"env": {
"DB_SERVER": "prod-server",
"DB_NAME": "ProductionDB",
"DB_USER": "readonly_user",
"DB_PASSWORD": "secure_password",
"DB_ALLOW_MODIFICATIONS": "false",
"DB_ALLOW_STORED_PROCEDURES": "false"
}
}
}
}
🚨 セキュリティエラーメッセージ
操作がブロックされると、MCPQL は明確なガイダンスを表示します:
Error: Modification operations are disabled for security.
To enable modifications, configure: DB_ALLOW_MODIFICATIONS=true
Error: Stored procedure execution is disabled for security.
To enable stored procedures, configure: DB_ALLOW_STORED_PROCEDURES=true
📋 常に許可される操作
セキュリティ設定にかかわらず、以下の操作は常に許可されます:
- SELECT クエリ
- テーブル分析とスキーマの確認
- 列の統計情報とデータのプレビュー
- オブジェクト検索と依存関係の分析
- データベースのメタデータ操作
セキュリティに関するドキュメントの全容については、SECURITY.md を参照してください。
🚨 よくある問題のトラブルシューティング
接続の問題
- 「ログインに失敗しました」:ユーザー名とパスワードを確認してください。Windows 認証の場合は、
DB_AUTHENTICATION_TYPE=windowsが設定されていることを確認してください - 「サーバーが見つかりませんでした」:サーバー名とポートを確認してください。SQL Express の場合は、
DB_INSTANCE_NAMEを追加してください - 「証明書」エラー:ローカル開発では、
DB_TRUST_SERVER_CERTIFICATE=trueを設定してください - タイムアウトエラー:
DB_TIMEOUTを増やすか、ネットワーク接続を確認してください
SQL Server Express のセットアップ
- SQL Server Configuration Manager で TCP/IP プロトコルを有効にします
- 静的ポート(通常は 1433)を設定するか、Browser Service を使用して動的ポートを使用します
- SQL Server のトラフィックを許可するように Windows ファイアウォールを設定します
- デフォルトの Express インストールでは、
DB_INSTANCE_NAME=SQLEXPRESSを使用します
Azure SQL Database のセットアップ
- クライアント IP を許可するサーバーファイアウォールルールを作成します
- サーバー名には
server.database.windows.netの形式を使用します - 常に
DB_ENCRYPT=trueとDB_TRUST_SERVER_CERTIFICATE=falseを設定します - サービスプリンシパル認証では、Azure AD にアプリを登録し、アクセス許可を割り当てます
🧪 テスト
包括的なテストスイートを実行します:
npm test
テストスイートには、実際のデータベースを使用したテストと完全なカバレッジを含む、10 個すべてのツールの包括的なテストが含まれています。
🏗️ アーキテクチャ
プロジェクト構成
MCPQL/
├── src/
│ ├── __tests__/ # Comprehensive test suite
│ ├── tools/ # Modular tool implementations
│ │ ├── tableAnalysis.ts # Table analysis tools
│ │ ├── storedProcedureAnalysis.ts # SP analysis tools
│ │ ├── dataOperations.ts # Data operation tools
│ │ ├── objectSearch.ts # Search and discovery tools
│ │ ├── types.ts # Type definitions
│ │ └── index.ts # Tool exports
│ ├── db.ts # Database connection management
│ ├── server.ts # MCP server setup and handlers
│ ├── tools.ts # Tool definitions and schemas
│ └── mcp-server.ts # Tool re-exports
├── dist/ # Compiled JavaScript output
└── package.json # Dependencies and scripts
主な機能
- ⚡ コネクションプーリング:効率的なデータベース接続管理
- 🛡️ 堅牢なエラー処理:包括的なエラー処理と検証
- 📋 豊富なメタデータ:包括的なデータベース情報を含む詳細な結果
- 🔧 柔軟な設定:環境に基づく設定
- 📊 最適化されたクエリ:すべての操作に対応する効率的な SQL クエリ
📝 重要な注意事項
- オブジェクト名:常にスキーマ修飾名(例:
dbo.Users、api.Idiomas)を使用してください - エラー処理:すべてのツールは、成功/エラーを示すインジケーターを含む構造化レスポンスを返します
- 型安全性:適切な型定義による完全な TypeScript サポート
- 接続管理:自動コネクションプーリングと再試行ロジック
- セキュリティ:SQL インジェクションを防ぐためのパラメーター化クエリ
🤝 コントリビューション
- リポジトリをフォークします
- フィーチャーブランチを作成します(
git checkout -b feature/amazing-feature) - 変更を加え、テストを追加します
- すべてのテストが合格することを確認します(
npm test) - 変更をコミットします(
git commit -m 'Add amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - プルリクエストを作成します
📄 ライセンス
このプロジェクトは MIT License のもとでライセンスされています。詳細は LICENSE ファイルを参照してください。
🙏 謝辞
- Model Context Protocol SDK を使用して構築されています
- SQL Server への接続には mssql を使用しています
- Jest を使用した包括的なテストを実施しています
🏷️ タグとキーワード
データベース: sql-server azure-sql database-analysis database-tools mssql t-sql database-management database-administration database-operations data-analysis
MCP と AI: model-context-protocol mcp-server mcp-tools ai-tools claude-desktop cursor-ide anthropic llm-integration ai-database intelligent-database
テクノロジー: typescript nodejs npm-package cli-tool database-client sql-client database-sdk rest-api json-api database-connector
機能: table-analysis stored-procedures data-preview column-statistics query-execution database-search object-dependencies schema-analysis data-exploration database-insights
デプロイ: docker azure-deployment cloud-ready enterprise-ready production-ready scalable secure authenticated encrypted configurable
ユースケース: database-development data-science business-intelligence database-migration schema-documentation performance-analysis data-governance database-monitoring troubleshooting automation
🎯 MCPQL は、Model Context Protocol を通じて、SQL Server データベースの包括的な分析・操作機能を提供します。データベース管理者や開発者をはじめ、SQL Server データベースを扱うすべての方に最適です! 🚀
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。