Skip to main content
Glama

MCP MSSQL Сервер

Это сервер Model Context Protocol (MCP) для взаимодействия с SQL Server. Он позволяет моделям больших языков (LLM) выполнять запросы SQL, запускать хранимые процедуры и исследовать схемы баз данных с повышенной безопасностью и надежностью.

Функции

  • Безопасное выполнение SQL-запросов : выполнение запросов SELECT в базах данных SQL Server. Все запросы анализируются и проверяются, чтобы гарантировать выполнение только операторов SELECT .

  • Поддержка хранимых процедур : выполнение хранимых процедур с параметризованными входными данными.

  • Исследование схемы : просмотр определений таблиц и столбцов базы данных с кэшированием результатов для повышения производительности.

  • Надежное управление соединениями : использует глобальный пул соединений для эффективного повторного использования соединений с базой данных с настраиваемой логикой повторных попыток и тайм-аутами.

  • Повышенная безопасность :

    • Анализ SQL-запросов и белый список только SELECT .

    • Переменная среды SQL_ALLOWED_DATABASES для внесения в белый список доступных баз данных.

    • Защита от распространенных шаблонов SQL-инъекций для переключения контекста базы данных.

    • Блокирует выполнение потенциально вредоносных системных процедур или команд в прямых запросах.

  • Настраиваемое кэширование : информация о схеме базы данных кэшируется с настраиваемым временем жизни (TTL).

  • Структурированное ведение журнала : интегрированный регистратор pino для подробных и структурированных журналов приложений.

  • Готовность к Docker : простое развертывание с помощью Docker.

Related MCP server: MSSQL MCP Server

Быстрый старт

Использование Docker (рекомендуется)

# Clone the repository (if you haven't already) git clone https://github.com/JubinSaniei/mcp-mssql # cd mcp-mssql # Copy example configuration and edit with your settings cp .env.example .env nano .env # Edit with your SQL Server details and other configurations # Start the Docker container docker-compose up -d

Полные инструкции по настройке 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:

# Add the MCP server using the config file claude mcp add-json mssql-mcp "$(cat claude-mcp-config.json)" # To add it globally claude mcp add-json -s user mssql-mcp "$(cat claude-mcp-config.json)" # Start a conversation with Claude using this MCP claude mcp mssql-mcp

В разговоре с Клодом вы можете:

  1. Выполнить запросы SELECT :

    <mcp:execute_query database="YourDatabaseName"> SELECT TOP 10 * FROM YourTable </mcp:execute_query>

    (Атрибут database является необязательным, если используется SQL_DATABASE по умолчанию или если SQL_ALLOWED_DATABASES подразумевает единственный выбор.)

  2. Выполнение хранимых процедур:

    <mcp:execute_StoredProcedure database="YourDatabaseName"> { "procedure": "YourSchema.YourProcedureName", "parameters": [ {"name": "Param1", "type": "NVarChar", "value": "SomeValue"}, {"name": "Param2", "type": "Int", "value": 123} ] } </mcp:execute_StoredProcedure>
  3. Изучите схему базы данных:

    <mcp:schema> YourDatabaseName </mcp:schema>

    (Если YourDatabaseName не указано, по умолчанию используется SQL_DATABASE , указанная в переменных среды.)

Обработка соединения

Этот сервер MCP использует глобальный, надежный пул соединений (встроенный пул библиотеки mssql ), управляемый DatabaseService .

  • Эффективность : соединения используются повторно, что снижает накладные расходы на установление нового соединения для каждого запроса.

  • Устойчивость : реализует логику повторных попыток с экспоненциальной задержкой для первоначального установления соединения.

  • Нет состояния сеанса между вызовами : в отличие от модели сеанса на пользователя, этот сервер не гарантирует, что последующие вызовы MCP (например, два отдельных вызова execute_query ) из LLM будут использовать то же самое базовое соединение с базой данных. Поэтому специфичное для сеанса состояние, такое как временные таблицы или переменные сеанса, созданные в одном вызове, могут быть недоступны в другом. Каждый вызов следует считать атомарным с точки зрения состояния сеанса. Команда USE [database] выдается в каждой операции, если целевая база данных отличается от базы данных по умолчанию пула, обеспечивая контекст для этой конкретной операции.

Разработка

Настройка локального развития

# Install dependencies npm install # Create and configure your .env file cp .env.example .env nano .env # Run the server directly (requires environment variables to be set) npm start # Run with TypeScript compiler watching for changes npm run dev

Заметки о безопасности

  • Только : сервер строго следит за тем, чтобы через инструмент 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-инъекций.

Поиск неисправностей

Если у вас возникли проблемы:

  1. Проверьте логи контейнера: docker logs mssql-mcp (если используется Docker).

  2. Проверьте вывод консоли сервера на наличие журналов pino, если он запущен локально.

  3. Проверьте, что все необходимые переменные среды в файле .env установлены правильно, особенно SQL_PASSWORD , SQL_SERVER , SQL_USER и SQL_DATABASE .

  4. Если вы установили эту переменную, убедитесь, что базы данных, к которым вы пытаетесь получить доступ, указаны в SQL_ALLOWED_DATABASES .

  5. Подтвердите сетевое подключение к экземпляру SQL Server, на котором запущен сервер MCP.

  6. Тестовые скрипты ( test-mcp.sh , test-session-persistence.sh ) могут нуждаться в проверке/обновлении.

Подробную информацию об устранении неполадок Docker см. в файле README Docker .

-
security - not tested
F
license - not found
-
quality - not tested

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/JubinSaniei/mcp-mssql'

If you have feedback or need assistance with the MCP directory API, please join our Discord server