Skip to main content
Glama
Debanjan29

mcp-sqlserver

by Debanjan29

mcp-sqlserver

Мощный сервер Model Context Protocol (MCP) для Microsoft SQL Server. Подключает ИИ-ассистентов (Claude, Gemini, Kiro, OpenAI, Copilot, Cursor) напрямую к базам данных SQL Server с защитой корпоративного уровня.

39 инструментов в 7 категориях: обнаружение схемы, выполнение запросов, DDL, хранимые процедуры, диагностика производительности и DBA, инструменты разработчика и управление сервером.

npm version GitHub release

Журнал изменений: историю версий см. в CHANGELOG.md, подробные примечания к выпускам — на странице GitHub Releases.

Что нового в v1.3

  • Поддержка нескольких серверов — задайте dev/staging/prod серверы в одной конфигурации и переключайтесь с помощью параметра server

  • Инструмент list_servers — все настроенные подключения сразу на виду

  • Безопасность на уровне сервера — каждый сервер получает собственный режим безопасности, лимиты строк и список заблокированных баз данных

  • Обратная совместимость — существующие конфигурации одного сервера работают без изменений

Related MCP server: SQL Server MCP

Что нового в v1.2

  • 16 новых инструментов — DBA-диагностика, генерация кода, ER-диаграммы, сравнение схем, выборка данных и другое

  • Защита от SQL-инъекций — все запросы теперь используют параметризованные входные данные и экранированные идентификаторы

  • Формат дат ISO — даты отображаются как 2025-01-27 вместо необработанных строк JavaScript Date

  • Транспорт Streamable HTTP — размещайте MCP-сервер удалённо с помощью --http <port>

  • Проверка состояния — проверка статуса подключения и отзывчивости сервера

Возможности

Управление сервером (1 инструмент)

Tool

Description

list_servers

Выводит все настроенные подключения к серверам: хост, базу данных, метод проверки подлинности и режим безопасности

Мультисерверный режим: каждый инструмент принимает необязательный параметр server для обращения к конкретному именованному серверу. Если он опущен, используется сервер по умолчанию.

Обнаружение схемы (9 инструментов)

Tool

Description

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 инструмента)

Tool

Description

execute_query

Выполняет SELECT-запросы с автоматическим ограничением строк

execute_mutation

Выполняет INSERT/UPDATE/DELETE/MERGE (требуется режим readwrite)

export_query

Экспорт результатов запроса в формате CSV или JSON

DDL-операции (1 инструмент)

Tool

Description

execute_ddl

Выполняет операторы CREATE/ALTER/DROP (требуется режим admin)

Хранимые процедуры (3 инструмента)

Tool

Description

list_procedures

Список хранимых процедур в базе данных

describe_procedure

Просмотр параметров и исходного кода процедуры

execute_procedure

Выполнение с именованными параметрами (требуется режим readwrite)

Производительность и DBA (16 инструментов)

Tool

Description

get_query_plan

Оценочный план выполнения для любого запроса

get_active_queries

Текущие запросы из sys.dm_exec_requests

get_table_stats

Количество строк, общий/используемый/неиспользуемый размер и процент фрагментации

get_index_usage

Статистика поиска, считывания, поиска и обновления индексов

get_missing_indexes

Рекомендации по недостающим индексам с готовым DDL для CREATE INDEX

get_server_info

Версия сервера, издание, количество процессоров, память, время работы

get_database_info

Размер базы данных, файловая раскладка, статус, модель восстановления, количество объектов

get_wait_stats

Ключевые статистики ожидания сервера — определяет узкие места ЦП, ввода-вывода и блокировок

get_deadlocks

Последние события взаимоблокировок из сеанса расширенных событий system_health

get_blocking_chains

Текущие цепочки блокировок — какие сеансы блокируют другие

get_long_transactions

Длительные открытые транзакции, которые могут удерживать блокировки

get_space_usage

Детальное использование дискового пространства по таблицам (данные, индексы, неиспользуемое)

get_backup_history

История последних резервных копий: тип, размер, длительность, путь устройства

get_query_store_stats

Ресурсоёмкие запросы из Query Store (SQL Server 2016+) — сортировка по ЦП, длительности, чтению, записи или выполнениям

rebuild_index

Перестроение или реорганизация фрагментированного индекса (требуется режим admin)

health_check

Проверка состояния подключения: задержка, версия, активные сеансы

Инструменты разработчика (6 инструментов)

compare_schemas — Сравнение схем

Сравните две базы данных рядом друг с другом. Показывает таблицы, столбцы и различия типов — идеально для сравнения dev и prod.

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-диаграмма

Генерирует ER-диаграмму в Mermaid на основе связей внешних ключей. Вставьте результат в любой совместимый с 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-операторы с фейковыми данными на основе имён и типов столбцов. Умная эвристика для типовых шаблонов (email, phone, name, city, price и т.д.).

generate_test_data(table: "Customers", count: 5)
→ INSERT INTO [dbo].[Customers] (...) VALUES (N'Alice', N'user1@example.com', N'New York', ...);

sample_table — Случайная выборка

Получает случайную выборку строк из любой таблицы с помощью NEWID() — полезно для ИИ-ассистентов, чтобы быстрее понять структуру данных, не сканируя таблицы целиком.

sample_table(table: "Orders", count: 5)

Безопасность

Три режима безопасности

Режим

SELECT

INSERT/UPDATE/DELETE

DDL

Хранимые процедуры

readonly

Да

Нет

Нет

Только чтение (list/describe)

readwrite

Да

Да

Нет

Полный доступ (execute)

admin

Да

Да

Да

Полный доступ (execute)

Защита от 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 (NTLM)

windows

user + password + опциональный domain

Windows (SSPI)

windows

Учётные данные не требуются; нужен пакет msnodesqlv8

Azure AD

azure-ad

clientId + clientSecret + tenantId

Windows Authentication

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 (по умолчанию)

Стандартный транспорт ввода-вывода — используется такими MCP-клиентами, как Claude Desktop, VS Code, Cursor и другими.

Streamable HTTP

Для удалённого размещения или веб-интеграций:

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.

Мультисерверная конфигурация

Определите несколько именованных серверов для работы с dev/staging/prod из одной конфигурации:

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"]
    }
  }
}

Переменные окружения

Variable

Description

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