mcpField
S
Sql Server Mcp

Sql Server Mcp

ローカル
github.com/hendrickcastroデータベース1539 週間前に更新

Sql Server Mcp について

MCPQLは、SQL Serverの分析や開発向けのMCPサーバーです。スキーマ確認、データ検索、オブジェクト探索のツールを提供し、変更操作とストアドプロシージャ実行は既定で無効です。

主な機能

  1. 01テーブルとストアドプロシージャの分析
  2. 02データのプレビューと列統計の取得
  3. 03SQLクエリとストアドプロシージャの実行
  4. 04データベースオブジェクトと依存関係の検索
  5. 05データベースのセキュリティ状態の確認
  6. 06複数の認証方式への対応

活用シーン

  1. 01テーブルのスキーマ、インデックス、制約の確認
  2. 02列統計とサンプル値の確認
  3. 03データベースオブジェクトと依存関係の検索
  4. 04権限を有効にして変更操作を実行

MCP 対応

MCPクライアントに、スキーマ分析、データ検索、オブジェクト検索、依存関係の確認など、SQL Server向けツールを公開します。変更操作とストアドプロシージャの実行は既定で無効です。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"MCPQL": {
"command": "npx",
"args": [
"-y",
"hendrickcastro/mcpql"
],
"env": {
"DB_AUTHENTICATION_TYPE": "<DB_AUTHENTICATION_TYPE>",
"DB_SERVER": "<DB_SERVER>",
"DB_NAME": "<DB_NAME>",
"DB_USER": "<DB_USER>",
"DB_PASSWORD": "<DB_PASSWORD>",
"DB_PORT": "<DB_PORT>",
"DB_ENCRYPT": "<DB_ENCRYPT>",
"DB_TRUST_SERVER_CERTIFICATE": "<DB_TRUST_SERVER_CERTIFICATE>"
}
}
}
}
起動コマンドnpx -y hendrickcastro/mcpql
設定が必要な環境変数
DB_AUTHENTICATION_TYPEシークレット
DB_SERVER
DB_NAME
DB_USER
DB_PASSWORDシークレット
DB_PORT
DB_ENCRYPT
DB_TRUST_SERVER_CERTIFICATE

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmhendrickcastro/mcpql

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

MCPQL - SQL Server MCP

License: MIT Node.js Version TypeScript npm version Downloads GitHub stars GitHub issues GitHub forks Build Status Coverage Status SQL Server Azure SQL MCP Protocol Claude Desktop Cursor IDE Trae AI Docker Security Maintenance

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:ローカル開発環境へのインストール
  1. クローンとセットアップ:
git clone https://github.com/hendrickcastro/MCPQL.git
cd MCPQL
npm install
npm run build
  1. データベース接続を設定: データベースの認証情報を記述した .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
  1. ローカルパスを使用して 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_SERVERSQL Server のホスト名/IP-すべて
DB_NAMEデータベース名-すべて
DB_PORTSQL Server のポート1433すべて
DB_TIMEOUT接続タイムアウト(ms)30000すべて
DB_REQUEST_TIMEOUTリクエストタイムアウト(ms)30000すべて
SQL Server 認証
DB_USERSQL Server のユーザー名-SQL 認証
DB_PASSWORDSQL Server のパスワード-SQL 認証
Windows 認証
DB_DOMAINWindows ドメイン-Windows 認証
DB_USERWindows ユーザー名現在のユーザーWindows 認証
DB_PASSWORDWindows パスワード-Windows 認証
Azure AD 認証
DB_USERAzure AD ユーザー名-Azure AD(パスワード)
DB_PASSWORDAzure AD パスワード-Azure AD(パスワード)
DB_AZURE_CLIENT_IDAzure AD アプリのクライアント ID-Azure AD(サービスプリンシパル)
DB_AZURE_CLIENT_SECRETAzure AD アプリのクライアントシークレット-Azure AD(サービスプリンシパル)
DB_AZURE_TENANT_IDAzure 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_MODIFICATIONSDML/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 のセットアップ
  1. SQL Server Configuration Manager で TCP/IP プロトコルを有効にします
  2. 静的ポート(通常は 1433)を設定するか、Browser Service を使用して動的ポートを使用します
  3. SQL Server のトラフィックを許可するように Windows ファイアウォールを設定します
  4. デフォルトの Express インストールでは、DB_INSTANCE_NAME=SQLEXPRESS を使用します
Azure SQL Database のセットアップ
  1. クライアント IP を許可するサーバーファイアウォールルールを作成します
  2. サーバー名には server.database.windows.net の形式を使用します
  3. 常に DB_ENCRYPT=true と DB_TRUST_SERVER_CERTIFICATE=false を設定します
  4. サービスプリンシパル認証では、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 インジェクションを防ぐためのパラメーター化クエリ

🤝 コントリビューション

  1. リポジトリをフォークします
  2. フィーチャーブランチを作成します(git checkout -b feature/amazing-feature)
  3. 変更を加え、テストを追加します
  4. すべてのテストが合格することを確認します(npm test)
  5. 変更をコミットします(git commit -m 'Add amazing feature')
  6. ブランチにプッシュします(git push origin feature/amazing-feature)
  7. プルリクエストを作成します

📄 ライセンス

このプロジェクトは 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 データベースを扱うすべての方に最適です! 🚀

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。