Skip to main content
Glama
Debanjan29

mcp-sqlserver

by Debanjan29

mcp-sqlserver

強力な Model Context Protocol (MCP) サーバー。Microsoft SQL Server 向けで、AIアシスタント(Claude、Gemini、Kiro、OpenAI、Copilot、Cursor)をエンタープライズグレードのセキュリティ管理機能付きで SQL Server データベースに直接接続します。

39個のツール を7カテゴリに収録: スキーマ検出、クエリ実行、DDL、ストアドプロシージャ、パフォーマンス/DBA診断、開発者ユーティリティ、サーバー管理。

npm version GitHub release

変更履歴: バージョン履歴は 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ツール)

ツール

説明

list_servers

設定済みのサーバー接続を、ホスト、DB、認証、セキュリティモード付きで一覧表示します

マルチサーバー: すべてのツールはオプションの server パラメータを受け取り、特定の命名済みサーバーを対象にできます。省略するとデフォルトサーバーが使われます。

スキーマ検出(9ツール)

ツール

説明

list_databases

インスタンス上でアクセス可能なすべてのデータベースを一覧表示します

list_schemas

データベース内のスキーマを一覧表示します

list_tables

行数とサイズを含めてテーブルを一覧表示します

list_views

データベース内のビューを一覧表示します

describe_table

列の型、デフォルト値、NULL許容性、IDENTITY、計算列などの詳細情報です

get_foreign_keys

テーブルの外部キー制約を取得します

get_indexes

付加列を含むインデックス情報を取得します

get_constraints

PK、UNIQUE、CHECK、DEFAULT制約を取得します

get_triggers

テーブル上のトリガー定義を取得します

クエリ実行(3ツール)

ツール

説明

execute_query

自動行数制限付きで SELECT クエリを実行します

execute_mutation

INSERT/UPDATE/DELETE/MERGE を実行します(readwrite モードが必要)

export_query

クエリ結果を CSV または JSON 形式でエクスポートします

DDL操作(1ツール)

ツール

説明

execute_ddl

CREATE/ALTER/DROP 文を実行します(admin モードが必要)

ストアドプロシージャ(3ツール)

ツール

説明

list_procedures

データベース内のストアプロシージャを一覧表示します

describe_procedure

パラメータとプロシージャのソースコードを表示します

execute_procedure

名前付きパラメータで実行します(readwrite モードが必要)

パフォーマンス & DBA(16ツール)

ツール

説明

get_query_plan

任意のクエリの推定実行プランを取得します

get_active_queries

sys.dm_exec_requests から現在実行中のクエリを取得します

get_table_stats

行数、合計/使用済み/未使用サイズ、断片化(%)を取得します

get_index_usage

インデックスのシーク、スキャン、ルックアップ、更新統計を取得します

get_missing_indexes

不足インデックスの候補と、そのまま使える CREATE INDEX DDL を取得します

get_server_info

サーバーのバージョン、エディション、CPU数、メモリ、稼働時間を取得します

get_database_info

データベースサイズ、ファイル構成、状態、復旧モデル、オブジェクト数を取得します

get_wait_stats

上位の待機統計を取得 — CPU・I/O・ロックのボトルネックを把握します

get_deadlocks

system_health 拡張イベントセッションから最近のデッドロック情報を取得します

get_blocking_chain

現在のブロッキングチェーンを取得 — どのセッションが他をブロックしているかを表示します

get_long_transactions

ロックを保持している可能性のある長時間実行中のトランザクションを取得します

get_space_usage

テーブル別のディスク使用状況(データ、インデックス、未使用)を詳細に取得します

get_backup_history

最近のバックアップ履歴(種類、サイズ、所要時間、デバイスパス)を取得します

get_query_store_stats

Query Store からリソース消費の大きいクエリを取得します(SQL Server 2016+)。CPU・期間・読み取り・代入・実行数で並べ替え可能

rebuild_index

断片化したインデックスを再構築または再構成します(admin モードが必要)

health_check

所要時間、バージョン、アクティブセッションを含む接続ヘルスチェックを実行します

開発者向けユーティリティ(6ツール)

compare_schemas — スキーマ差分

2つのデータベースを並べて比較します。テーブル、列、型の違いを表示するので、開発環境と本番環境の比較に最適です。

compare_schemas(source_database: "DevDB", target_database: "ProdDB")

出力には、ソース/ターゲットにのみ存在するテーブル、ソース/ターゲットにのみ存在する列、列の型・NULL許容性の違いが含まれます。

generate_code — コード生成

任意のテーブルのスキーマから型付きコードを生成します:

  • TypeScript — 適切な型(numberstringDateBuffer | 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

ストアドプロシージャ

readonly

不可

不可

読み取り専用(一覧/説明)

readwrite

不可

完全(実行)

admin

完全(実行)

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(ワイルドカードは * を使用)

認証

方式

設定 type

要件

SQL Server

sql

user + password

Windows (NTL)

windows

user + password + 任意の domain

Windows (SSPI)

windows

認証情報は不要。ただし msnodesql が必要です

Azure AD

azure-ad

clientId + clientSecret + tenantId

Windows 認証

NTLM — 追加パッケージなしですぐ動作します:

connection:
  host: YOUR_SERVER\SQLEXPRESS
  authentication:
    type: windows
    user: YourUsername
    password: YourPassword
    domain: YOUR_DOMAIN
  trustServerCertificate: true

SSPI / Integrated Security — 現在の Windows ログインセッションを使用します:

npm install msnodesqlv8
connection:
  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"]
    }
  }
}

環境変数

変数

説明

MSSQL_HOST

SQL Server ホスト名

MSSQL_PORT

SQL Server ポート (デフォルト: 1433)

MSSQL_DATABASE

既定のデータベース

MSSQL_USER

SQL 認証のユーザー名

MSSQL_PASSWORD

SQL 認証のパスワード

MSSQL_MCP_CONFIG

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

Install Server
A
license - permissive license
B
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    9
    75
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables 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.
    18
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    5
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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