MCP SQL Server

by JubinSaniei

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-инъекций для переключения контекста базы данных.
    • Блокирует выполнение потенциально вредоносных системных процедур или команд в прямых запросах.
  • Настраиваемое кэширование : информация о схеме базы данных кэшируется с настраиваемым временем жизни (TTL).
  • Структурированное ведение журнала : интегрированный регистратор pino для подробных и структурированных журналов приложений.
  • Готовность к Docker : простое развертывание с помощью Docker.

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

Использование 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Версия сервера MCP1.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

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

  • Только 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-инъекций.

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

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

  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

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.

  1. Функции
    1. Быстрый старт
      1. Использование Docker (рекомендуется)
    2. Конфигурация
      1. Использование с Клодом
        1. Обработка соединения
          1. Разработка
            1. Настройка локального развития
          2. Заметки о безопасности
            1. Поиск неисправностей

              Related MCP Servers

              • -
                security
                A
                license
                -
                quality
                A 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 -
                1
                Python
                MIT License
                • Linux
                • Apple
              • A
                security
                A
                license
                A
                quality
                A 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 -
                10
                115
                12
                TypeScript
                Apache 2.0
                • Apple
              • -
                security
                -
                license
                -
                quality
                A 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
              • -
                security
                F
                license
                -
                quality
                A 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 -
                • Apple

              View all related MCP servers

              ID: 6rj1s2u5o5