mcp-sqlserver
mcp-sqlserver
強力な Model Context Protocol (MCP) サーバー。Microsoft SQL Server 向けで、AIアシスタント(Claude、Gemini、Kiro、OpenAI、Copilot、Cursor)をエンタープライズグレードのセキュリティ管理機能付きで SQL Server データベースに直接接続します。
39個のツール を7カテゴリに収録: スキーマ検出、クエリ実行、DDL、ストアドプロシージャ、パフォーマンス/DBA診断、開発者ユーティリティ、サーバー管理。
変更履歴: バージョン履歴は CHANGELOG.md をご覧ください。詳細なリリースノートは GitHub Releases をご覧ください。
v1.3の新機能
マルチサーバー対応 — 開発/ステージング/本番サーバーを1つの設定で定義し、
serverパラメータで切り替えlist_serversツール — 設定済みの接続をひと目で確認可能サーバーごとのセキュリティ — 各サーバーにセキュリティモード、行数制限、ブロックするデータベースを個別に設定
後方互換 — 既存のシングルサーバー設定は変更なしで動作
Related MCP server: SQL Server MCP
v1.2の新機能
16個の新ツール — DBA診断、コード生成、ER図、スキーマ差分、データサンプリングなど
SQLインジェクション対策 — すべてのクエリでパラメータ化入力と識別子エスケープを採用
ISO日付フォーマット — 日付は生の JavaScript Date 文字列ではなく
2025-01-27のように表示Streamable HTTP トランスポート —
--http <port>で MCP サーバーをリモートホスティングヘルスチェック — 接続状態とサーバーの応答性を検証
機能
サーバー管理(1ツール)
ツール | 説明 |
| 設定済みのサーバー接続を、ホスト、DB、認証、セキュリティモード付きで一覧表示します |
マルチサーバー: すべてのツールはオプションの
serverパラメータを受け取り、特定の命名済みサーバーを対象にできます。省略するとデフォルトサーバーが使われます。
スキーマ検出(9ツール)
ツール | 説明 |
| インスタンス上でアクセス可能なすべてのデータベースを一覧表示します |
| データベース内のスキーマを一覧表示します |
| 行数とサイズを含めてテーブルを一覧表示します |
| データベース内のビューを一覧表示します |
| 列の型、デフォルト値、NULL許容性、IDENTITY、計算列などの詳細情報です |
| テーブルの外部キー制約を取得します |
| 付加列を含むインデックス情報を取得します |
| PK、UNIQUE、CHECK、DEFAULT制約を取得します |
| テーブル上のトリガー定義を取得します |
クエリ実行(3ツール)
ツール | 説明 |
| 自動行数制限付きで SELECT クエリを実行します |
| INSERT/UPDATE/DELETE/MERGE を実行します( |
| クエリ結果を CSV または JSON 形式でエクスポートします |
DDL操作(1ツール)
ツール | 説明 |
| CREATE/ALTER/DROP 文を実行します( |
ストアドプロシージャ(3ツール)
ツール | 説明 |
| データベース内のストアプロシージャを一覧表示します |
| パラメータとプロシージャのソースコードを表示します |
| 名前付きパラメータで実行します( |
パフォーマンス & DBA(16ツール)
ツール | 説明 |
| 任意のクエリの推定実行プランを取得します |
|
|
| 行数、合計/使用済み/未使用サイズ、断片化(%)を取得します |
| インデックスのシーク、スキャン、ルックアップ、更新統計を取得します |
| 不足インデックスの候補と、そのまま使える CREATE INDEX DDL を取得します |
| サーバーのバージョン、エディション、CPU数、メモリ、稼働時間を取得します |
| データベースサイズ、ファイル構成、状態、復旧モデル、オブジェクト数を取得します |
| 上位の待機統計を取得 — CPU・I/O・ロックのボトルネックを把握します |
|
|
| 現在のブロッキングチェーンを取得 — どのセッションが他をブロックしているかを表示します |
| ロックを保持している可能性のある長時間実行中のトランザクションを取得します |
| テーブル別のディスク使用状況(データ、インデックス、未使用)を詳細に取得します |
| 最近のバックアップ履歴(種類、サイズ、所要時間、デバイスパス)を取得します |
| Query Store からリソース消費の大きいクエリを取得します(SQL Server 2016+)。CPU・期間・読み取り・代入・実行数で並べ替え可能 |
| 断片化したインデックスを再構築または再構成します( |
| 所要時間、バージョン、アクティブセッションを含む接続ヘルスチェックを実行します |
開発者向けユーティリティ(6ツール)
compare_schemas — スキーマ差分
2つのデータベースを並べて比較します。テーブル、列、型の違いを表示するので、開発環境と本番環境の比較に最適です。
compare_schemas(source_database: "DevDB", target_database: "ProdDB")出力には、ソース/ターゲットにのみ存在するテーブル、ソース/ターゲットにのみ存在する列、列の型・NULL許容性の違いが含まれます。
generate_code — コード生成
任意のテーブルのスキーマから型付きコードを生成します:
TypeScript — 適切な型(
number、string、Date、Buffer | null)を持つインターフェースC# — NULL可能な値型(
int?、DateTime?、decimal?)を持つクラスSQL — 完全な列定義を持つ
CREATE TABLEスクリプト
generate_code(table: "Products", language: "typescript")
→ export interface Products {
productId: number;
productName: string;
unitPrice: number | null;
...
}generate_insert_scripts — INSERT文としてデータ出力
既存のテーブルデータからINSERT文を生成します。マイグレーションスクリプト、シードデータ、小さな参照テーブルのバックアップに役立ちます。
generate_insert_scripts(table: "Categories", top: 10)
→ INSERT INTO [dbo].[Categories] ([CategoryName], [Description]) VALUES (N'Beverages', N'Soft drinks...');generate_er_diagram — ER図生成
外部キー関係から Mermaid のER図を生成します。出力をMermaid互換レンダラー(GitHub、Notion、VS Codeなど)に貼り付けるだけです。
generate_er_diagram(database: "Northwind")
→ erDiagram
Products }o--|| Categories : "CategoryID"
Products }o--|| Suppliers : "SupplierID"
Orders }o--|| Customers : "CustomerID"
...generate_test_data — テストデータ生成
列名と型に基づいて、現実的な値を持つINSERT文を生成します。メール、電話、名前、都市、価格など一般的なパターンをスマートに判別します。
generate_test_data(table: "Customers", count: 5)
→ INSERT INTO [dbo].[Customers] (...) VALUES (N'Alice', N'user1@example.com', N'New York', ...);sample_table — ランダムサンプリング
NEWID() を使用して任意のテーブルからランダムにデータを取得します。AIアシスタントがテーブル全体を走査せずにデータの傾向を把握するのに役立ちます。
sample_table(table: "Orders", count: 5)セキュリティ
3つのセキュリティモード
モード | SELECT | INSERT/UPDATE/DELETE | DDL | ストアドプロシージャ |
| 可 | 不可 | 不可 | 読み取り専用(一覧/説明) |
| 可 | 可 | 不可 | 完全(実行) |
| 可 | 可 | 可 | 完全(実行) |
SQLインジェクション対策
ユーザーが指定する値はすべてパラメーター化されたクエリ入力(@param)として渡されます。オブジェクト識別子(データベース、スキーマ、テーブル名)は SQL Server の角括弧構文([name] の ] は ]])でエスケープされます。
追加のセキュリティ機能
データベースとスキーマの許可/拒否リスト
自動行数制限(
maxRowCountで設定可能)ブロックキーワード検出(xp_cmdshell、SHUTDOWN、DROP DATABASE など)
PII保護のための列レベルデータマスキング
セキュリティモードに応じたクエリタイプの検証
データマスキング
クエリ結果の機密列をマスクします:
security:
maskColumns:
- pattern: "*.password"
mask: "***"
- pattern: "*.ssn"
mask: "XXX-XX-XXXX"
- pattern: "dbo.users.email"
mask: "***@***.***"パターン形式: [schema.]table.column(ワイルドカードは * を使用)
認証
方式 | 設定 | 要件 |
SQL Server |
|
|
Windows (NTL) |
|
|
Windows (SSPI) |
| 認証情報は不要。ただし |
Azure AD |
|
|
Windows 認証
NTLM — 追加パッケージなしですぐ動作します:
connection:
host: YOUR_SERVER\SQLEXPRESS
authentication:
type: windows
user: YourUsername
password: YourPassword
domain: YOUR_DOMAIN
trustServerCertificate: trueSSPI / Integrated Security — 現在の Windows ログインセッションを使用します:
npm install msnodesqlv8connection:
host: YOUR_SERVER\SQLEXPRESS
authentication:
type: windows
trustServerCertificate: true注:
npxを使用する場合、msnodesqlv8のようなオプションの依存パッケージは自動的にインストールされない場合があります。SSPI の使用には、npm install -g @tugberkgunver/mcp-sqlserver msnodesqlv8のようにゴーバルインストールを検討するか、NTLM モードをお使いください。
トランスポート
stdio(デフォルト)
標準入力/出力トランスポート — Claude Desktop、VS Code、Cursor などの MCP クライアントで使用されます。
Streamable HTTP
リモートホスティングや Web 統合に:
mcp-sqlserver --config mssql-mcp.yaml --http 3000これにより、以下が起動します:
MCPエンドポイント:
http://localhost:3000/mcpヘルスチェック:
http://localhost:3000/health→{"status":"ok","mode":"readonly"}
ブラウザベースのクライアント向け CORS サポートも含まれます。
クイックスタート
インストール
npm install -g @tugberkgunver/mcp-sqlserver設定
作業ディレクトリに mssql-mcp.yaml を作成します:
connection:
host: localhost
port: 1433
database: MyDatabase
authentication:
type: sql
user: sa
password: YourPassword123
trustServerCertificate: true
security:
mode: readonly
maxRowCount: 1000
blockedDatabases:
- master
- msdb
- tempdb
- modelすべてのオプションは config.example.yaml を参照してください。
マルチサーバー構成
環境構築(開発/ステージング/本番)を管理するために、複数の名前付きサーバーを構成から利用できます:
defaultServer: dev
connections:
dev:
host: dev-server.example.com
database: MyDatabase
authentication:
type: sql
user: sa
password: DevPass123
trustServerCertificate: true
security:
mode: admin
maxRowCount: 5000
prod:
host: prod-server.example.com
database: MyDatabase
authentication:
type: sql
user: readonly_user
password: ProdReadOnly
security:
mode: readonly
blockedDatabases: [master, msdb, tempdb, model]
# Global security defaults (applied to all servers unless overridden)
security:
maxRowCount: 1000
blockedKeywords: [xp_cmdshell, SHUTDOWN, DROP DATABASE]任意のツール呼び出しで server パラメータを使用します:
list_tables(server: "prod", database: "MyDatabase")
health_check(server: "dev")
compare_schemas(source_database: "DevDB", target_database: "StagingDB", server: "dev")MCP クライアント設定
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}設定ファイルを使用する場合:
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver", "--config", "/path/to/mssql-mcp.yaml"]
}
}
}.vscode/mcp.json に追加:
{
"servers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}~/.cursor/mcp.json に追加:
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}.kiro/settings/mcp.json に追加:
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}~/.gemini/settings.json に追加:
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}~/.windsurf/mcp.json に追加:
{
"mcpServers": {
"mssql": {
"command": "npx",
"args": ["-y", "@tugberkgunver/mcp-sqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_DATABASE": "MyDatabase",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "YourPassword123"
}
}
}
}Windows では、コマンドラッパーとして cmd を使用します:
{
"mcpServers": {
"mssql": {
"command": "cmd",
"args": ["/c", "npx", "-y", "@tugberkgunver/mcp-sqlserver", "--config", "path/to/config.yaml"]
}
}
}環境変数
変数 | 説明 |
| SQL Server ホスト名 |
| SQL Server ポート (デフォルト: 1433) |
| 既定のデータベース |
| SQL 認証のユーザー名 |
| SQL 認証のパスワード |
| YAML 設定ファイルへのパス |
環境変数は、設定ファイルの値を上書きします。
開発
git clone https://github.com/gunvertugberk/mcp-sqlserver.git
cd mcp-sqlserver
npm install
npm run build
npm start -- --config ./mssql-mcp.yamlライセンス
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI agents to securely connect to and query Microsoft SQL Server databases with read-only access, schema discovery, and relationship mapping. Features advanced security protections, health monitoring, and bulk operations for production environments.975MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to interact with Microsoft SQL Server databases through query execution, schema discovery, CRUD operations, stored procedures, and data export with built-in safety controls.18Apache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to securely interact with Microsoft SQL Server databases to query data, inspect schemas, and retrieve metadata with read-only operations by default and optional write capabilities.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Microsoft SQL Server databases through a standardized interface. Supports executing SQL queries, browsing database schemas, and viewing table data with flexible authentication options for both local and Azure SQL databases.5MIT
Related MCP Connectors
Explore, query, and inspect SQLite databases with ease. List tables, preview results, and view det…
Connect your AI assistants to Keboola and expose your data, transformations, SQL queries, ...
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Debanjan29/readonly-mssql-mcp-db'
If you have feedback or need assistance with the MCP directory API, please join our Discord server