Integrations
Supports configuration through environment variables loaded from .env files, allowing customization of connection settings, security parameters, timeouts, and caching behavior.
Enables deployment of the MCP server using Docker containers, with configuration via environment variables and docker-compose for simplified setup and management.
Provides access to the repository for cloning and installation, with documentation and setup instructions accessible through GitHub.
MCP MSSQL Сервер
Это сервер Model Context Protocol (MCP) для взаимодействия с SQL Server. Он позволяет моделям больших языков (LLM) выполнять запросы SQL, запускать хранимые процедуры и исследовать схемы баз данных с повышенной безопасностью и надежностью.
Функции
- Безопасное выполнение SQL-запросов : выполнение запросов
SELECT
в базах данных SQL Server. Все запросы анализируются и проверяются, чтобы гарантировать выполнение только операторовSELECT
. - Поддержка хранимых процедур : выполнение хранимых процедур с параметризованными входными данными.
- Исследование схемы : просмотр определений таблиц и столбцов базы данных с кэшированием результатов для повышения производительности.
- Надежное управление соединениями : использует глобальный пул соединений для эффективного повторного использования соединений с базой данных с настраиваемой логикой повторных попыток и тайм-аутами.
- Повышенная безопасность :
- Анализ SQL-запросов и белый список только
SELECT
. - Переменная среды
SQL_ALLOWED_DATABASES
для внесения в белый список доступных баз данных. - Защита от распространенных шаблонов SQL-инъекций для переключения контекста базы данных.
- Блокирует выполнение потенциально вредоносных системных процедур или команд в прямых запросах.
- Анализ SQL-запросов и белый список только
- Настраиваемое кэширование : информация о схеме базы данных кэшируется с настраиваемым временем жизни (TTL).
- Структурированное ведение журнала : интегрированный регистратор
pino
для подробных и структурированных журналов приложений. - Готовность к Docker : простое развертывание с помощью Docker.
Быстрый старт
Использование Docker (рекомендуется)
Полные инструкции по настройке Docker см. в файле README Docker .
Конфигурация
Сервер настроен с использованием переменных окружения. Создайте файл .env
в корневом каталоге (можно скопировать .env.example
), чтобы задать эти значения.
Подробное руководство по всем параметрам конфигурации и их настройке см. в разделе CONFIG
.
Категория | Переменная | Описание | По умолчанию (из config.js) |
---|---|---|---|
Связь | SQL_SERVER | Имя хоста или IP-адрес SQL-сервера | localhost |
SQL_PORT | Порт SQL-сервера | 1433 | |
SQL_USER | Имя пользователя SQL-сервера | sa | |
SQL_PASSWORD | Пароль SQL-сервера | Необходимый | |
SQL_DATABASE | Имя базы данных по умолчанию для подключения | master | |
Безопасность | SQL_ENCRYPT | Включить шифрование (установите значение false , чтобы отключить) | true |
SQL_TRUST_SERVER_CERT | Сертификат сервера доверия (установите значение false , чтобы отключить) | true | |
SQL_ALLOWED_DATABASES | Список баз данных, разделенных запятыми, к которым серверу разрешен доступ. Если пусто, доступ менее ограничен (зависит от разрешений пользователя БД). | [] (пустой список) | |
Тайм-ауты и повторные попытки | SQL_CONNECTION_TIMEOUT | Время ожидания соединения (мс) | 30000 |
SQL_REQUEST_TIMEOUT | Время ожидания запроса (мс) | 30000 | |
SQL_MAX_RETRIES | Максимальное количество повторных попыток первоначального подключения | 3 | |
SQL_INITIAL_RETRY_DELAY | Начальная задержка (мс) перед повторной попыткой неудачного соединения | 1000 | |
SQL_MAX_RETRY_DELAY | Максимальная задержка (мс) для повторных попыток подключения (использует экспоненциальную задержку) | 30000 | |
Пул соединений | SQL_POOL_MAX | Макс. количество подключений в пуле | 10 |
SQL_POOL_MIN | Мин. подключений в пуле | 0 | |
SQL_POOL_IDLE_TIMEOUT | Время ожидания простоя для соединений в пуле (мс) | 30000 | |
Кэширование | SQL_SCHEMA_CACHE_TTL | Время жизни кэша схемы (мс) | 300000 (5 минут) |
MCP-сервер | MCP_SERVER_NAME | Имя MCP-сервера | MSSQL Server |
MCP_SERVER_VERSION | Версия сервера MCP | 1.0.0 | |
Ведение журнала | LOG_LEVEL | Уровень журнала для pino logger (например, fatal , error , warn , info , debug , trace , silent ). Это считывается напрямую из process.env в server.ts , а не является частью config.js . | info |
Использование с Клодом
Чтобы добавить этот MCP-сервер в Claude CLI:
В разговоре с Клодом вы можете:
- Выполнить запросы
SELECT
:(АтрибутCopydatabase
является необязательным, если используетсяSQL_DATABASE
по умолчанию или еслиSQL_ALLOWED_DATABASES
подразумевает единственный выбор.) - Выполнение хранимых процедур:Copy
- Изучите схему базы данных:(ЕслиCopy
YourDatabaseName
не указано, по умолчанию используетсяSQL_DATABASE
, указанная в переменных среды.)
Обработка соединения
Этот сервер MCP использует глобальный, надежный пул соединений (встроенный пул библиотеки mssql
), управляемый DatabaseService
.
- Эффективность : соединения используются повторно, что снижает накладные расходы на установление нового соединения для каждого запроса.
- Устойчивость : реализует логику повторных попыток с экспоненциальной задержкой для первоначального установления соединения.
- Нет состояния сеанса между вызовами : в отличие от модели сеанса на пользователя, этот сервер не гарантирует, что последующие вызовы MCP (например, два отдельных вызова
execute_query
) из LLM будут использовать то же самое базовое соединение с базой данных. Поэтому специфичное для сеанса состояние, такое как временные таблицы или переменные сеанса, созданные в одном вызове, могут быть недоступны в другом. Каждый вызов следует считать атомарным с точки зрения состояния сеанса. КомандаUSE [database]
выдается в каждой операции, если целевая база данных отличается от базы данных по умолчанию пула, обеспечивая контекст для этой конкретной операции.
Разработка
Настройка локального развития
Заметки о безопасности
- Только
SELECT
: сервер строго следит за тем, чтобы через инструментexecute_query
можно было выполнять только запросыSELECT
с использованием анализа SQL. Операторы DML (INSERT, UPDATE, DELETE) и DDL блокируются. - Выполнение хранимых процедур : хотя хранимые процедуры могут выполнять любые действия, разрешенные их разрешениями, их выполнение управляется отдельно.
- Белый список баз данных : используйте переменную среды
SQL_ALLOWED_DATABASES
, чтобы ограничить, с какими базами данных сервер может взаимодействовать. Подробное объяснение этой функции и того, как она взаимодействует сSQL_DATABASE
, см.DATABASE_WHITELISTING.md
. - Блокировка системных процедур : прямое выполнение общих системных процедур (например,
sp_
,xp_
) и команд типаRECONFIGURE
илиWAITFOR DELAY
черезexecute_query
блокируется. Для законных системных взаимодействий следует использовать хранимые процедуры. - Проверка ввода : Имена баз данных для переключения контекста и имена хранимых процедур проходят проверку формата. Анализ SQL обеспечивает дополнительный уровень проверки для запросов.
- Параметризованные входные данные : параметры хранимых процедур обрабатываются библиотекой
mssql
, которая обычно параметризует их для предотвращения SQL-инъекций.
Поиск неисправностей
Если у вас возникли проблемы:
- Проверьте логи контейнера:
docker logs mssql-mcp
(если используется Docker). - Проверьте вывод консоли сервера на наличие журналов pino, если он запущен локально.
- Проверьте, что все необходимые переменные среды в файле
.env
установлены правильно, особенноSQL_PASSWORD
,SQL_SERVER
,SQL_USER
иSQL_DATABASE
. - Если вы установили эту переменную, убедитесь, что базы данных, к которым вы пытаетесь получить доступ, указаны в
SQL_ALLOWED_DATABASES
. - Подтвердите сетевое подключение к экземпляру SQL Server, на котором запущен сервер MCP.
- Тестовые скрипты (
test-mcp.sh
,test-session-persistence.sh
) могут нуждаться в проверке/обновлении.
Подробную информацию об устранении неполадок Docker см. в файле README Docker .
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Сервер Model Context Protocol, который позволяет крупным языковым моделям, таким как Claude, выполнять SQL-запросы, исследовать схемы баз данных и поддерживать постоянные соединения с базами данных SQL Server.
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server that enables Large Language Models to seamlessly interact with ClickHouse databases, supporting resource listing, schema retrieval, and query execution.Last updated -1PythonMIT License
Astra DB MCP Serverofficial
AsecurityAlicenseAqualityA Model Context Protocol server that allows Large Language Models to interact with Astra DB databases, providing tools for managing collections and records through natural language commands.Last updated -1011512TypeScriptApache 2.0- -security-license-qualityA Model Context Protocol server that provides tools for connecting to and interacting with various database systems (SQLite, PostgreSQL, MySQL/MariaDB, SQL Server) through a unified interface.Last updated -Python
MCP TapData Serverofficial
-securityFlicense-qualityA Model Context Protocol server that enables Large Language Models to access and interact with database connections, including viewing schemas and performing CRUD operations on connected databases.Last updated -