mcp-sqlserver
mcp-sqlserver
Мощный сервер Model Context Protocol (MCP) для Microsoft SQL Server. Подключает ИИ-ассистентов (Claude, Gemini, Kiro, OpenAI, Copilot, Cursor) напрямую к базам данных SQL Server с защитой корпоративного уровня.
39 инструментов в 7 категориях: обнаружение схемы, выполнение запросов, DDL, хранимые процедуры, диагностика производительности и DBA, инструменты разработчика и управление сервером.
Журнал изменений: историю версий см. в 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 |
| Выводит все настроенные подключения к серверам: хост, базу данных, метод проверки подлинности и режим безопасности |
Мультисерверный режим: каждый инструмент принимает необязательный параметр
serverдля обращения к конкретному именованному серверу. Если он опущен, используется сервер по умолчанию.
Обнаружение схемы (9 инструментов)
Tool | Description |
| Список всех доступных баз данных на экземпляре |
| Список схем в базе данных |
| Список таблиц с количеством строк и размерами |
| Список представлений в базе данных |
| Подробная информация о столбцах: типы, значения по умолчанию, допустимость NULL, IDENTITY, вычисляемые столбцы |
| Связи внешних ключей для таблицы |
| Информация об индексах с включёнными столбцами |
| Ограничения PK, UNIQUE, CHECK и DEFAULT |
| Определения триггеров на таблице |
Выполнение запросов (3 инструмента)
Tool | Description |
| Выполняет SELECT-запросы с автоматическим ограничением строк |
| Выполняет INSERT/UPDATE/DELETE/MERGE (требуется режим |
| Экспорт результатов запроса в формате CSV или JSON |
DDL-операции (1 инструмент)
Tool | Description |
| Выполняет операторы CREATE/ALTER/DROP (требуется режим |
Хранимые процедуры (3 инструмента)
Tool | Description |
| Список хранимых процедур в базе данных |
| Просмотр параметров и исходного кода процедуры |
| Выполнение с именованными параметрами (требуется режим |
Производительность и DBA (16 инструментов)
Tool | Description |
| Оценочный план выполнения для любого запроса |
| Текущие запросы из |
| Количество строк, общий/используемый/неиспользуемый размер и процент фрагментации |
| Статистика поиска, считывания, поиска и обновления индексов |
| Рекомендации по недостающим индексам с готовым DDL для CREATE INDEX |
| Версия сервера, издание, количество процессоров, память, время работы |
| Размер базы данных, файловая раскладка, статус, модель восстановления, количество объектов |
| Ключевые статистики ожидания сервера — определяет узкие места ЦП, ввода-вывода и блокировок |
| Последние события взаимоблокировок из сеанса расширенных событий |
| Текущие цепочки блокировок — какие сеансы блокируют другие |
| Длительные открытые транзакции, которые могут удерживать блокировки |
| Детальное использование дискового пространства по таблицам (данные, индексы, неиспользуемое) |
| История последних резервных копий: тип, размер, длительность, путь устройства |
| Ресурсоёмкие запросы из Query Store (SQL Server 2016+) — сортировка по ЦП, длительности, чтению, записи или выполнениям |
| Перестроение или реорганизация фрагментированного индекса (требуется режим |
| Проверка состояния подключения: задержка, версия, активные сеансы |
Инструменты разработчика (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 | Хранимые процедуры |
| Да | Нет | Нет | Только чтение (list/describe) |
| Да | Да | Нет | Полный доступ (execute) |
| Да | Да | Да | Полный доступ (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 (используйте * как подстановочный знак)
Аутентификация
Метод | Конфигурация | Требования |
SQL Server |
|
|
Windows (NTLM) |
|
|
Windows (SSPI) |
| Учётные данные не требуются; нужен пакет |
Azure AD |
|
|
Windows Authentication
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 (по умолчанию)
Стандартный транспорт ввода-вывода — используется такими 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 |
| Имя хоста 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